简单实现Android闹钟程序 附源码

这个应用实现了简单的闹钟功能,关闭程序的状态中也可以进行闹钟的提醒。
这里遗留了一个问题:
如果我通过应用本身关闭程序,是可以实现我上述所说的功能,但是如果我在手机进程管理中实现应用程序的关闭操作,这个提醒就不起作用了,我很疑惑的是,我通过应用程序本身关闭了后,在进程中也是查看不到这个应用了的。所以哪位知道的帮留个言指点下,谢谢。
ClockDemo.java

package com.example.clock; import java.util.Calendar; import android.app.Activity; import android.app.AlertDialog; import android.app.TimePickerDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.widget.Button; import android.widget.TimePicker; public class ClockDemo extends Activity { private Button mSet; Calendar mCalendar = Calendar.getInstance(); /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ObjectPool.mAlarmHelper = new AlarmHelper(this); mSet = (Button) findViewById(R.id.mSet); setListener(); } public void setListener() { mSet.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { mCalendar.setTimeInMillis(System.currentTimeMillis()); int mHour = mCalendar.get(Calendar.HOUR_OF_DAY); int mMinute = mCalendar.get(Calendar.MINUTE); new TimePickerDialog(ClockDemo.this, new TimePickerDialog.OnTimeSetListener() { public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 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 public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { showBackDialog(); return true; } return super.onKeyDown(keyCode, event); } /** Give the tip when exit the application. */ public void showBackDialog() { final AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("提示") .setIcon(R.drawable.icon) .setMessage("是否退出?") .setPositiveButton("sure", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { System.exit(0); android.os.Process .killProcess(android.os.Process.myPid()); dialog.dismiss(); } }) .setNegativeButton("cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); AlertDialog ad = builder.create(); ad.show(); } }

AlarmHelper.java

package com.example.clock; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; public class AlarmHelper { private Context c; private AlarmManager mAlarmManager; public AlarmHelper(Context c) { this.c = c; mAlarmManager = (AlarmManager) c .getSystemService(Context.ALARM_SERVICE); } public void openAlarm(int id, String title, String content, long time) { Intent intent = new Intent(); intent.putExtra("_id", id); intent.putExtra("title", title); intent.putExtra("content", content); intent.setClass(c, CallAlarm.class); PendingIntent pi = PendingIntent.getBroadcast(c, id, intent, PendingIntent.FLAG_UPDATE_CURRENT); mAlarmManager.set(AlarmManager.RTC_WAKEUP, time, pi); } public void closeAlarm(int id, String title, String content) { Intent intent = new Intent(); intent.putExtra("_id", id); intent.putExtra("title", title); intent.putExtra("content", content); intent.setClass(c, CallAlarm.class); PendingIntent pi = PendingIntent.getBroadcast(c, id, intent, 0); mAlarmManager.cancel(pi); } }

CallAlarm.java

package com.example.clock; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class CallAlarm extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { intent.setClass(context, AlarmAlert.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } }

AlarmAlert.java

package com.example.clock; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; public class AlarmAlert extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); new AlertDialog.Builder(AlarmAlert.this) .setIcon(R.drawable.clock) .setTitle("ddd") .setMessage("fff") .setPositiveButton("ddd", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { System.exit(0); android.os.Process .killProcess(android.os.Process.myPid()); } }).show(); } } ObjectPool.java public class ObjectPool { /** The alarm object. */ public static AlarmHelper mAlarmHelper; }

看了那么多,估计某些人又嫌烦了,我只贴上代码的目的是希望大家能看代码,而不是电脑上下了一个又一个的源文件,只知道用而不关心其中的技术点,这样就不能举一番三了。

源码下载:http://xiazai.jb51.net/201607/yuanma/ClockDemo(jb51.net).rar

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

时间: 2024-07-30 20:30:19

简单实现Android闹钟程序 附源码的相关文章

简单实现Android闹钟程序 附源码_Android

这个应用实现了简单的闹钟功能,关闭程序的状态中也可以进行闹钟的提醒. 这里遗留了一个问题: 如果我通过应用本身关闭程序,是可以实现我上述所说的功能,但是如果我在手机进程管理中实现应用程序的关闭操作,这个提醒就不起作用了,我很疑惑的是,我通过应用程序本身关闭了后,在进程中也是查看不到这个应用了的.所以哪位知道的帮留个言指点下,谢谢.ClockDemo.java package com.example.clock; import java.util.Calendar; import android.

