【发布时间】:2015-04-01 20:38:07
【问题描述】:
我正在编写一个警报(有点)应用程序,它使用带有 RTC_WAKEUP 标志的 AlarmManager 注册广播意图,以在指定时间关闭。工作...
接收到广播后,接收器启动一个活动,该活动使用 STREAM_ALARM 流与 MediaPlayer 一起播放铃声,并执行一些其他操作。一切正常,但如果在屏幕关闭时接收到广播,则活动正确启动但不播放铃声。如果在屏幕打开和解锁时收到铃声,可以正常工作并播放铃声。
已编辑以在播放铃声的 Activity 中添加代码。
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 内容?
标签: android broadcastreceiver alarmmanager android-mediaplayer