AudioRecord未在android 11上初始化,当应用程序处于后台时

bprjcwpo  于 2023-06-20  发布在  Android
关注(0)|答案(1)|浏览(183)

我一直在实现此功能,以记录在设备上播放的音频回放。
当我的应用程序在前台时,它工作正常,我得到了相当好的音频记录,但每当我的应用程序转到后台时,它就会抛出下面的错误。
我已经将其实现为一个服务,并从另一个前台服务启动此服务。我已经尝试了audioFormat的所有配置,但audioRecord对象无法初始化。
下面是应用程序在运行时崩溃的函数。
public void onDestinyToString(){

AudioPlaybackCaptureConfiguration config = new AudioPlaybackCaptureConfiguration.Builder(mediaProjection)
            .addMatchingUsage(AudioAttributes.USAGE_MEDIA)
            .build();

    AudioFormat audioFormat = new AudioFormat.Builder()
            .setEncoding(AudioFormat.ENCODING_PCM_16BIT)
            .setSampleRate(8000)
            .setChannelMask(AudioFormat.CHANNEL_IN_MONO)
            .build();

    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
        return;
    }
    int bufferSize = AudioRecord.getMinBufferSize(8000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
    audioRecord = new AudioRecord.Builder()
            .setAudioFormat(audioFormat)
            .setBufferSizeInBytes(bufferSize)
            .setAudioPlaybackCaptureConfig(config)
            .build();
    audioRecord.startRecording();
    audioCaptureThread = new Thread() {
        @Override
        public void run() {
            File outputFile = createAudioFile();
            writeAudioToFile(outputFile);
        }
    };

    audioCaptureThread.start();
    mIsRecording = true;
}

错误:-E/IAudioFlinger:createRecord返回错误-1 E/AudioRecord:createRecord_l(1):AudioFlinger无法创建记录轨道,状态:-1\f25 E/AudioRecord-JNI-1(E/音频记录-JNI):创建AudioRecord示例时出错:初始化检查失败,状态为-1。E/android. media. AudioRecord:初始化本机AudioRecord对象时出现错误代码-20。
E/AndroidRuntime:致命异常:主要工艺:com. Myapp. app. internal,PID:18240 java. lang. RuntimeException:无法使用Intent {act = AudioService:Start cmp = com. Myapp. app. internal/com. Myapp. app. AudioService}启动服务com.Myapp.app.AudioService@bfz0813:java.lang.IllegalStateException:对未初始化的AudioRecord调用startRecording()。
注意:-这适用于所有Android版本小于11.

9jyewag0

9jyewag01#

    • Android 11**在前台服务可以访问设备的位置、摄像头和麦克风时会发生更改。这有助于保护敏感的用户数据。

相关问题