我正在寫一個鬧鐘(有點)應用程序,它使用RTC_WAKEUP標誌向AlarmManager註冊廣播意圖,以在指定的時間關閉。 Works ...當使用AlarmManager開始活動時,MediaPlayer無法播放
接收到廣播時,接收器啓動一個活動,使用STREAM_ALARM流與MediaPlayer一起播放鈴聲,並執行其他一些操作。所有的工作,但如果在屏幕關閉時收到廣播,活動啓動正確,但鈴聲不播放。如果在屏幕打開和解鎖時收到鈴聲,則可正常播放鈴聲。
被編輯爲添加播放鈴聲的活動中的代碼。
public void onCreate(Bundle bundle) {
super.onCreate(bundle)
...
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
ringtonePlayer = new MediaPlayer();
...
playRingtone();
}
private void playRingtone() throws IllegalArgumentException, SecurityException, IllegalStateException, IOException {
ringtonePlayer.setDataSource(prefs.getString(getRingTone(), RingtoneManager.getActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE).toString()));
ringtonePlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
ringtonePlayer.setWakeMode(this, PowerManager.PARTIAL_WAKE_LOCK);
ringtonePlayer.setLooping(true);
ringtonePlayer.prepare();
ringtonePlayer.start();
Log.i(LOG_TAG, "Ringtone started");
}
嘿夥計,你有辦法解決嗎?我問,因爲我有同樣的問題,也許我有一個解決方案。你想在你的活動中做什麼?你有沒有設置自定義視圖setContentView或其他一些UI的東西? – Opiatefuchs