iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android使用AudioRecord实现录音功能
  • 377
分享到

Android使用AudioRecord实现录音功能

AndroidAudioRecord录音 2022-11-13 14:11:43 377人浏览 薄情痞子
摘要

前言 Android使用AudioRecord实现录音 提示:以下是本篇文章正文内容,下面案例可供参考 一、AudioRecord使用 Android平台可以使用AudioRecor

前言

Android使用AudioRecord实现录音

提示:以下是本篇文章正文内容,下面案例可供参考

一、AudioRecord使用

Android平台可以使用AudioRecord和MediaRecorder来实现录音,因为AudioRecord更接近底层,并且录制的数据为原始(pcm)数据,pcm数据可以再进行处理转换,直播中使用的都是处理后的pcm数据,所以在这里面学习下使用AudioRecord。

  • 构造AudioRecord

AudioRecord类的构造方法中有5个参数


AudioRecord(int audiOSource, int sampleRateInHz, int channelConfig, int audioFORMat,
            int bufferSizeInBytes)
  • 创建AudioRecord对象
private AudioRecord audioRecord = null;
private int recordBufsize = 0;

    private void createAudioRecord() {
        recordBufsize = AudioRecord
                .getMinBufferSize(44100,
                        AudioFormat.CHANNEL_IN_MONO,
                        AudioFormat.ENcoding_PCM_16BIT);
        audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,
                44100,
                AudioFormat.CHANNEL_IN_MONO,
                AudioFormat.ENCODING_PCM_16BIT,
                recordBufsize);
    }
  • 开始录音
// 调用开始录音
audioRecord.startRecording();

调用开始录音后,需要从audioRecord中读取录音的数据

audioRecord.read(data, 0, recordBufsize);
  • 结束录音
audioRecord.stop();
  • 释放资源
audioRecord.release();

AudioRecord的关键方法已经介绍了,下面贴上完整的代码

二、使用步骤

清单文件声明权限

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

关于Android 6.0动态申请权限这里就不重复了,可自行百度

完整代码

public class MainActivity extends AppCompatActivity {

