2

Android アプリケーションで MediaPlayer オブジェクトを使用して Shoutcast インターネット ラジオ ストリームを再生していますが、ストリームを長時間再生すると問題が発生します

問題は、MediaPlayer が 20 ~ 30 分後にストリームの再生を突然停止することです。MediaPlayer リスナーではエラーはキャプチャされません。さまざまなフォーラムで多くの検索を行った後、これは電話がスリープモードになる問題のようです

  1. しかし、電話がいつスリープ状態になるかをどのように知ることができますか?
  2. CPUがスリープ状態にならないように、MediaPlayerがWake Lockを取得する必要があることをどこかで読んだことがあります。それが問題ですか?はいの場合、Wake Lock を取得するにはどうすればよいですか?
  3. 問題は、WiFi 経由で聞くときにさらに大きくなるようです。WiFiにもWake Lockが必要ですか?

私はかなり長い間苦労してきました。誰でも助けてもらえますか?

4

1 に答える 1

3

Manifest.xml に追加します。

<uses-permission android:name="android.permission.DEVICE_POWER"></uses-permission>

ストリームを再生しているクラスで:

PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
wl.acquire();        
{       
    // Your code here   
    // in this block CPU Will not go to the sleep mode   
} 
wl.release();

詳細はこちらhttp://developer.android.com/reference/android/os/PowerManager.html

于 2012-03-10T10:53:00.700 に答える