【问题标题】:startRecording() called on an uninitialized AudioRecord在未初始化的 AudioRecord 上调用 startRecording()
【发布时间】:2018-09-14 04:10:37
【问题描述】:

我正在尝试在 Android 上录制语音通话。我正在使用 Android 的 AudioRecord 类/api 来执行此操作。但由于某种原因,AudioRecord 无法在某些设备上录制语音通话(尤其是最新的 OS 6.0、7.0)。每当我将 AudioRecord 对象的 AudioSource 参数设置为“VOICE_CALL”即(MediaRecorder.AudioSource.VOICE_CALL)时,它都会给我这个异常

java.lang.IllegalStateException: startRecording() 在一个 未初始化的音频记录

但是当我将音频源设置为“MIC”时,它可以正常工作,但当然不会记录语音通话。

我尝试使用 Android 的 MediaRecord 类,但遇到了同样的问题,即“MIC”工作正常,但“VOICE_CALL”缺少。我还在多个论坛上尝试了许多可用的解决方案,但仍然没有运气。

下面我分享了我的一小段代码。对此的任何帮助将不胜感激。谢谢

    recorder = new AudioRecord(MediaRecorder.AudioSource.VOICE_CALL,
            44100, AudioFormat.CHANNEL_IN_MONO,
            AudioFormat.ENCODING_PCM_16BIT, AudioRecord.getMinBufferSize(44100,AudioFormat.CHANNEL_IN_MONO,AudioFormat.ENCODING_PCM_16BIT));
    recorder.startRecording();

【问题讨论】:

    标签: java android android-mediarecorder audiorecord call-recording


    【解决方案1】:

    您需要明确要求:

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

    在 Lollipop so API lvl 23+ 之后的所有设备上

    if (ContextCompat.checkSelfPermission(thisActivity, 
        Manifest.permission.RECORD_AUDIO)
            != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(thisActivity,
                new String[]{Manifest.permission.RECORD_AUDIO},
                1234);
    }
    

    然后覆盖:

    @Override
    public void onRequestPermissionsResult(int requestCode,
            String permissions[], int[] grantResults) {
        switch (requestCode) {
            case 1234: {
                // If request is cancelled, the result arrays are empty.
                if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    initializePlayerAndStartRecording();
    
                } else {
                    Log.d("TAG", "permission denied by user");
                }
                return;
            }
        }
    }
    

    【讨论】:

    • 感谢关心,我已经处理了这个权限,所以不存在“Record_Audio”权限问题
    猜你喜欢
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    相关资源
    最近更新 更多