0

バックグラウンドで音楽をストリーミングしようとすると、アプリで問題が発生し、一部のデバイスでのみ発生します。

アプリがフォアグラウンドで音楽を再生すると問題なく動作しますが、一部のデバイスでは、電源ボタンを押すとすぐにストリームの品質が失われます (低速のインターネット接続を使用しているときのように見えます)。画面をオンにすると、ストリームが再び良くなります。

私はすでに試しましWakeLocksたが、うまくいきませんでした。


編集1:これは私がウェイクロックを使用した方法です:

OnCreate私の活動の:

//Setting the wakelock
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");

そして、音楽が始まったときにこれを行うよりも:

wl.acquire();

ストリームが停止すると、次のようになります。

if(wl.isHeld()){
    wl.release();
}

編集2:

これも試しました:

mediaPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);

編集3:

WiFiロックも試してみました:

//Setting the proper lockMode depending on the android version:
int wifiLockMode = WifiManager.WIFI_MODE_FULL;

int sdkVersion = Build.VERSION.SDK_INT;

//WIFI_MODE_FULL_HIGH_PERF was added on Android 3.1 so 
//I need to implement this to make sure the wifi will execute on its full power(even if it consumes more battery)
if (sdkVersion >= Build.VERSION_CODES.HONEYCOMB_MR1) {
wifiLockMode = WifiManager.WIFI_MODE_FULL_HIGH_PERF;
}

//Setting the WifiLock
WiFiManager wm = (WifiManager) this.getSystemService(Context.WIFI_SERVICE); 
WifiLock mWiFiLock = wm.createWifiLock(wifiLockMode, "MyFlag");
mWiFiLock.acquire();

//Releasing the WifiLock
if(mWiFiLock.isHeld()){
    mWiFiLock.release();
}

WifiLockで少しはマシになりそうです(というか、途切れる音に慣れてきました)

何か案は?

4

2 に答える 2

0

画面がオフのときにバッテリーを節約しようとする「バッテリー最適化」ルールを各 OEM が書き換えていると思うので、本当に何かを行うことはできないと思います。

最善の方法は、 MediaPlayer のウェイクロックシステムについて Android 標準に従い、指を交差させることです :)

于 2013-09-14T08:19:11.383 に答える