您的位置:首页 > 移动开发 > Android开发

Android 之 声音捕捉

2014-04-01 09:24 381 查看
声音捕捉、就是当外界声音达到一定的峰值以后,触发调用这个函数。

代码如下:

需要注意的是cachePath值,因为android的系统文件的目录是不允许乱写的,所以你要指定你自己程序的存储目录。

cachePath的设置可以参考:乘坐太空船~

try {
File soundFile = new File(cachePath+"audio.3gp");

if(mRecorder == null){
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecorder.setOutputFile(soundFile.getAbsolutePath());
}
mRecorder.prepare();
mRecorder.start();
} catch (IOException e) {
e.printStackTrace();
}
CheckMicophoneVolume thread = new CheckMicophoneVolume();
thread.start();


需要一个不停检测外部声音的线程,当声音达到峰值,停止线程,通知相关事件处理。

private static class CheckMicophoneVolume extends Thread {
private volatile boolean running = true;

public void exit() {
running = false;
}

@Override
public void run() {
while (running) {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}

if (mRecorder == null || !running) {
break;
}

int x = mRecorder.getMaxAmplitude();
Log.v("X_value", ""+x);
if (x != 0) {
int f = (int) (10 * Math.log(x) / Math.log(10));
Log.v("value", ""+f);
if (f > 40) {
catchVoiceSuccess();
exit();
}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: