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

ForegroundServiceバックグラウンドでオーディオを録音するには、 を使用する必要があります。

フォアグラウンド サービスは、ユーザーが積極的に認識しているものと見なされるサービスであるため、メモリが不足しているときにシステムが強制終了する候補にはなりません。フォアグラウンド サービスは、ステータス バーに通知を表示する必要があります。ステータス バーは "継続中" という見出しの下に表示されます。つまり、サービスを停止するか、フォアグラウンドから削除しない限り、通知を閉じることはできません。

Android フォアグラウンド サービスの詳細については、こちらをご覧ください。

于 2013-09-05T09:56:20.507 に答える