在Android设备中吹入MIC时如何获得振幅.
MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
Timer timer = new Timer();
timer.scheduleAtFixedRate(new RecorderTask(recorder), 0, 1000);
private class RecorderTask extends TimerTask {
private MediaRecorder recorder;
public RecorderTask(MediaRecorder recorder) {
this.recorder = recorder;
}
public void run() {
Log.v("", "amplitude is" + recorder.getMaxAmplitude());
}
}
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
ERROR/AndroidRuntime(20927): Caused by: java.lang.RuntimeException: setAudioSource failed.
ERROR/AndroidRuntime(20927): at android.media.MediaRecorder.setAudioSource(Native Method)
Run Code Online (Sandbox Code Playgroud)
小智 8
public boolean isBlowing()
{
boolean recorder=true;
int minSize = AudioRecord.getMinBufferSize(8000,AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT);
AudioRecord ar = new AudioRecord(MediaRecorder.AudioSource.MIC, 8000,AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT,minSize);
short[] buffer = new short[minSize];
ar.startRecording();
while(recorder)
{
ar.read(buffer, 0, minSize);
for (short s : buffer)
{
if (Math.abs(s) > 27000) //DETECT VOLUME (IF I BLOW IN THE MIC)
{
blow_value=Math.abs(s);
System.out.println("Blow Value="+blow_value);
ar.stop();
recorder=false;
return true;
}
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11822 次 |
| 最近记录: |