Android利用MediaRecorder实现录音功能

 更新时间:2022年03月29日 11:00:28   作者:安了个卓  
这篇文章主要为大家详细介绍了Android利用MediaRecorder实现录音功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

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

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

   <Button
       android:id="@+id/bt_start"
       android:layout_width="match_parent"
       android:text="start"
       android:layout_height="wrap_content"></Button>
    <Button
        android:id="@+id/bt_end"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="stop"></Button>

</LinearLayout>

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

开始录音:

private void startRecord(){

        if (recorder==null){
            File dir = new File(Environment.getExternalStorageDirectory(),"sound");
            if (!dir.exists()){
                dir.mkdir();

            }
            File file=new File(dir,System.currentTimeMillis()+".amr");
            if (!file.exists()){
                try {
                    file.createNewFile();
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
            recorder =new MediaRecorder();
            recorder.setAudioSource(MediaRecorder.AudioSource.MIC);//输入源通过话筒录音;
            recorder.setOutputFormat(MediaRecorder.AudioEncoder.AMR_WB);//输出格式
            recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);//音频编码
            recorder.setOutputFile(file.getAbsolutePath());//设置写出文件;
            try {
                recorder.prepare();
                recorder.start();
            } catch (IOException e) {
                e.printStackTrace();
            }


        }

    }

结束录音:

private void endRecord(){
        if (recorder!=null){
            recorder.stop();
            recorder.release();
            recorder=null;
        }

    }

具体代码实现:

package com.example.record;

import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;

import androidx.appcompat.app.AppCompatActivity;

import java.io.File;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {
    private Button bt_1,bt2;
    private MediaRecorder recorder ;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.bt_start).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startRecord();

            }
        });

        findViewById(R.id.bt_end).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                endRecord();
            }
        });
    }
    private void startRecord(){

        if (recorder==null){
            File dir = new File(Environment.getExternalStorageDirectory(),"sound");
            if (!dir.exists()){
                dir.mkdir();

            }
            File file=new File(dir,System.currentTimeMillis()+".amr");
            if (!file.exists()){
                try {
                    file.createNewFile();
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
            recorder =new MediaRecorder();
            recorder.setAudioSource(MediaRecorder.AudioSource.MIC);//输入源通过话筒录音;
            recorder.setOutputFormat(MediaRecorder.AudioEncoder.AMR_WB);//输出格式
            recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);//音频编码
            recorder.setOutputFile(file.getAbsolutePath());//设置写出文件;
            try {
                recorder.prepare();
                recorder.start();
            } catch (IOException e) {
                e.printStackTrace();
            }


        }

    }
    private void endRecord(){
        if (recorder!=null){
            recorder.stop();
            recorder.release();
            recorder=null;
        }

    }
}

最后记得添加权限:

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

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

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

相关文章

  • Android巧用ViewPager实现左右循环滑动图片

    Android巧用ViewPager实现左右循环滑动图片

    这篇文章主要为大家详细介绍了Android巧用ViewPager实现左右循环滑动图片的相关资料,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • Android使用popUpWindow带遮罩层的弹出框

    Android使用popUpWindow带遮罩层的弹出框

    这篇文章主要为大家详细介绍了Android使用popUpWindow带遮罩层的弹出框,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • Android跳转到系统联系人及拨号或短信界面

    Android跳转到系统联系人及拨号或短信界面

    现在开发中的功能需要直接跳转到拨号、联系人、短信界面等等,查找了很多资料,自己整理了一下特此分享到脚本之家平台供大家参考
    2016-12-12
  • Android实现图片添加阴影效果的2种方法

    Android实现图片添加阴影效果的2种方法

    这篇文章主要介绍了Android实现图片添加阴影效果的2种方法,第一种方法是自定义drawable,第二种方式就是自定义view,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Flutter SystemChrome使用方法详解

    Flutter SystemChrome使用方法详解

    这篇文章主要为大家介绍了Flutter SystemChrome使用方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Android判断用户的网络类型实例讲解(2/3/4G、wifi)

    Android判断用户的网络类型实例讲解(2/3/4G、wifi)

    这篇文章主要介绍了Android判断用户的网络类型实例,用户的网络类型分为2G、3G、4G、wifi,通过Android如何判断用户的网络类型,本文为大家揭晓
    2015-12-12
  • 关于WebView 重定向行为导致的多次加载的问题

    关于WebView 重定向行为导致的多次加载的问题

    这篇文章主要介绍了关于WebView 重定向行为导致的多次加载的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Android中单例模式的一些坑小结

    Android中单例模式的一些坑小结

    这篇文章主要给大家介绍了关于Android中单例模式的一些坑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-02-02
  • Android hid发送apdu格式数据示例详解

    Android hid发送apdu格式数据示例详解

    这篇文章主要介绍了Android hid发送apdu格式数据,在 Android 中,如果你想通过 HID(Human Interface Device)发送 APDU 格式的数据,通常会涉及 USB HID 设备或蓝牙 HID 设备,本文给大家讲解的非常详细,需要的朋友可以参考下
    2023-08-08
  • Android Retrofit实现多图片/文件、图文上传功能

    Android Retrofit实现多图片/文件、图文上传功能

    Retrofit是Square开发的一个Android和Java的REST客户端库。这个库非常简单并且具有很多特性,相比其他的网络库,更容易让初学者快速掌握
    2017-03-03

最新评论