Win7系统中解除VS2008过期限制程序,附源码

Win7系统中解除VS2008过期限制程序,附源码 下载地址: http://files.cnblogs.com/waw/Win7_VS2008_Cracker.rar

基于jsp+servlet实现的简单博客系统实例(附源码)_JSP编程

本文实例讲述了基于jsp+servlet实现的简单博客系统.分享给大家供大家参考.具体如下: 没有用框架写的 小博客, 代码大量重复. 个人感觉重复代码对于新手还是有好处的,我也是新手,见谅. 完整实例代码点击此处本站下载. 1. servlet /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package Servlet; import blog.

WPF制作一个简单的倒计时器实例附源码_实用技巧

实例一: 早上起来后闲的无事,于是想到前些日子学院的某个老师让大家给他找个什么倒计时的小软件,当时大家忙于复习所以也懒得搭理这件事,囧~.既然早上没事干,何不写个玩玩~既然要写,就用以前没怎么捣鼓过的WPF写一个吧,也算是一次学习WPF的初探吧(感觉自己很落后了)! 在Vs2008和Vs2010之间徘徊了许久之后,最终还是选择了Vs2008做开发IDE.在Vs2008中建了个WPF工程后,浏览了下默认生成的工程文件结构,一个App.xaml(当然还有App.xaml.cs)和一个Windows1

非常简单的Ajax请求实例附源码

Ajax不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的Web应用程序的技术.通过Ajax,您可以使用 JavaScript的XMLHttpRequest对象来直接与服务器进行通信.您可以在不重载页面的情况与 Web 服务器交换数据.在本文的例子中,我们将演示当用户向一个标准的HTML表单中输入数据时网页如何与web服务器进行通信. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &quo

聊天系统Demo,增加Silverlight客户端(附源码)-- ESFramework 4.0 快速上手(09)

      在ESFramework 4.0 快速上手 -- 入门Demo,一个简单的IM系统(附源码)一文中,我们介绍了使用ESFramework的Rapid引擎开发的winform聊天程序,本文我们将在之前demo的基础上添加使用ESFramework.SL开发的Silverlight客户端.这样一来,不仅Silverlight客户端之间可以相互通信,Silverlight客户端还可以跟winform客户端进行通信.如果不了解在Silverlight中如何使用ESFramework,可以先看

聊天系统Demo,增加文件传送功能(附源码)-- ESFramework 4.0 快速上手(14)

      本文我们将介绍在ESFramework 4.0 快速上手(08) -- 入门Demo,一个简单的IM系统(附源码)的基础上,增加文件传送的功能.如果不了解如何使用ESFramework提供的文件传送功能,可以先看看ESFramework 4.0 快速上手(13) -- 文件传送,如此简单一文的详细介绍.       本Demo可演示以下与文件传送相关的特性: (1)发送方请求发送文件,接收方可以同意或拒绝接收文件. (2)文件传送的过程中,收发的任何一方都可以通过事件了解文件传送的实

ASP.NET程序读取二代身份证(附源码)

原文:ASP.NET程序读取二代身份证(附源码)  一般来说winform应用程序解决这个问题起来时很容易的,web应用程序就麻烦一点了. 这里我说说我的解决思路: 一.你必要有联机型居民身份证阅读器一个(带驱动光盘),这里我用的是精伦电子公司的iDR200,并有这个阅读器的开发接口说明. 二.新建一个winform控件项目ReadCardControl,添加一个主类ReadCard 1.  声明dll入口         [DllImport("Sdtapi.dll")]      

.Net 转战 Android 4.4 日常笔记(9)--常用组件的使用方法[附源码]

原文:.Net 转战 Android 4.4 日常笔记(9)--常用组件的使用方法[附源码] 经过两天的学习,把常用的组件都学习了一遍,并做成了App 学习可能真没有捷径,跟学习html有点类似,都是一个控件一个控件学习并使用,最后拼凑成一个系统 链接:http://pan.baidu.com/s/1hqefzEW 密码:zbel  最低API 2.3 目标API 4.4 采用Android Studio 0.58IDE 希望给和我同样的初学者带来一些便利,和开发时候可以查询,第一个版本可能比较