经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » Android » 查看文章
Android利用MediaRecorder实现录音功能
来源:jb51  时间:2022/3/29 11:46:46  对本文有异议

本文实例为大家分享了Android利用MediaRecorder实现录音功能 的具体代码,供大家参考,具体内容如下

android用手机录音保存到sd卡中;

布局文件:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. ? ? xmlns:app="http://schemas.android.com/apk/res-auto"
  4. ? ? xmlns:tools="http://schemas.android.com/tools"
  5. ? ? android:layout_width="match_parent"
  6. ? ? android:layout_height="match_parent"
  7. ? ? android:orientation="vertical"
  8. ? ? tools:context=".MainActivity">
  9.  
  10. ? ?<Button
  11. ? ? ? ?android:id="@+id/bt_start"
  12. ? ? ? ?android:layout_width="match_parent"
  13. ? ? ? ?android:text="start"
  14. ? ? ? ?android:layout_height="wrap_content"></Button>
  15. ? ? <Button
  16. ? ? ? ? android:id="@+id/bt_end"
  17. ? ? ? ? android:layout_width="match_parent"
  18. ? ? ? ? android:layout_height="wrap_content"
  19. ? ? ? ? android:text="stop"></Button>
  20.  
  21. </LinearLayout>

1.准备保存文件的路径及文件;
2.创建MediaRecorder对象,
3.调用MediaRecorder的start方法;
4.结束录音
5.调用MediaRecorder的stop方法;
6.释放资源;

开始录音:

  1. private void startRecord(){
  2.  
  3. ? ? ? ? if (recorder==null){
  4. ? ? ? ? ? ? File dir = new File(Environment.getExternalStorageDirectory(),"sound");
  5. ? ? ? ? ? ? if (!dir.exists()){
  6. ? ? ? ? ? ? ? ? dir.mkdir();
  7.  
  8. ? ? ? ? ? ? }
  9. ? ? ? ? ? ? File file=new File(dir,System.currentTimeMillis()+".amr");
  10. ? ? ? ? ? ? if (!file.exists()){
  11. ? ? ? ? ? ? ? ? try {
  12. ? ? ? ? ? ? ? ? ? ? file.createNewFile();
  13. ? ? ? ? ? ? ? ? } catch (IOException e) {
  14. ? ? ? ? ? ? ? ? ? ? e.printStackTrace();
  15. ? ? ? ? ? ? ? ? }
  16.  
  17. ? ? ? ? ? ? }
  18. ? ? ? ? ? ? recorder =new MediaRecorder();
  19. ? ? ? ? ? ? recorder.setAudioSource(MediaRecorder.AudioSource.MIC);//输入源通过话筒录音;
  20. ? ? ? ? ? ? recorder.setOutputFormat(MediaRecorder.AudioEncoder.AMR_WB);//输出格式
  21. ? ? ? ? ? ? recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);//音频编码
  22. ? ? ? ? ? ? recorder.setOutputFile(file.getAbsolutePath());//设置写出文件;
  23. ? ? ? ? ? ? try {
  24. ? ? ? ? ? ? ? ? recorder.prepare();
  25. ? ? ? ? ? ? ? ? recorder.start();
  26. ? ? ? ? ? ? } catch (IOException e) {
  27. ? ? ? ? ? ? ? ? e.printStackTrace();
  28. ? ? ? ? ? ? }
  29.  
  30.  
  31. ? ? ? ? }
  32.  
  33. ? ? }

结束录音:

  1. private void endRecord(){
  2. ? ? ? ? if (recorder!=null){
  3. ? ? ? ? ? ? recorder.stop();
  4. ? ? ? ? ? ? recorder.release();
  5. ? ? ? ? ? ? recorder=null;
  6. ? ? ? ? }
  7.  
  8. ? ? }

