Android 之 声音捕捉
2014-04-01 09:24
381 查看
声音捕捉、就是当外界声音达到一定的峰值以后,触发调用这个函数。
代码如下:
需要注意的是cachePath值,因为android的系统文件的目录是不允许乱写的,所以你要指定你自己程序的存储目录。
cachePath的设置可以参考:乘坐太空船~
需要一个不停检测外部声音的线程,当声音达到峰值,停止线程,通知相关事件处理。
代码如下:
需要注意的是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(); } } } } }
相关文章推荐
- android声音检测仪---分贝仪 (附源码)
- android4.0.3 修改启动动画和开机声音
- 简单的Android音乐播放,解决incall类型不能通过音量按键控制声音大小的问题
- Android内存泄漏的检测流程、捕捉以及分析
- android声音播放
- android listview长按,单击各种事件捕捉
- android中的声音冲突处理机制
- 实现android按键震动按键声音的机制
- android TextView中超链接的事件捕捉(textview上LINK的点击事件)
- android 终端播放声音
- Android 获取手机系统的声音设置管理通知提醒的声音
- Android ContentObserver监听 系统声音变化- -
- android 通过数组,流播放声音的方法,音频实时传输(转)
- Android 对程序异常崩溃的捕捉
- Android默认系统声音/大小修改及配置【转】
- HTC Desire A8181 的Android系统闹铃声音的修改
- Android中Notification捕捉点击事件的替代方式
- 一看就会Android之使用SoundPool播放多个短小的音频,如按键提示音,消息提示音,游戏声音等
- Android中播放声音的两种方法
- 微信6.0android客户端用到的资源文件 包括声音 图片