简单实现Android闹钟程序 附源码
这个应用实现了简单的闹钟功能,关闭程序的状态中也可以进行闹钟的提醒。
这里遗留了一个问题:
如果我通过应用本身关闭程序,是可以实现我上述所说的功能,但是如果我在手机进程管理中实现应用程序的关闭操作,这个提醒就不起作用了,我很疑惑的是,我通过应用程序本身关闭了后,在进程中也是查看不到这个应用了的。所以哪位知道的帮留个言指点下,谢谢。
ClockDemo.java
packagecom.example.clock;
importjava.util.Calendar;
importandroid.app.Activity;
importandroid.app.AlertDialog;
importandroid.app.TimePickerDialog;
importandroid.content.DialogInterface;
importandroid.os.Bundle;
importandroid.view.KeyEvent;
importandroid.view.View;
importandroid.widget.Button;
importandroid.widget.TimePicker;
publicclassClockDemoextendsActivity{
privateButtonmSet;
CalendarmCalendar=Calendar.getInstance();
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ObjectPool.mAlarmHelper=newAlarmHelper(this);
mSet=(Button)findViewById(R.id.mSet);
setListener();
}
publicvoidsetListener(){
mSet.setOnClickListener(newView.OnClickListener(){
publicvoidonClick(Viewv){
mCalendar.setTimeInMillis(System.currentTimeMillis());
intmHour=mCalendar.get(Calendar.HOUR_OF_DAY);
intmMinute=mCalendar.get(Calendar.MINUTE);
newTimePickerDialog(ClockDemo.this,
newTimePickerDialog.OnTimeSetListener(){
publicvoidonTimeSet(TimePickerview,
inthourOfDay,intminute){
mCalendar.setTimeInMillis(System
.currentTimeMillis());
mCalendar.set(Calendar.HOUR_OF_DAY,hourOfDay);
mCalendar.set(Calendar.MINUTE,minute);
mCalendar.set(Calendar.SECOND,0);
mCalendar.set(Calendar.MILLISECOND,0);
ObjectPool.mAlarmHelper.openAlarm(32,"ddd",
"ffff",mCalendar.getTimeInMillis());
}
},mHour,mMinute,true).show();
}
});
}
@Override
publicbooleanonKeyDown(intkeyCode,KeyEventevent){
if(keyCode==KeyEvent.KEYCODE_BACK){
showBackDialog();
returntrue;
}
returnsuper.onKeyDown(keyCode,event);
}
/**Givethetipwhenexittheapplication.*/
publicvoidshowBackDialog(){
finalAlertDialog.Builderbuilder=newAlertDialog.Builder(this);
builder.setTitle("提示")
.setIcon(R.drawable.icon)
.setMessage("是否退出?")
.setPositiveButton("sure",
newDialogInterface.OnClickListener(){
publicvoidonClick(DialogInterfacedialog,
intwhich){
System.exit(0);
android.os.Process
.killProcess(android.os.Process.myPid());
dialog.dismiss();
}
})
.setNegativeButton("cancel",
newDialogInterface.OnClickListener(){
publicvoidonClick(DialogInterfacedialog,
intwhich){
dialog.dismiss();
}
});
AlertDialogad=builder.create();
ad.show();
}
}
AlarmHelper.java
packagecom.example.clock;
importandroid.app.AlarmManager;
importandroid.app.PendingIntent;
importandroid.content.Context;
importandroid.content.Intent;
publicclassAlarmHelper{
privateContextc;
privateAlarmManagermAlarmManager;
publicAlarmHelper(Contextc){
this.c=c;
mAlarmManager=(AlarmManager)c
.getSystemService(Context.ALARM_SERVICE);
}
publicvoidopenAlarm(intid,Stringtitle,Stringcontent,longtime){
Intentintent=newIntent();
intent.putExtra("_id",id);
intent.putExtra("title",title);
intent.putExtra("content",content);
intent.setClass(c,CallAlarm.class);
PendingIntentpi=PendingIntent.getBroadcast(c,id,intent,
PendingIntent.FLAG_UPDATE_CURRENT);
mAlarmManager.set(AlarmManager.RTC_WAKEUP,time,pi);
}
publicvoidcloseAlarm(intid,Stringtitle,Stringcontent){
Intentintent=newIntent();
intent.putExtra("_id",id);
intent.putExtra("title",title);
intent.putExtra("content",content);
intent.setClass(c,CallAlarm.class);
PendingIntentpi=PendingIntent.getBroadcast(c,id,intent,0);
mAlarmManager.cancel(pi);
}
}
CallAlarm.java
packagecom.example.clock;
importandroid.content.BroadcastReceiver;
importandroid.content.Context;
importandroid.content.Intent;
publicclassCallAlarmextendsBroadcastReceiver{
@Override
publicvoidonReceive(Contextcontext,Intentintent){
intent.setClass(context,AlarmAlert.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
AlarmAlert.java
packagecom.example.clock;
importandroid.app.Activity;
importandroid.app.AlertDialog;
importandroid.content.DialogInterface;
importandroid.os.Bundle;
publicclassAlarmAlertextendsActivity{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
newAlertDialog.Builder(AlarmAlert.this)
.setIcon(R.drawable.clock)
.setTitle("ddd")
.setMessage("fff")
.setPositiveButton("ddd",
newDialogInterface.OnClickListener(){
publicvoidonClick(DialogInterfacedialog,
intwhichButton){
System.exit(0);
android.os.Process
.killProcess(android.os.Process.myPid());
}
}).show();
}
}
ObjectPool.java
publicclassObjectPool{
/**Thealarmobject.*/
publicstaticAlarmHelpermAlarmHelper;
}
看了那么多,估计某些人又嫌烦了,我只贴上代码的目的是希望大家能看代码,而不是电脑上下了一个又一个的源文件,只知道用而不关心其中的技术点,这样就不能举一番三了。
源码下载:http://xiazai.jb51.net/201607/yuanma/ClockDemo(jb51.net).rar
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。