具体代码实现:

  1. package com.example.record;
  2.  
  3. import android.media.MediaRecorder;
  4. import android.os.Bundle;
  5. import android.os.Environment;
  6. import android.view.View;
  7. import android.widget.Button;
  8.  
  9. import androidx.appcompat.app.AppCompatActivity;
  10.  
  11. import java.io.File;
  12. import java.io.IOException;
  13.  
  14. public class MainActivity extends AppCompatActivity {
  15. ? ? private Button bt_1,bt2;
  16. ? ? private MediaRecorder recorder ;
  17.  
  18.  
  19. ? ? @Override
  20. ? ? protected void onCreate(Bundle savedInstanceState) {
  21. ? ? ? ? super.onCreate(savedInstanceState);
  22. ? ? ? ? setContentView(R.layout.activity_main);
  23. ? ? ? ? findViewById(R.id.bt_start).setOnClickListener(new View.OnClickListener() {
  24. ? ? ? ? ? ? @Override
  25. ? ? ? ? ? ? public void onClick(View v) {
  26. ? ? ? ? ? ? ? ? startRecord();
  27.  
  28. ? ? ? ? ? ? }
  29. ? ? ? ? });
  30.  
  31. ? ? ? ? findViewById(R.id.bt_end).setOnClickListener(new View.OnClickListener() {
  32. ? ? ? ? ? ? @Override
  33. ? ? ? ? ? ? public void onClick(View v) {
  34. ? ? ? ? ? ? ? ? endRecord();
  35. ? ? ? ? ? ? }
  36. ? ? ? ? });
  37. ? ? }
  38. ? ? private void startRecord(){
  39.  
  40. ? ? ? ? if (recorder==null){
  41. ? ? ? ? ? ? File dir = new File(Environment.getExternalStorageDirectory(),"sound");
  42. ? ? ? ? ? ? if (!dir.exists()){
  43. ? ? ? ? ? ? ? ? dir.mkdir();
  44.  
  45. ? ? ? ? ? ? }
  46. ? ? ? ? ? ? File file=new File(dir,System.currentTimeMillis()+".amr");
  47. ? ? ? ? ? ? if (!file.exists()){
  48. ? ? ? ? ? ? ? ? try {
  49. ? ? ? ? ? ? ? ? ? ? file.createNewFile();
  50. ? ? ? ? ? ? ? ? } catch (IOException e) {
  51. ? ? ? ? ? ? ? ? ? ? e.printStackTrace();
  52. ? ? ? ? ? ? ? ? }
  53.  
  54. ? ? ? ? ? ? }
  55. ? ? ? ? ? ? recorder =new MediaRecorder();
  56. ? ? ? ? ? ? recorder.setAudioSource(MediaRecorder.AudioSource.MIC);//输入源通过话筒录音;
  57. ? ? ? ? ? ? recorder.setOutputFormat(MediaRecorder.AudioEncoder.AMR_WB);//输出格式
  58. ? ? ? ? ? ? recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);//音频编码
  59. ? ? ? ? ? ? recorder.setOutputFile(file.getAbsolutePath());//设置写出文件;
  60. ? ? ? ? ? ? try {
  61. ? ? ? ? ? ? ? ? recorder.prepare();
  62. ? ? ? ? ? ? ? ? recorder.start();
  63. ? ? ? ? ? ? } catch (IOException e) {
  64. ? ? ? ? ? ? ? ? e.printStackTrace();
  65. ? ? ? ? ? ? }
  66.  
  67.  
  68. ? ? ? ? }
  69.  
  70. ? ? }
  71. ? ? private void endRecord(){
  72. ? ? ? ? if (recorder!=null){
  73. ? ? ? ? ? ? recorder.stop();
  74. ? ? ? ? ? ? recorder.release();
  75. ? ? ? ? ? ? recorder=null;
  76. ? ? ? ? }
  77.  
  78. ? ? }
  79. }

最后记得添加权限:

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

写入文件的权限,调用录音的权限

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号