android录音波形
⑴ 使用录音软件录音声音波形过小如何解决
右键点击屏幕右下角的喇叭图标(调声音大小的哪个)选打开音量控制,线路输入那一项静音前打钩,麦克风一项调到最高。
开始--设置--控制面板--声音和音频--语声标签--录音一项的音量--麦克风一项选择前打钩并调到最高---其他均不打钩---
如果还不行,在声卡设置里把麦咖啡加强打钩
⑵ android 如何做到播放音乐时动态波形
packagecom.AudioFx;
importandroid.app.Activity;
importandroid.content.Context;
importandroid.graphics.Canvas;
importandroid.graphics.Color;
importandroid.graphics.Paint;
importandroid.graphics.Rect;
importandroid.media.AudioManager;
importandroid.media.MediaPlayer;
importandroid.media.audiofx.Equalizer;
importandroid.media.audiofx.Visualizer;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.view.Gravity;
importandroid.view.View;
importandroid.view.ViewGroup;
importandroid.view.WindowManager;
importandroid.widget.LinearLayout;
importandroid.widget.SeekBar;
importandroid.widget.TextView;
{
privatestaticfinalStringTAG="AudioFxActivity";
_HEIGHT_DIP=160f;
;
privateVisualizermVisualizer;
privateEqualizermEqualizer;
;
;
;
privateTextViewmInfoView;
@Override
publicvoidonCreate(Bundleicicle)
{
super.onCreate(icicle);
mStatusTextView=newTextView(this);
mLinearLayout=newLinearLayout(this);
mLinearLayout.setOrientation(LinearLayout.VERTICAL);
mLinearLayout.addView(mStatusTextView);
setContentView(mLinearLayout);
//CreatetheMediaPlayer
mMediaPlayer=MediaPlayer.create(this,R.raw.my_life);
Log.d(TAG,
"MediaPlayeraudiosessionID:"
+mMediaPlayer.getAudioSessionId());
setupVisualizerFxAndUI();
setupEqualizerFxAndUI();
//
//receivedata,and
//whenitmakessensetoreceivedata.
mVisualizer.setEnabled(true);
//Whenthestreamends,wedon'tneedtocollectanymoredata.We
//don'tdothisin
//,
//non-Visualizerrelatedcode
//inthiscallback.
mMediaPlayer.setOnCompletionListener(newMediaPlayer.OnCompletionListener()
{
publicvoidonCompletion(MediaPlayermediaPlayer)
{
mVisualizer.setEnabled(false);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setVolumeControlStream(AudioManager.STREAM_SYSTEM);
mStatusTextView.setText("音乐播放完毕");
}
});
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
mMediaPlayer.start();
mStatusTextView.setText("播放音乐中....");
}
()
{
//CreatetheEqualizerobject(anAudioEffectsubclass)andattachit
//toourmediaplayer,
//withadefaultpriority(0).
mEqualizer=newEqualizer(0,mMediaPlayer.getAudioSessionId());
mEqualizer.setEnabled(true);
TextVieweqTextView=newTextView(this);
eqTextView.setText("均衡器:");
mLinearLayout.addView(eqTextView);
shortbands=mEqualizer.getNumberOfBands();
finalshortminEQLevel=mEqualizer.getBandLevelRange()[0];
finalshortmaxEQLevel=mEqualizer.getBandLevelRange()[1];
for(shorti=0;i<bands;i++)
{
finalshortband=i;
TextViewfreqTextView=newTextView(this);
freqTextView.setLayoutParams(newViewGroup.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
freqTextView.setGravity(Gravity.CENTER_HORIZONTAL);
freqTextView.setText((mEqualizer.getCenterFreq(band)/1000)
+"Hz");
mLinearLayout.addView(freqTextView);
LinearLayoutrow=newLinearLayout(this);
row.setOrientation(LinearLayout.HORIZONTAL);
TextViewminDbTextView=newTextView(this);
minDbTextView.setLayoutParams(newViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
minDbTextView.setText((minEQLevel/100)+"dB");
TextViewmaxDbTextView=newTextView(this);
maxDbTextView.setLayoutParams(newViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
maxDbTextView.setText((maxEQLevel/100)+"dB");
LinearLayout.LayoutParamslayoutParams=newLinearLayout.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParams.weight=1;
SeekBarbar=newSeekBar(this);
bar.setLayoutParams(layoutParams);
bar.setMax(maxEQLevel-minEQLevel);
bar.setProgress(mEqualizer.getBandLevel(band));
bar.setOnSeekBarChangeListener(newSeekBar.OnSeekBarChangeListener()
{
publicvoidonProgressChanged(SeekBarseekBar,intprogress,
booleanfromUser)
{
mEqualizer.setBandLevel(band,(short)(progress+minEQLevel));
}
(SeekBarseekBar)
{
}
publicvoidonStopTrackingTouch(SeekBarseekBar)
{
}
});
row.addView(minDbTextView);
row.addView(bar);
row.addView(maxDbTextView);
mLinearLayout.addView(row);
}
}
()
{
mVisualizerView=newVisualizerView(this);
mVisualizerView.setLayoutParams(newViewGroup.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
(int)(VISUALIZER_HEIGHT_DIP*getResources()
.getDisplayMetrics().density)));
mLinearLayout.addView(mVisualizerView);
mInfoView=newTextView(this);
StringinfoStr="";
int[]csr=Visualizer.getCaptureSizeRange();
if(csr!=null)
{
StringcsrStr="CaptureSizeRange:";
for(inti=0;i<csr.length;i++)
{
csrStr+=csr[i];
csrStr+="";
}
infoStr+=csrStr;
}
finalintmaxCR=Visualizer.getMaxCaptureRate();
infoStr=infoStr+" MaxCaptureRate:"+maxCR;
mInfoView.setText(infoStr);
mLinearLayout.addView(mInfoView);
mVisualizer=newVisualizer(mMediaPlayer.getAudioSessionId());
mVisualizer.setCaptureSize(256);
mVisualizer.setDataCaptureListener(
newVisualizer.OnDataCaptureListener()
{
(Visualizervisualizer,
byte[]bytes,intsamplingRate)
{
mVisualizerView.updateVisualizer(bytes);
}
publicvoidonFftDataCapture(Visualizervisualizer,
byte[]fft,intsamplingRate)
{
mVisualizerView.updateVisualizer(fft);
}
},maxCR/2,false,true);
}
@Override
protectedvoidonPause()
{
super.onPause();
if(isFinishing()&&mMediaPlayer!=null)
{
mVisualizer.release();
mEqualizer.release();
mMediaPlayer.release();
mMediaPlayer=null;
}
}
/**
*
*{@linkVisualizer.OnDataCaptureListener#onWaveFormDataCapture}
*/
{
privatebyte[]mBytes;
privatefloat[]mPoints;
privateRectmRect=newRect();
privatePaintmForePaint=newPaint();
privateintmSpectrumNum=48;
privatebooleanmFirst=true;
publicVisualizerView(Contextcontext)
{
super(context);
init();
}
privatevoidinit()
{
mBytes=null;
mForePaint.setStrokeWidth(8f);
mForePaint.setAntiAlias(true);
mForePaint.setColor(Color.rgb(0,128,255));
}
publicvoipdateVisualizer(byte[]fft)
{
if(mFirst)
{
mInfoView.setText(mInfoView.getText().toString()+" CaptureSize:"+fft.length);
mFirst=false;
}
byte[]model=newbyte[fft.length/2+1];
model[0]=(byte)Math.abs(fft[0]);
for(inti=2,j=1;j<mSpectrumNum;)
{
model[j]=(byte)Math.hypot(fft[i],fft[i+1]);
i+=2;
j++;
}
mBytes=model;
invalidate();
}
@Override
protectedvoidonDraw(Canvascanvas)
{
super.onDraw(canvas);
if(mBytes==null)
{
return;
}
if(mPoints==null||mPoints.length<mBytes.length*4)
{
mPoints=newfloat[mBytes.length*4];
}
mRect.set(0,0,getWidth(),getHeight());
//绘制波形
//for(inti=0;i<mBytes.length-1;i++){
//mPoints[i*4]=mRect.width()*i/(mBytes.length-1);
//mPoints[i*4+1]=mRect.height()/2
//+((byte)(mBytes[i]+128))*(mRect.height()/2)/128;
//mPoints[i*4+2]=mRect.width()*(i+1)/(mBytes.length-1);
//mPoints[i*4+3]=mRect.height()/2
//+((byte)(mBytes[i+1]+128))*(mRect.height()/2)/128;
//}
//绘制频谱
finalintbaseX=mRect.width()/mSpectrumNum;
finalintheight=mRect.height();
for(inti=0;i<mSpectrumNum;i++)
{
if(mBytes[i]<0)
{
mBytes[i]=127;
}
finalintxi=baseX*i+baseX/2;
mPoints[i*4]=xi;
mPoints[i*4+1]=height;
mPoints[i*4+2]=xi;
mPoints[i*4+3]=height-mBytes[i];
}
canvas.drawLines(mPoints,mForePaint);
}
}
}
⑶ android 怎么绘制时时音频波形图
安卓开发音频mic口接收20khz的波形的方法? 一、手机音频通信的特点 1、 通用性强:在智能手机普及的今天,手机的对外通信接口多种多样,而其中以3.5mm的音频接口通用新最强,基本所有的手机、平板电脑都会有这个接口,所以在一些要求通用性的设...
⑷ android铃声剪辑软件的波形图怎么实现的
首先我先从手机录制声音的原理来给你说吧。
我们的话筒并不能直接录制我们的声音。而是通过我们的声音发出的声波改变了电流量还是电阻忘了的大小,然后我们的手机CPU也就是我们手机的大脑,记录这个变化的过程,当我们要播放我们的录音的时候。手机,再把记录的变化过程还原R铃声剪辑中的波形图,也就是我们的声波形状。有些时候我们会看见波形图,有些时候会高,有些时候会低。
⑸ 录音时候没有出现波形,怎么办
可以尝试以下3种方法进行设置:
1、建立一个音频轨,不要MIDI轨,然后选择一下录音范围,再然后点一下小键盘上的*型按钮,就OK了;
2、去下个ASIO4ALL的虚拟声卡驱动,ASIO是专业声卡驱动,提供很低延迟,这样可以完成设置;
3、或者,是用CE或AA这类不需要ASIO支持的录音也可以。
⑹ 如何通过android对MP3解码,从而得到MP3的波形拜托了各位 谢谢
MP3系统播放器是能直接播放的。去看看系统播放器的源码应该就可以找到。 查看原帖>>
希望采纳
⑺ 如何绘制Android的音乐播放器的波形
首先你的歌曲是要存在数据库里的吧 第一种方法 新建一个我的最爱歌曲的表 然后表里存歌名,歌曲地址,还有各种其他歌曲的参数,看你的歌都有那些参数了 然后在播放列表中实现一个长点击事件,弹出一个菜单或者直接操作都行 然后把歌曲的各种信息存到表里就行了 我的最爱就直接是这张表就行了 第二种方法 在你的歌曲表中新加一个bool列 然后通过这个列来表示你的歌曲是否在我的最爱中 当你想要打开我的最爱时就检测这个属性就行了 是就在 不是就不再
⑻ android录音 振幅是多少
有这样的一个例子,测试测试看?希望可以帮到你。 import android.media.AudioFormat; import android.media.AudioRecord; import android.media.MediaRecorder; import android.util.Log; public class RecordThread extends Thread { private AudioRecord ar; private int bs; private static int SAMPLE_RATE_IN_HZ = 8000; private boolean isRun = false; public RecordThread() { super(); bs = AudioRecord.getMinBufferSize(SAMPLE_RATE_IN_HZ, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT); ar = new AudioRecord(MediaRecorder.AudioSource.MIC, SAMPLE_RATE_IN_HZ, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, bs); } public void run() { super.run(); ar.startRecording(); // 用于读取的 buffer byte[] buffer = new byte[bs]; isRun = true; while (isRun) { int r = ar.read(buffer, 0, bs); int v = 0; // 将 buffer 内容取出,进行平方和运算 for (int i = 0; i < buffer.length; i++) { // 这里没有做运算的优化,为了更加清晰的展示代码 v += buffer[i] * buffer[i]; } // 平方和除以数据总长度,得到音量大小。可以获取白噪声值,然后对实际采样进行标准化。 // 如果想利用这个数值进行操作,建议用 sendMessage 将其抛出,在 Handler 里进行处理。 Log.d("spl", String.valueOf(v / (float) r)); } ar.stop(); } public void pause() { // 在调用本线程的 Activity 的 onPause 里调用,以便 Activity 暂停时释放麦克风 isRun = false; } public void start() { // 在调用本线程的 Activity 的 onResume 里调用,以便 Activity 恢复后继续获取麦克风输入音量 if (!isRun) { super.start(); } } }