我正在设计一个背景音频录制代码,如“
” mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(outputformat);
mediaRecorder.setAudioEncoder(audioencoder);
mediaRecorder.setOutputFile(mRecFile.getAbsolutePath());
mediaRecorder.prepare();
mediaRecorder.start();
Thread.sleep(mDuration);
mediaRecorder.stop();
mediaRecorder.reset();
mediaRecorder.release();
此代码位于Thread的run()中,当主服务绑定服务时,线程将启动。如果我按“后退”键(将释放绑定)离开活动,我发现录音将继续。但是,当我将mDuration设置为一个非常大的数量(3600000(1小时))时,录制将在一段时间后停止,并且mediaRecorder.stop();
将永远不会执行。
如果我不离开活动。录音总是正常停止。我想知道的是为什么我不能长时间进行背景录音?
答案 0 :(得分:0)
您应该使用ForegroundService
在后台录制音频。
前台服务是一种被认为是用户主动意识到的内容的服务,因此在内存不足时不会被系统杀死。前台服务必须提供状态栏的通知,该通知位于“正在进行”标题下,这意味着除非服务被停止或从前台删除,否则无法解除通知。
您可以获取有关Android前台服务HERE
的更多信息