自己写的android闹钟功能,需要实现timepicker选择完成后将选择的时间设定为闹钟的启动时间,但是不管怎么改总是没法定时启动
alertDialog = new AlertDialog.Builder(context)
.setView(view)
.setCustomTitle(viewTitle)
.setNegativeButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
hour = timePicker.getCurrentHour();
minute = timePicker.getCurrentMinute();
time = new StringBuilder();
time.append(hour < 10 ? "0" + hour : hour).append(":")
.append(minute < 10 ? "0" + minute : minute);
button.setText(time);
calendar.set(Calendar.HOUR, hour);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, 0);
intent = new Intent(context, AlarmNotifyReceiver.class);
pi = PendingIntent.getBroadcast(context, 0, intent,PendingIntent.FLAG_CANCEL_CURRENT);
manager = (AlarmManager) context
.getSystemService(context.ALARM_SERVICE);
manager.setWindow(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(),
1000 * 60 * 60 * 24, pi);
Toast.makeText(context, "闹钟设置为" + time,
Toast.LENGTH_SHORT).show();
dialog.cancel();
}
})
.setPositiveButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
}).create();
alertDialog.setOnShowListener(new OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
int divierId = alertDialog.getContext().getResources()
.getIdentifier("android:id/titleDivider", null, null);
View divider = alertDialog.findViewById(divierId);
divider.setBackgroundColor(context.getResources().getColor(
R.color.theme_background)); // earlier defined color-int
}
});
alertDialog.show();
接下来是接收广播的类
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "启动闹钟", Toast.LENGTH_SHORT).show();
notice = MediaPlayer.create(context,
RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM));
notice.setLooping(true);
try {
notice.setAudioStreamType(AudioManager.STREAM_ALARM);
notice.prepare();
notice.start();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Builder builder = new AlertDialog.Builder(context);
builder.setTitle("日常提醒闹钟").setMessage("请执行操作")
.setPositiveButton("好哒~~", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
notice.stop();
}
});
AlertDialog dialog=builder.create();
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
dialog.show();
}
写了Service没,要在注册广播
是不是时间设置错了,你的TimePicker设置setOnTimeChangedListener来监听时间的更新了没