一、设定闹钟要注意的问题
public void updateAlarmSetting(MemoDAO dao) {
MemoTime time = dao.updateSetTimes();
AlarmManager alarmManager = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context,ScheduleService.class);
if (time == null) {// 取消闹钟
PendingIntent pendingIntent = PendingIntent.getService(context,
ALARM_CODE, intent, PendingIntent.FLAG_CANCEL_CURRENT);
alarmManager.cancel(pendingIntent);
} else {// 设置新闹钟,覆盖旧的设置
intent.putExtra(MemoTime.Field.MemoId, time.getMemoId());
intent.putExtra(MemoTime.Field.Id, time.getId());
PendingIntent pendingIntent = PendingIntent.getService(context,
ALARM_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.set(AlarmManager.RTC_WAKEUP, time.getTime(),
pendingIntent);
}
}
用来接收闹钟的Receiver或Service必须设为:remote或者:xxx模式
<service
android:name="com.fullteem.time.manage.ScheduleService"
android:enabled="true"
android:process=":remote" >
</service>
二、关屏时屏幕的唤醒及音乐播放
在OnResume中唤醒屏幕,并在OnResume最后再初始化MediaPlayer,如果在唤醒之前初始化闹钟,则闹钟可能不响,只会触发界面
@Override
protected void onResume() {
mWakeLock.acquire();// 这里唤醒锁,用这种方式要记得在适当的地方关闭锁,
super.onResume();
initPlayer();
}