0

我正在设计一个后台录音代码,如下所示

            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();

此代码在线程的 run() 中,当服务被主活动绑定时,线程将启动。如果我按“返回”键离开活动(将释放绑定),我发现录制将继续。但是,当我将 mDuration 设置为非常大的 num(3600000(1 小时))时,录制会在一段时间后停止,并且mediaRecorder.stop();永远不会执行。

如果我不离开活动。录音总是会正常停止。我想知道的是,为什么我不能做背景录音很长一段时间?

4

1 回答 1

1

您应该使用 aForegroundService在后台录制音频。

前台服务是一种被认为是用户主动意识到的服务,因此不会在内存不足时被系统杀死。前台服务必须为状态栏提供通知,该通知位于“正在进行”标题下,这意味着除非服务停止或从前台删除,否则无法解除通知。

您可以在此处获取有关 Android 前台服务的更多信息

于 2013-09-05T09:56:20.507 回答