随笔 - 91,  文章 - 0,  评论 - 1,  阅读 - 87621

 

需要的权限

<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

 

复制代码
    MediaRecorder media = new MediaRecorder();
    // 设定录音来源为麦克风  MIC|DEFAULT
    media.setAudioSource(MediaRecorder.AudioSource.MIC);
    // DEFAULT|MPEG_4|THREE_GPP
    media.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
    // DEFAULT|AMR_NB
    media.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);

    // 输出文件
    File audioFile = File.createTempFile("temp3", ".amr",
    Environment.getExternalStorageDirectory());
    media.setOutputFile(audioFile.getAbsolutePath());

    media.prepare();
    media.start();
复制代码

 

停止录音

    // 停止录音
    media.stop();
    media.release();
    media = null;

 

开启播放录音的程序

复制代码
  private void openFile(File f){
    Intent intent = new Intent();
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.setAction(android.content.Intent.ACTION_VIEW);

    String type = getMIMEType(f);
    intent.setDataAndType(Uri.fromFile(f), type);
    startActivity(intent);
  }

  private String getMIMEType(File f){
    String end = f.getName().substring(
        f.getName().lastIndexOf(".") + 1, f.getName().length())
        .toLowerCase();
    String type = "";
    if (end.equals("mp3") || end.equals("aac") || end.equals("aac")
        || end.equals("amr") || end.equals("mpeg")
        || end.equals("mp4")){
      type = "audio";
    } else if (end.equals("jpg") || end.equals("gif")
        || end.equals("png") || end.equals("jpeg")){
      type = "image";
    } else {
      type = "*";
    }
    type += "/*";
    return type;
  }
复制代码

 

取得所有amr文件

复制代码
  // 第一个参数目录,第二个参数,后缀名
  private ArrayList<String> getRecordFiles(File dir,String suffix){
    ArrayList<String> recordFiles = new ArrayList<String>();
    if (dir.exists()){
      File files[] = dir.listFiles();
      if (files == null)
        return recordFiles;
        
      for (int i = 0; i < files.length; i++){
          
         if (files[i].getName().indexOf(".") >= 0){
            /* 读取.amr文件 */
            String fileS = files[i].getName().substring(
                files[i].getName().indexOf("."));
            if (fileS.toLowerCase().equals(suffix))
              recordFiles.add(files[i].getName());

         }
      }
    }
    return recordFiles;
  }
复制代码

 

posted on   道无涯  阅读(550)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示