簡體   English   中英

Android MediaPlayer WakeLock不起作用

[英]Android MediaPlayer WakeLock not Working

我已經制作了一個基本的廣播播放器,使它能夠播放的代碼在下面,並且除了setWakeMode方法之外,它們都能正常工作。 當我將手機置於待機狀態時,音頻將在長達2分鍾的時間內正常播放,然后開始停止播放。 有任何想法嗎?

NB radioPlayer是MediaPlayer的一個實例。

public boolean startRadio()
{   
    try
    {
        String url = getString(R.string.radioURL); // Radio url.
        radioPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        radioPlayer.setDataSource(url);
        radioPlayer.prepare(); // might take long! (for buffering, etc)

        radioPlayer.setWakeMode(this.getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);
        radioPlayer.start();
        return true;
    }
    catch(Exception e)
    {
        showAlert(getString(R.string.error), getString(R.string.radioError));
        radioPlayer.release();
        radioPlayer = new MediaPlayer();
        return false;
    }
}

更新:在檢查了其他地方的另一個線程之后,我發現此問題似乎是HTC手機所特有的,實際上,即使根本沒有喚醒鎖,我的Samsung Galaxy Tab也能幸免。 有任何想法嗎?

由於Wifi進入睡眠模式,因此MediaPlayer停止了,因此您應該嘗試使用WifiLock來防止這種情況。

Android Developers Google+頁面重新發布了[this

小提示:如果您想在用戶使用應用程序時保持屏幕打開(例如玩游戲或觀看視頻),最好的方法是使用以下方法之一:

http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_KEEP_SCREEN_ON

http://developer.android.com/reference/android/view/View.html#setKeepScreenOn(boolean

http://developer.android.com/reference/android/media/MediaPlayer.html#setScreenOnWhilePlaying(boolean

除非必須使用,否則請勿使用http://developer.android.com/reference/android/os/PowerManager.WakeLock.html ,因為這需要您請求WAKE_LOCK權限(因此,向顯示該權限的用戶顯示了另一個權限不太可能安裝您的應用)。 此外,還可以使用以前的API之一來使系統為您管理喚醒鎖,因此您不會出現用戶離開應用程序且屏幕仍保持打開狀態的錯誤。

設置keepScreenOn = true

最簡單的事情。

*在其中一個視圖上,找到名為keepScreenOn的屬性並將其設置為true。

而已。 它就像一個魅力:)

首先,您應該使用prepareAsync()而不是prepare(),因為緩沖可能需要一點時間,並且使用此方法,整個工作將在單獨的Thread中完成...您還可以添加一些偵聽器,這些偵聽器肯定有助於組織您的代碼和方法;)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM