PendingIntent的三个方法:
getActivity(Context context, int requestCode, Intent intent, int flags)
Retrieve a PendingIntent that will start a new activity, like calling Context.startActivity(Intent).c
getBroadcast(Context context, int requestCode, Intent intent, int flags)
Retrieve a PendingIntent that will perform a broadcast, like calling Context.sendBroadcast().
getService(Context context, int requestCode, Intent intent, int flags)
Retrieve a PendingIntent that will start a service, like calling Context.startService().
AlarmManager am;
am = (AlarmManager)getSystemService(ALARM_SERVICE);
设置一次闹钟:
am.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), sender);
设置重复闹钟:(times是间隔时间,c.getTimeInMillis()是起闹时间,sender是一个pendingIntent)
am.setRepeating(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),times,sender);
取消闹钟:
am.cancel(sender);
mButton1.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
new TimePickerDialog( EX06_10.this,
new TimePickerDialog.OnTimeSetListener()
{
public void onTimeSet(TimePicker view,int hourOfDay,int minute)
{
/*这里放更新时间的方法*/
}
},mHour,mMinute,true).show();
}
});
mButton2.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
new DatePickerDialog( EX06_10.this,
new DatePickerDialog.OnDateSetListener()
{
public void onDateSet(DatePicker view,int year,int monthOfYear int dayOfMonth)
{
/*这里放更新日期的方法*/
}
},mYear,mMonth,mDay).show();
}
});
datePicker.init(mYear, mMonth, mDay, //初始化时的值,此时未点击’+’、’-’,可以无此方法,默认的是系统的日期,此法主要用来updateDisplay()
new DatePicker.OnDateChangedListener()
{
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear,int dayOfMonth) //当点击DatePicker里的’+’、’-’号时,实际改变的是year,monthOfYear,dayOfMonth的值。
{
mYear=year;//赋值后界面的日期就不是初始值了,开始改变。
mMonth= monthOfYear;
mDay=dayOfMonth;
// updateDisplay();同时更新TextView里的时间
}
});
timePicker.setIs24HourView(true);
timePicker.setOnTimeChangedListener(。
new TimePicker.OnTimeChangedListener()
{
public void onTimeChanged(TimePicker view,int hourOfDay,int minute)
{
mHour=hourOfDay;
mMinute=minute;
/* tp默认是系统时间,监听方法主要是为了updateDisplay()的实现。*/
updateDisplay();
}
});
private void updateDisplay()
{
tv.setText(
new StringBuilder()//构造一个其中不带字符的字符串生成器,初始容量为 16 个字符。它比 StringBuffer 要快
.append(mYear).append("/")//向此添加指定的字符序列。
.append(format(mMonth + 1)).append("/")
.append(format(mDay)).append("")
.append(format(mHour)).append(":")
.append(format(mMinute))
);
}
private String format(int x)
{
String s=""+x;
if(s.length()==1) s="0"+s;
return s;
}