我一直在实现此功能,以记录在设备上播放的音频回放。
当我的应用程序在前台时,它工作正常,我得到了相当好的音频记录,但每当我的应用程序转到后台时,它就会抛出下面的错误。
我已经将其实现为一个服务,并从另一个前台服务启动此服务。我已经尝试了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.
1条答案
按热度按时间9jyewag01#