博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅入浅出Android(008):使用MediaRecorder录音
阅读量:6504 次
发布时间:2019-06-24

本文共 3211 字,大约阅读时间需要 10 分钟。

hot3.png

使用MediaRecorder既可以录音也可以录像。本文先只讲如何录音。测试的系统是android4。

1、增加录音和读写外部存储的权限

修改AndroidManifest.xml:

2、设计界面,修改layout/main.xml

效果如下:

3、修改java代码

package com.example.HelloWorld;import android.app.Activity;import android.media.MediaRecorder;import android.os.Bundle;import android.os.Environment;import android.view.View;import android.widget.TextView;import android.widget.Button;import android.widget.Toast;import android.util.Log;import java.io.File;import java.io.IOException;public class MyActivity extends Activity{    Button startRecordButton;    Button stopRecordButton;    TextView infoText;    MediaRecorder recorder = new MediaRecorder();    boolean isRecording = false;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        startRecordButton = (Button) findViewById(R.id.start_record);        stopRecordButton = (Button) findViewById(R.id.stop_record);        stopRecordButton.setEnabled(false);        infoText = (TextView)findViewById(R.id.info);        final String filePath = Environment.getExternalStorageDirectory() + "/aaaaa.amr";        infoText.setText("保存到"+filePath);        startRecordButton.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View v) {                 isRecording = true;                 try {                     recorder.setAudioSource(MediaRecorder.AudioSource.MIC); // 输入源                     recorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); //设置输出格式                     recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); //设置编码                     recorder.setOutputFile(filePath); //输出文件                     recorder.prepare();  //预备!                     recorder.start();    //开始!                     startRecordButton.setEnabled(false);                     stopRecordButton.setEnabled(true);                 } catch (Exception e) {                     e.printStackTrace();                     infoText.setText(e.getMessage());                 }             }         });        stopRecordButton.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                recorder.stop();                isRecording = false;                startRecordButton.setEnabled(true);                stopRecordButton.setEnabled(false);            }        });    }    @Override    protected void onDestroy() {        if (isRecording) {            recorder.stop();        }        recorder.release();        super.onDestroy();    }}

录音文件保存到变量filePath对应的路径中。
在startRecordButton被点击后,开始录音。recorder是实例化的MediaRecorder,先依次设置其输入源、输出格式、编码、输出文件,然后prepare()和start()录音就开始了。这时候禁用了startRecordButton以防用户误点。与此同时,默认被禁用的stopRecordButton被启用。
在stopRecordButton被点击后,停止录音,调用stop()函数即可。同时禁用stopRecordButton,激活startRecordButton。
在重写的onDestroy()方法中,会根据布尔变量isRecording判断是否正在录音,若在录音在stop it,然后释放。
初始界面:
开始录音:
生成的音频文件:

转载于:https://my.oschina.net/letiantian/blog/263507

你可能感兴趣的文章
Spring Boot 使用parent方式引用时 获取值属性方式默认@
查看>>
解决maven下载jar慢的问题(如何更换Maven下载源)
查看>>
linux安装gitLab
查看>>
concurrent包的实现示意图
查看>>
golang os.Args
查看>>
Linux常用命令
查看>>
spring-data-elasticsearch 概述及入门(二)
查看>>
1.12 xshell密钥认证
查看>>
3.2 用户组管理
查看>>
ibatis 动态查询
查看>>
汇编语言之实验一
查看>>
git 调用 Beyond Compare
查看>>
SQL基础-->层次化查询(START BY ... CONNECT BY PRIOR)[转]
查看>>
android实现图片识别的几种方法
查看>>
mvc学习地址
查看>>
masonry 基本用法
查看>>
Word产品需求文档,已经过时了【转】
查看>>
dtoj#4299. 图(graph)
查看>>
关于网站的一些js和css常见问题的记录
查看>>
zabbix-3.4 触发器
查看>>