Android麦克风录音的实现
16lz
2021-01-26
最近公司有一个业务,就是通过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文件管理器打开指定的目录查看,或者你也可以改变一下文件的路径。
更多相关文章
- Android(安卓)创建文件路径这件事,你也可能会犯的错误
- Android(安卓)中 Socket 基于TCP 传输大文件
- Android中使用HTTP服务上传文件
- Android从Fragment跳转到其他Activity的简单实例
- Android培训班(70)Dex文件里类定义dvmDefineClass
- Android多媒体开发高级编程——为智能手机和平板电脑开发图形、
- 纯C语言INI文件解析
- Android(安卓)Studio如何导入第三方库进行JNI编程
- MTK Android(安卓)P 开机无动画,无铃声问题和开机铃声不同步,首次