简单实现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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。