    private static final String FILE_NAME = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC) + File.separator + "test.pcm";

    private AudioRecord audioRecord = null;
    private int recordBufsize = 0;
    private boolean isRecording = false;

    private Button startRecordBtn;
    private Button stopRecordBtn;

    private Thread recordingThread;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1000);
        }
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO}, 2000);
        }
        startRecordBtn = findViewById(R.id.start_record_btn);
        stopRecordBtn = findViewById(R.id.stop_record_btn);
        createAudioRecord();
        startRecordBtn.setOnClickListener(v -> {
            startRecord();
        });
        stopRecordBtn.setOnClickListener(v -> {
            stopRecord();
        });
    }

    private void createAudioRecord() {
        recordBufsize = AudioRecord
                .getMinBufferSize(44100,
                        AudioFormat.CHANNEL_IN_MONO,
                        AudioFormat.ENCODING_PCM_16BIT);
        Log.i("audioRecordTest", "size->" + recordBufsize);
        audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,
                44100,
                AudioFormat.CHANNEL_IN_MONO,
                AudioFormat.ENCODING_PCM_16BIT,
                recordBufsize);
    }

    private void startRecord() {
        if (isRecording) {
            return;
        }
        isRecording = true;
        audioRecord.startRecording();
        Log.i("audioRecordTest", "开始录音");
        recordingThread = new Thread(() -> {
            byte data[] = new byte[recordBufsize];
            File file = new File(FILE_NAME);
            FileOutputStream os = null;
            try {
                if (!file.exists()) {
                    file.createNewFile();
                    Log.i("audioRecordTest", "创建录音文件->" + FILE_NAME);
                }
                os = new FileOutputStream(file);
            } catch (Exception e) {
                e.printStackTrace();
            }
            int read;
            if (os != null) {
                while (isRecording) {
                    read = audioRecord.read(data, 0, recordBufsize);
                    if (AudioRecord.ERROR_INVALID_OPERATION != read) {
                        try {
                            os.write(data);
                            Log.i("audioRecordTest", "写录音数据->" + read);
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
            try {
                os.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        });
        recordingThread.start();
    }

    private void stopRecord() {
        isRecording = false;
        if (audioRecord != null) {
            audioRecord.stop();
            Log.i("audioRecordTest", "停止录音");
            audioRecord.release();
            audioRecord = null;
            recordingThread = null;
        }
    }
}

布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="Http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:id="@+id/start_record_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="开始录音" />

    <Button
        android:id="@+id/stop_record_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="结束录音" />
</LinearLayout>

运行程序,点击开始录音,本地会创建test.pcm文件并写入录音数据。

总结

通过上面的学习,对AudioRecord有初步的了解,能使用AudioRecord来实现录音功能保存到本地。

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

--结束END--

本文标题: Android使用AudioRecord实现录音功能

本文链接: https://www.lsjlt.com/news/172104.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android使用AudioRecord实现录音功能
    前言 Android使用AudioRecord实现录音 提示:以下是本篇文章正文内容,下面案例可供参考 一、AudioRecord使用 Android平台可以使用AudioRecor...
    99+
    2022-11-13
    Android AudioRecord 录音
  • Android中怎么利用AudioRecord实现暂停录音功能
    Android中怎么利用AudioRecord实现暂停录音功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。项目设计的思路:由于自带的AudioRecord没有pauseRec...
    99+
    2023-05-31
    android audiorecord
  • 在Android中使用MediaRecorder实现录音功能
    在Android中使用MediaRecorder实现录音功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。MediaRecorder已经集成了录音、编码、压缩等,支持少量的...
    99+
    2023-05-31
    android mediarecorder roi
  • Android利用MediaRecorder实现录音功能
    本文实例为大家分享了Android利用MediaRecorder实现录音功能 的具体代码,供大家参考,具体内容如下 android用手机录音保存到sd卡中; 布局文件: &...
    99+
    2024-04-02
  • Android如何实现录音功能
    这篇文章给大家分享的是有关Android如何实现录音功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。本文介绍了Android实现录音的实例代码(MediaRecorder),分享给大家,具体如下:Android...
    99+
    2023-05-30
    android
  • Android中使用原生MediaRecorder APi实现录音功能
    一、MediaRecorder简介 MediaRecorder是Android中的一个API,可以用来实现录音功能。它继承自android.media.MediaRecorder类,可以实现音频和视频的录制。 二、MediaRecorder...
    99+
    2023-09-30
    android
  • 在Android应用中实现一个录音播放功能
    这期内容当中小编将会给大家带来有关在Android应用中实现一个录音播放功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。播放音频文件public class PlayManager { private ...
    99+
    2023-05-31
    android roi
  • 通过在android项目中使用MediaRecorder实现一个录音功能
    这篇文章将为大家详细讲解有关通过在android项目中使用MediaRecorder实现一个录音功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。MainActivitypackage co...
    99+
    2023-05-31
    mediarecorder android roi
  • Android应用中怎么实现一个通话录音功能
    这期内容当中小编将会给大家带来有关Android应用中怎么实现一个通话录音功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。服务代码:package com.eboy.phoneListener;impo...
    99+
    2023-05-31
    android roi
  • 在Android开发中利用MediaRecorder实现一个录音功能
    这篇文章给大家介绍在Android开发中利用MediaRecorder实现一个录音功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。代码如下:public class MediaRecorderActivity ext...
    99+
    2023-05-31
    android mediarecorder roi
  • Android使用Flutter实现录音插件
    目录安卓部分手动注册Android和Dart的通讯安卓录音Dart module部分iOS部分手动注册插件iOS插件Dart调用部分原生提供功能,Dart module 通过 met...
    99+
    2022-11-13
    Android Flutter录音 Android 录音功能
  • Android实现静音检测功能
    本文实例为大家分享了Android实现静音检测的具体代码,供大家参考,具体内容如下 一、背景 做语音评测的时候需要在用户不说话的时候自动停止,这时候就需要判断什么时候不说话处于静音的...
    99+
    2024-04-02
  • Android使用http实现注册登录功能
    在项目中实现注册登录有很多种方式,一般对于初学者来说,不使用框架,采用http的post和get请求后台服务器,是一种更好理解底层源码的方式。使用框架实现注册登录虽然比自己封装pos...
    99+
    2024-04-02
  • 在Java中使用swing实现一个录音功能
    在Java中使用swing实现一个录音功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。添加监听事件:import java.awt.*;import java.awt.eve...
    99+
    2023-05-31
    java swing ava
  • android语音即时通讯之录音、播放功能实现代码
    在android中,实现录音与语音播放的功能算是比较简单的,但是作为参考,还是很有必要将语音相关的知识做一个简要的记录。首先,在android中,支持录音支持两种方式。主要包括:字节流模式和文件流模式。用文件流模式进行录音操作比较简单,而且...
    99+
    2023-05-30
    android 语音 通讯
  • java实现录音播放功能
    本文实例为大家分享了java实现录音播放的具体代码,供大家参考,具体内容如下 需求: 1.实现可以从麦克风进行录音 2.可以停止录音 3.实现播放录音内容 4.并将所录的mp3文件全...
    99+
    2022-11-13
    java 录音 播放
  • uniapp实现录音上传功能
    目录uni-app 介绍html部分js部分创建实例开始录音结束录音播放录音暂停播放提交录音到后端重新录制onLoad部分计时器数据部分uni-app 介绍 uni-app 是一个...
    99+
    2024-04-02
  • HTML5如何实现录音功能
    这篇文章主要介绍了HTML5如何实现录音功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。获取 PCM 数据处理 PCM 数据Float32 转 Int16ArrayBuff...
    99+
    2023-06-09
  • Android实现QQ登录功能
    QQ登录是一个非常简单的一个第三方应用,现在,我们就来实现一个QQ登录首先下载两个jar包   这里上传不了jar包,所以可以到我的github中下载工程中libs中的两个jar包网址:https://github.co...
    99+
    2023-05-30
    android qq登录 roi
  • Qt C++如何实现录屏录音功能
    这篇文章主要介绍了Qt C++如何实现录屏录音功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Qt C++如何实现录屏录音功能文章都会有所收获,下面我们一起来看看吧。录屏部分录屏的主要思路...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作