11

URLからオーディオを再生する(ストリーミング)サービスでMediaPlayerを実行しています。今のところうまく機能しているようで、電話をスタンバイ状態にしても再生を続けます。

現在、ウェイクロックを取得していません。私の質問は:

  • 私の状況では、実際にウェイクロックを取得する必要がありますか?
  • 必要な場合、どのタイプのウェイクロックを取得する必要がありますか?

はい、これはwakelockの正当な使用例です。これは、ユーザーが明示的にオーディオの再生を継続することを望んでいるためです。

4

6 に答える 6

15
  1. スタンバイ状態のときは、電話を約5分間監視します。再生を続ける場合は、ウェイクロックは必要ありません。MediaPlayerインスタンスにすでに1つあることを示している可能性があります。Androidでは、ユーザーが約2分間操作を行わないと、ウェイクロックのない必須ではないものはすべて一時停止されます。5分は、2分のタイマーを取り巻く疑問を取り除くはずです。
  2. 部分的なウェイクロックを試してください。プロセッサが「起動」状態に保たれるため、ユーザーは音声を聞くことができます。ただし、画面をスリープ状態にすることができるため、画像の表示にバッテリーを浪費することはありません。これはおそらくあなたが望むものです。

編集:あなたが安全な側でプレーしたいなら、あなたはWakeLockを使いたいです。そうすれば、MediaPlayerが変更され、電話が一時停止したときにスリープ状態になることが許可された場合でも、プログラムは正しく機能します。WakeLockを追加しても、必要がなくなったときに確実に解放すれば、失うものは何もありません。そうしないと、意図したよりも多くのバッテリーを消耗し、最悪の場合、アプリケーションの終了時にロックを解除しなかったことを示すエラーがすぐに表示されます。WakeLockを追加すると(冗長になる可能性がありますが)、依存するソフトウェアの変更に対してアプリケーションがより堅牢になるため、これは良い習慣です。

于 2011-06-27T20:10:28.163 に答える
11

MediaPlayerは、デフォルトではこれを自動的に行いません。

ただし、ウェイクロックを取得する代わりに、プレイ中にウェイクロックを保持するように指示するために呼び出すことができるメソッドがあります。

http://developer.android.com/reference/android/media/MediaPlayer.html#setWakeMode(android.content.Context、int)

ドキュメントに記載されているように、ウェイクロックを保持しているのはアプリであるため、この機能を使用するには、ウェイクロックのアクセス許可をリクエストする必要があります。

于 2011-07-01T00:40:35.697 に答える
4

PowerManagerが再生中に起動してスリープしないことを保証できないため、おそらくWakeLockが必要になります。PARTIAL_WAKE_LOCKは、最低レベルのバッテリー消耗が使用されることを保証します(CPUがオン、画面/キーボードがオフ)。バッテリーの消耗の影響はいつでもテストできますが、音楽を再生するにはCPUがオンになっている必要があるため、バッテリーの消耗が大きくなるとは思えません。この方法により、使用されている電話(またはその電話の設定)に関係なく、CPUがスリープ状態になることで再生が中断されることはありません。

于 2011-07-01T15:34:02.910 に答える
1

これにはWakeLockは必要ないと思います。MediaPlayerを初めて使用したとき、スタンバイ状態でシャットダウンしないことがすぐにわかりました。それを克服するのに少し手間がかかりましたが、スタンバイによってストリーミングMediaPlayerオブジェクトが停止するケースは見たことがありません。

于 2011-06-22T01:02:59.760 に答える
0
  mediaPlayer.setScreenOnWhilePlaying(true);

ドキュメントには次のように書かれています。「これは、アプリケーションが低レベルのウェイクロックアクセスのアクセス許可を持っている必要がないため、可能な場合は「setWakeMode」よりも推奨される方法です。」

于 2018-08-27T07:37:06.607 に答える
-1

ウェイクロックは必要ありません。WAKE LOCKを使用すると、ユーザーに画面をオンのままにするように強制されます。私は個人的に、メディアの再生中は画面をオフにすることを好みます。

ここでの長期実行サービスの例例

于 2011-07-01T20:45:34.733 に答える