iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android录音时获取分贝值的方法代码实例
  • 395
分享到

Android录音时获取分贝值的方法代码实例

方法android录音Android 2022-06-06 10:06:00 395人浏览 独家记忆
摘要

参考文章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文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作