私のアプリは MediaPlayer を使用して音楽を再生しています。私のアプリには、AndroidManifest.xml に「android.permission.WAKE_LOCK」があります。私の電話では、「アダプティブバッテリー」がオフ、「バッテリーセーバー」がオフ、アプリの「省電力の除外」がオンになっています。電話が充電器に接続されている場合、私のアプリは正常に動作します。しかし。電話が充電器に接続されていない場合、「onCompletionListener」が呼び出されて次の曲が MediaPlayer に読み込まれると、再生が停止します。そして、テーブルから電話を取った場合 - 画面をオンにせず、電話を動かすだけ - 再生を続けます。
500ms ごとにプロシージャを呼び出すタイマーを作成しました。このプロシージャは、プレーヤーが再生中かどうかを確認し、トラックの最初の 1 秒か最後の 1 秒かをログに書き込みます。したがって、電話が充電されていてアプリが正常に動作している場合、手順が次のようなログに書き込まれていることがわかります
21:45:50.123 playing 2 ms of 100000
21:45:50.723 playing 502 ms of 100000
... 9 minutes of music...
21:45:59.007 playing 999012 ms of 100000
21:45:59.600 playing 999789 ms of 100000
...then next song is loaded...
電話が充電されておらず、MediaPlayer の再生が停止すると、次のようになります。
21:45:50.123 playing 2 ms of 100000
21:45:50.126 playing 6 ms of 100000
21:45:50.130 playing 8 ms of 100000
21:45:50.132 playing 10 ms of 100000
.... and many many times like this.
したがって、500 ミリ秒ごとに呼び出されるのではなく、タイマー プロシージャが 2 ミリ秒または 3 ミリ秒ごとに呼び出されるように見えます。
ログのタイムスタンプは currentTimeMillis(); から取得されます。
ログにも書きます
Thread.currentThread().getId() (it's the same thread every time)
PowerManager.isDeviceIdleMode() (no, it is not idle)
and PowerManager.isPowerSaveMode() (no it is not)
助けてください - MediaPlayer が停止しないようにするにはどうすればよいですか?