获取闹钟管理者(AlarmManager) getSystemService(Context.ALARM_SERVICE);
设置闹钟时间弹出时间对话框 TimePickerDialog timePickerDialog=new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {…..},当前的时,分,是否是24小时制);
timePickerDialog.show();
//一次性闹钟
AlarmManager.set(唤醒屏幕,闹铃响的时间,执行的响应);
//周期性闹钟
alarmManager.setRepeating(唤醒屏幕,闹铃响的时间,再次执行的时间,执行的响应);
alarmManager.cancel(pendingIntent);取消响应
广播跳Acitivity要给Intent设置标志位Flag
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
通知栏:
NotificationCompat.Builder notificationCompat=new NotificationCompat.Builder(this);
建立通知栏,给通知栏设置标题之类的值
设置点击时关闭
notificationCompat.setAutoCancel(true);
得到通知管理器
NotificationManager notificationManager= (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
发送通知
notificationManager.notify(0x101,notification);
以上为重要方法;
测试代码:
设置闹钟页面:
public class MainActivity extends AppCompatActivity {
private AlarmManager alarmManager;
private PendingIntent pendingIntent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
}
public void setAlarmOne(View view){
final Calendar calendar=Calendar.getInstance();
int hours=calendar.get(calendar.HOUR_OF_DAY);
int minute=calendar.get(calendar.MINUTE);
TimePickerDialog timePickerDialog=new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Calendar c=Calendar.getInstance();
c.set(calendar.HOUR_OF_DAY,hourOfDay);
c.set(calendar.MINUTE,minute);
//执行响应
Intent intent=new Intent();
intent.setAction("com.example.informactivity.RING");
pendingIntent = PendingIntent.getBroadcast(MainActivity.this,0x101,intent,0);
//设置闹钟 (唤醒屏幕,闹铃的毫秒值,)
alarmManager.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(), pendingIntent);
}
},hours,minute,true);
timePickerDialog.show();
}
public void setAlarmCycle(View view){
final Calendar calendar=Calendar.getInstance();
int hours=calendar.get(calendar.HOUR_OF_DAY);
int minute=calendar.get(calendar.MINUTE);
TimePickerDialog timePickerDialog=new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Calendar c=Calendar.getInstance();
c.set(calendar.HOUR_OF_DAY,hourOfDay);
c.set(calendar.MINUTE,minute);
//执行响应
Intent intent=new Intent();
intent.setAction("com.example.informactivity.RING");
pendingIntent = PendingIntent.getBroadcast(MainActivity.this,0x101,intent,0);
//设置闹钟 (唤醒屏幕,闹铃的毫秒值,多久会再次响铃,执行响应)
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),5000, pendingIntent);
}
},hours,minute,true);
timePickerDialog.show();
}
public void cancelAlarmCycle(View view){
alarmManager.cancel(pendingIntent);
}
}
广播
public class RingActivity extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if ("com.example.informactivity.RING".equals(intent.getAction())){
Intent intent1=new Intent(context,AringActivity.class);
//广播跳Acitivity要给Intent设置标志位Flag
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//Intent的组成部分:ComponementName extra Action Data Categlay(分组) Flag
context.startActivity(intent1);
}
}
}
闹钟响铃页面及通知栏
public class AringActivity extends AppCompatActivity {
private MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_aring);
mediaPlayer = MediaPlayer.create(this, R.raw.love);
mediaPlayer.start();
NotificationCompat.Builder notificationCompat=new NotificationCompat.Builder(this);
//设置参数
notificationCompat.setDefaults(NotificationCompat.DEFAULT_ALL);
notificationCompat.setContentTitle("提示");
notificationCompat.setContentText("十二款应用等待更新,点击可关闭应用栏。");
notificationCompat.setSmallIcon(android.R.drawable.ic_lock_idle_alarm);
//设置点击时关闭
notificationCompat.setAutoCancel(true);
Notification notification=notificationCompat.build();
//通知管理器
NotificationManager notificationManager= (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//发送通知
notificationManager.notify(0x101,notification);
}
public void close(View view){
mediaPlayer.stop();
finish();
}
}
配置:
<receiver android:name=".RingActivity">
<intent-filter>
<action android:name="com.example.informactivity.RING" />
</intent-filter>
</receiver>
略微复杂的闹钟:http://blog.csdn.net/wdaming1986/article/details/7461043
通知栏常与问题及自定义用法:http://blog.csdn.net/vipzjyno1/article/details/25248021
自定义:
http://blog.sina.com.cn/s/blog_80a855370101hqsq.html