参考文章Android中实时获取音量分贝值详解://www.jb51.net/article/64806.htm public class MediaRecorderDem
参考文章Android中实时获取音量分贝值详解://www.jb51.net/article/64806.htm
public class MediaRecorderDemo {
private final String TAG = "MediaRecord";
private MediaRecorder mMediaRecorder;
public static final int MAX_LENGTH = 1000 * 60 * 10;// 最大录音时长1000*60*10;
private String filePath;
public MediaRecorderDemo(){
this.filePath = "/dev/null";
}
public MediaRecorderDemo(File file) {
this.filePath = file.getAbsolutePath();
}
private long startTime;
private long endTime;
public void startRecord() {
// 开始录音
if (mMediaRecorder == null)
mMediaRecorder = new MediaRecorder();
try {
mMediaRecorder.setAudiOSource(MediaRecorder.AudioSource.MIC);// 设置麦克风
mMediaRecorder.setOutputFORMat(MediaRecorder.OutputFormat.DEFAULT);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mMediaRecorder.setOutputFile(filePath);
mMediaRecorder.setMaxDuration(MAX_LENGTH);
mMediaRecorder.prepare();
mMediaRecorder.start();
// AudioRecord audioRecord.
startTime = System.currentTimeMillis();
updateMicStatus();
Log.i("ACTION_START", "startTime" + startTime);
} catch (IllegalStateException e) {
Log.i(TAG,
"call startAmr(File mRecAudioFile) failed!"
+ e.getMessage());
} catch (IOException e) {
Log.i(TAG,
"call startAmr(File mRecAudioFile) failed!"
+ e.getMessage());
}
}
public long stopRecord() {
if (mMediaRecorder == null)
return 0L;
endTime = System.currentTimeMillis();
Log.i("ACTION_END", "endTime" + endTime);
mMediaRecorder.stop();
mMediaRecorder.reset();
mMediaRecorder.release();
mMediaRecorder = null;
Log.i("ACTION_LENGTH", "Time" + (endTime - startTime));
return endTime - startTime;
}
private final Handler mHandler = new Handler();
private Runnable mUpdateMicStatusTimer = new Runnable() {
public void run() {
updateMicStatus();
}
};
private int BASE = 1;
private int SPACE = 100;// 间隔取样时间
private void updateMicStatus() {
if (mMediaRecorder != null) {
double ratio = (double)mMediaRecorder.getMaxAmplitude() /BASE;
double db = 0;// 分贝
if (ratio > 1)
db = 20 * Math.log10(ratio);
Log.d(TAG,"分贝值:"+db);
mHandler.postDelayed(mUpdateMicStatusTimer, SPACE);
}
}
}
您可能感兴趣的文章:Android编程实现录音及保存播放功能的方法【附demo源码下载】Android实现录音功能实现实例(MediaRecorder)Android6.0编程实现双向通话自动录音功能的方法详解Android 录音与播放功能的简单实例Android编程实现通话录音功能的方法利用libmp3lame实现在Android上录音MP3文件示例Android开发四大组件之实现电话拦截和电话录音Android开发之MediaPlayer多媒体(音频,视频)播放工具类Android开发之多媒体文件获取工具类实例【音频,视频,图片等】Android开发实现的IntentUtil跳转多功能工具类【包含视频、音频、图片、摄像头等操作功能】Android编程录音工具类RecorderUtil定义与用法示例
--结束END--
本文标题: Android录音时获取分贝值的方法代码实例
本文链接: https://www.lsjlt.com/news/26748.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-01-21
2023-10-28
2023-10-28
2023-10-27
2023-10-27
2023-10-27
2023-10-27
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0