最近公司有一个业务,就是通过IM发送音频,我用的是环信的第三方,自定义发送音频,写了一个录音的demo,录制完成之后发送。

这个Demo测试之后感觉还不错,分享一下。

一、添加权限:

 


二、XML文件(三个按钮)

 

 

    

三、Java代码

 

 

public class MainActivity extends Activity implements OnClickListener {    private MediaPlayer mediaPlayer;    private MediaRecorder mediaRecorder = new MediaRecorder();    private File audioFile;    private String msg;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Button btnStart = (Button) findViewById(R.id.btnStart);        Button btnStop = (Button) findViewById(R.id.btnStop);        Button btnPlay = (Button) findViewById(R.id.btnPlay);        btnStart.setOnClickListener(this);        btnStop.setOnClickListener(this);        btnPlay.setOnClickListener(this);    }    @Override    public void onClick(View view) {        try {                        switch (view.getId()) {                case R.id.btnStart:                    // 设置音频来源(一般为麦克风)                    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);                    // 设置音频输出格式(默认的输出格式)                    mediaRecorder                            .setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);                    // 设置音频编码方式(默认的编码方式)                    mediaRecorder                            .setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);                    // 创建一个临时的音频输出文件                    audioFile = File.createTempFile("record_", ".amr");                    mediaRecorder.setOutputFile(audioFile.getAbsolutePath());                    mediaRecorder.prepare();                    mediaRecorder.start();                    msg = "正在录音...";                    break;                case R.id.btnStop:                    if (audioFile != null) {                        mediaRecorder.stop();                    }                    msg = "已经停止录音.";                    break;                case R.id.btnPlay:                    if (audioFile != null) {                        mediaPlayer = new MediaPlayer();                        mediaPlayer.setDataSource(audioFile.getAbsolutePath());                        mediaPlayer.prepare();                        mediaPlayer.start();                        mediaPlayer                                .setOnCompletionListener(new OnCompletionListener() {                                    @Override                                    public void onCompletion(MediaPlayer mp) {                                        setTitle("录音播放完毕.");                                    }                                });                        msg = "正在播放录音...";                    }                    break;            }            setTitle(msg);            Toast.makeText(this, msg, Toast.LENGTH_LONG).show();        } catch (Exception e) {            setTitle(e.getMessage());        }    }}

注释写的很清楚,但是还是有几点需要说明,我录音完成之后将文件保存到临时文件中,你在手机中是没办法找到的,你可以将你的手机root之后,用RE文件管理器打开指定的目录查看,或者你也可以改变一下文件的路径。

 

 

更多相关文章

  1. Android(安卓)创建文件路径这件事,你也可能会犯的错误
  2. Android(安卓)中 Socket 基于TCP 传输大文件
  3. Android中使用HTTP服务上传文件
  4. Android从Fragment跳转到其他Activity的简单实例
  5. Android培训班(70)Dex文件里类定义dvmDefineClass
  6. Android多媒体开发高级编程——为智能手机和平板电脑开发图形、
  7. 纯C语言INI文件解析
  8. Android(安卓)Studio如何导入第三方库进行JNI编程
  9. MTK Android(安卓)P 开机无动画,无铃声问题和开机铃声不同步,首次

随机推荐

  1. android 查看系统数据库
  2. Android A/B System OTA分析(三)主系统和bo
  3. [转]android 安全与权限(Security and Pe
  4. 2013.04.08——— android 关于部分文字
  5. android UI 单线程模型
  6. Tablayout属性以及设置行间距和列间距
  7. GAE和android的几个中文问题
  8. android控件的监听绑定方法
  9. Android(安卓)自定义View 标识当前选中的
  10. android 日历开发附源码(附源码)