zoukankan      html  css  js  c++  java
  • RecoderUtils录音工具类

    import android.media.MediaRecorder;
    import android.os.Environment;
    
    import java.io.File;
    import java.io.IOException;
    
    public class RecoderUtils {
    
       private final MediaRecorder recorde = new MediaRecorder();
       private final String path;
       private static int SAMPLE_RATE_IN_HZ = 8000;
    
       public RecoderUtils(String path) {
          this.path = sanitizePath(path);
       }
    
       private String sanitizePath(String path) {
          if (!path.startsWith("/")) {
             path = "/" + path;
          }
          if (!path.contains(".")) {
             path += ".amr";
          }
          return Environment.getExternalStorageDirectory().getAbsolutePath() + "/myvoice" + path;
       }
    
       /** 开始录音 */
       public void start() {
          if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
             return;
          }
          File directory = new File(path).getParentFile();
          if (!directory.exists() && !directory.mkdirs()) {
             return;
          }
    
          try {
             // 设置声音的来源
             recorde.setAudioSource(MediaRecorder.AudioSource.MIC);
             // 设置声音的输出格式
             recorde.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
             // 设置声音的编码格式
             recorde.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
             // 设置音频采样率
             recorde.setAudioSamplingRate(SAMPLE_RATE_IN_HZ);
             // 设置输出文件
             recorde.setOutputFile(path);
             // 准备录音
             recorde.prepare();
             // 开始录音
             recorde.start();
          } catch (IllegalStateException e) {
             e.printStackTrace();
          } catch (IOException e) {
             e.printStackTrace();
          }
       }
    
       /** 停止录音 */
       public void stop() {
          try {
             // 停止录音
             recorde.stop();
             // 释放资源
             recorde.release();
          } catch (Exception e) {
             e.printStackTrace();
          }
       }
    
       public double getAmplitude() {
          if (recorde != null) {
             return (recorde.getMaxAmplitude());
          } else
             return 0;
       }
    
    }
    
  • 相关阅读:
    Linux文件编辑器 vi
    Sudo 和 Root 帐号
    Linux基本命令篇的习题解答
    Linux应用篇
    VMware中虚拟机网卡的四种模式
    Ubuntu游戏集合
    Linux与Window文件共享
    Linux知识点滴II
    [转载][翻译]jQuery Mobile教程创建一个订餐web应用(下)
    在WPF中创建带有刻度线的滑动条
  • 原文地址:https://www.cnblogs.com/loaderman/p/6435152.html
Copyright © 2011-2022 走看看