java - Android:当 SAMPLERATE 设置为 44100 时,startRecording() 在未初始化的 AudioRecord 上调用

标签 java android sampling audiorecord

当我将 AudioRecord 对象的采样率设置为 44100 时出现错误。当它是 22050 时,它工作正常。

02-16 10:45:45.099 24021-24021/com.vlad.jackcomms E/AudioRecord:frameCount 1024 < minFrameCount 1792

02-16 10:45:45.099 24021-24021/com.vlad.jackcomms E/AudioRecord-JNI:创建 AudioRecord 实例时出错:初始化检查失败。

02-16 10:45:45.099 24021-24021/com.vlad.jackcomms E/android.media.AudioRecord:初始化原生AudioRecord对象时错误代码-20。

02-16 10:45:45.109 24021-24021/com.vlad.jackcomms E/AndroidRuntime:致命

异常(exception):主要 进程:com.vlad.jackcomms,PID:24021 java.lang.IllegalStateException: startRecording() 在未初始化的 AudioRecord 上调用。

相关代码如下:

private static final int RECORDER_SAMPLERATE = 22050*2;
private static final int RECORDER_CHANNELS = AudioFormat.CHANNEL_IN_MONO;
private static final int RECORDER_AUDIO_ENCODING = AudioFormat.ENCODING_PCM_16BIT;

    recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
            RECORDER_SAMPLERATE, RECORDER_CHANNELS,
            RECORDER_AUDIO_ENCODING, BufferElements2Rec * BytesPerElement);

    recorder.startRecording();

最佳答案

别忘了请求 AUDIO_RECORD 权限

private void checkRecordPermission() {

    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO)
            != PackageManager.PERMISSION_GRANTED) {

        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO},
                123);
    }

关于java - Android:当 SAMPLERATE 设置为 44100 时,startRecording() 在未初始化的 AudioRecord 上调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28539717/

相关文章:

java - 停止 SourceDataLine 时防止出现 "click"

java - 分割速度模板中的字符串并通过速度中的索引访问它

android - 如何在 C/C++ 文件中检测 Android NDK 的编译?

spss - 如何使用 SPSS 创建 REI 4 个子量表的子量表分数?

tensorflow - 如何在Tensorflow中通过自定义概率分布进行采样?

r - 从 R 中的数据集中提取不成比例的样本

java - 您可以使用 charAt(); 来比较字符串中的值吗?

支持putty生成 key 的java ssh库

android - 方向改变的问题 (Linux)

android - Delphi 10 - 在 Android 上执行命令行并实时获取输出