2013-09-30 73 views
0

當屏幕超時或用戶按下電源按鈕以關閉屏幕時,我希望在應用程序中播放聲音。喚醒鎖定未能保持應用程序運行

@Override 
public void onCreate(Bundle savedInstanceState) { 
    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
    PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, 
      "Wake lock"); 
    wl.acquire(); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.paint); 

} 

這是我的活動的onCreate。在此之下,有一個onClick開關語句,用於監聽要點擊的按鈕,並在點擊該按鈕時播放聲音。它不啓動新的活動,只是播放聲音。當用戶點擊電源按鈕或屏幕時間時,聲音停止,這不是我想要的。我希望它在用戶鎖定屏幕或發生超時時播放。我也重新檢查了清單,並且有適當的許可。

+0

這通常是什麼服務。 – Geobits

回答

0

啊,謝謝你提供了額外的信息。在活動中執行聲音播放不是正確的方法,因爲當屏幕關閉時您的活動將暫停。對於後臺任務 - 如播放聲音 - 您應該使用服務。這裏有一個教程爲出發點,以瞭解Android服務: http://www.vogella.com/articles/AndroidServices/article.html

您實現您的服務後,把它拿到喚醒鎖啓動時,不要忘記釋放()之後鎖定時,飾面。

此外,在您的聲音播放情況下,您應該將其作爲「前景」服務運行。這將告訴Android不要暫停或終止它,因爲它是用戶交互的一部分。它還會在通知抽屜中創建一個列表,供用戶導航回到您的活動,如果他們已經離開它。更多閱讀: http://developer.android.com/guide/components/services.html#Foreground

0

我的應用程序使用AudioTrack和SoundPool進行音頻播放,我以與發佈完全相同的方式獲取PARTIAL_WAKE_LOCK,並且足以在屏幕關閉時保持聲音輸出正常工作。你能確認你的清單文件中有WAKE_LOCK權限嗎?

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

如果這樣做沒有幫助,請提供有關您如何執行回放的更多詳細信息。它來自服務嗎?

+0

我編輯了一些代碼,謝謝你的回覆。我也檢查了清單,並使用了適當的許可。 – user2727048

相關問題