android AudioRecorder简单心得

本文介绍了一种在Android设备上创建可用AudioRecorder实例的方法,并针对常见的初始化失败问题提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.如何创建一个有效的AudioRecorder实例

Android各种设备的采样频率不同,输入的声道数也不同,如果采用固定的采样频率和声道数,那么得到的AudioRecorder不一定能够正常初始化。

为了正常使用,需要尝试各种不同的参数,得到在此设备上可以用的AudioRecorder实例。代码如下:


    private void createAudioRecord() {
               for (int sampleRate : new int[]{44100, 8000, 11025, 16000, 22050, 32000,
                47250, 48000}) {
            for (short audioFormat : new short[]{
                    AudioFormat.ENCODING_PCM_16BIT,
                    AudioFormat.ENCODING_PCM_8BIT}) {
                for (short channelConfig : new short[]{
                        AudioFormat.CHANNEL_IN_MONO,
                        AudioFormat.CHANNEL_IN_STEREO}) {

                    // Try to initialize
                    try {
                        recBufSize = AudioRecord.getMinBufferSize(sampleRate,
                                channelConfig, audioFormat);

                        if (recBufSize < 0) {
                            continue;
                        }

                        audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,
                                sampleRate, channelConfig, audioFormat,
                                recBufSize * 2);

                        if (audioRecord.getState() == AudioRecord.STATE_INITIALIZED) {
                            
                            return;
                        }

                        audioRecord.release();
                        audioRecord = null;
                    } catch (Exception e) {
                        // Do nothing
                    }
                }
            }
        }

        throw new IllegalStateException(
                "getInstance() failed : no suitable audio configurations on this device.");
    }

2.常见错误

1.有些设备上面,即使你得到了有效的AudioRecorder实例,在audioRecord.startRecording()的时候还会报ERROR_BAD_VALUE错误。
这有可能是你使用了AudioManager而没有释放导致的。
其他错误都可以在网络上找到答案。



您想了解如何使用AndroidAudioRecorder录制蓝牙麦克风的音频吗?如果是的话,以下是一些基本的步骤: 1. 获取蓝牙设备的音频源 使用`MediaRecorder.AudioSource`中的`VOICE_RECOGNITION`参数获取蓝牙设备的音频源。 2. 配置和准备录音器 创建`AudioRecorder`对象,设置音频源、采样率、声道数、编码格式等参数,并调用`prepare()`方法准备录音器。 3. 启动录音 调用`start()`方法开始录音。录音期间,将蓝牙设备连接到Android设备,并将其设置为音频输入源。录音完成后,调用`stop()`方法停止录音,并释放资源。 下面是一些示例代码,可以帮助您开始录制蓝牙麦克风的音频: ``` private AudioRecorder audioRecorder; private void startRecording() { audioRecorder = new AudioRecorder(); audioRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_RECOGNITION); audioRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); audioRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); audioRecorder.setAudioSamplingRate(44100); audioRecorder.setAudioChannels(2); audioRecorder.setOutputFile(getFilePath()); // 设置音频文件保存路径 try { audioRecorder.prepare(); audioRecorder.start(); } catch (Exception e) { e.printStackTrace(); } } private void stopRecording() { if (audioRecorder != null) { audioRecorder.stop(); audioRecorder.release(); audioRecorder = null; } } ``` 请注意,这只是一个基本示例。您可能需要根据自己的需求进行更改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值