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

参考文章Android中实时获取音量分贝值详解:http://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; 

  /**
   * 开始录音 使用amr格式
   *
   *      录音文件
   * @return
   */
  public void startRecord() {
    // 开始录音
    /* ①Initial:实例化MediaRecorder对象 */
    if (mMediaRecorder == null)
      mMediaRecorder = new MediaRecorder();
    try {
      /* ②setAudioSource/setVedioSource */
      mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);// 设置麦克风
      /* ②设置音频文件的编码:AAC/AMR_NB/AMR_MB/Default 声音的(波形)的采样 */
      mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
            /*
       * ②设置输出文件的格式:THREE_GPP/MPEG-4/RAW_AMR/Default THREE_GPP(3gp格式
       * ,H263视频/ARM音频编码)、MPEG-4、RAW_AMR(只支持音频且音频编码要求为AMR_NB)
       */
      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
, 录音
, 获取
分贝值
android 录音 分贝、android 录音分贝曲线、android 获取分贝、android 获取录音时长、android 获取录音权限,以便于您获取更多的相关知识。

时间: 2024-08-29 10:51:44

Android录音时获取分贝值的方法代码实例_Android的相关文章

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

参考文章Android中实时获取音量分贝值详解:http://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*1

android闪关灯的开启和关闭方法代码实例_Android

1.activity_main.xml 两个按钮,一个open一个close 复制代码 代码如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     an

android闪关灯的开启和关闭方法代码实例

1.activity_main.xml 两个按钮,一个open一个close 复制代码 代码如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     an

android WakeLock使用方法代码实例_Android

Android中提供了一个名为WakeLock的类在android.os.PowerManager.WakeLock中,从名字来看WakeLock是唤醒锁的意思,它可以控制屏幕的背光开关,所以在电源管理类. WakeLock实例化方法比较简单,因为是系统的远程服务,通过下面的代码来构造 复制代码 代码如下: PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); PowerManager.WakeLock

Android开发之获取LayoutInflater对象的方法总结_Android

本文实例讲述了Android开发之获取LayoutInflater对象的方法.分享给大家供大家参考,具体如下: 在写Android程序时,有时候会编写自定义的View,使用Inflater对象来将布局文件解析成一个View.本文主要目的是总结获取LayoutInflater对象的方法. 1.若能获取context对象,可以有以下几种方法: LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYO

Android开发之获取LayoutInflater对象的方法总结

本文实例讲述了Android开发之获取LayoutInflater对象的方法.分享给大家供大家参考,具体如下: 在写Android程序时,有时候会编写自定义的View,使用Inflater对象来将布局文件解析成一个View.本文主要目的是总结获取LayoutInflater对象的方法. 1.若能获取context对象,可以有以下几种方法: LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYO

javascript-JS的combobox加载清单时获取文本值并作为参数执行查询

问题描述 JS的combobox加载清单时获取文本值并作为参数执行查询 //注册的ComboBox //想在此处取出界面上文本框的值,作为action中方法的参数,如何处理 var StrNUMPSColumn = new Ext.form.ComboBox({ id : 'combo_num_ps', name:'strsqlhead.strWo', fieldLabel: lbl_num_ps, triggerAction: 'all', editable: true, width: 180

详解Android 视频播放时停止后台运行的方法

详解Android 视频播放时停止后台运行的方法 在项目中,遇到了视频播放,可是后台播放的音乐也同时播放,我们要的效果肯定是视频播放的时候,音乐暂停,视频播放完了我们就继续播放音乐,于是就找到了这个方法. /**@param bMute 值为true时为关闭背景音乐.*/ @TargetApi(Build.VERSION_CODES.FROYO) public static boolean muteAudioFocus(Context context, boolean bMute) { if(c

javascript获取select值的方法分析

  本文实例讲述了javascript获取select值的方法.分享给大家供大家参考.具体分析如下: 1. 获取显示的汉字 代码如下: document.getElementById("bigclass").options[window.document.getElementById("bigclass").selectedIndex].text 2. 获取数据库中的id 代码如下: window.document.getElementById("bigc