一、手机闹钟主要用到了AlarmManager类,AlarmManager类提供了访问系统定时服务的途径,开发人员可以在程序中设置某个应用程序在未来的某个时刻被执行。当AlarmManager定时时间到了之后,当初注册的Intent对象将会被系统广播,进而启动目标程序。

二、在程序运行时当需要使用AlarmManager类时,可以通过Context对象的getSystemService(Context.ALARM_SERVICE)方法来获得AlarmManager对象。

以下程序中使用时间选择对话框设置闹钟的时间。

main.xml布局文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent">
  6. <Button android:id="@+id/btn"
  7. android:text="设置闹钟"
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content" />
  10. </LinearLayout>

清单文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.ljq.activity" android:versionCode=""
  4. android:versionName="1.0">
  5. <application android:icon="@drawable/icon"
  6. android:label="@string/app_name">
  7. <activity android:name=".MainActivity"
  8. android:label="@string/app_name">
  9. <intent-filter>
  10. <action android:name="android.intent.action.MAIN" />
  11. <category
  12. android:name="android.intent.category.LAUNCHER" />
  13. </intent-filter>
  14. </activity>
  15. <activity android:name=".AlarmActivity" />
  16. <!-- android:process=":remote": 新开一个进程 -->
  17. <receiver android:name=".AlarmReceiver" android:process=":remote"/>
  18. </application>
  19. <uses-sdk android:minSdkVersion="" />
  20. </manifest>

AlarmReceiver类

  1. package com.ljq.activity;
  2.  
  3. import android.content.BroadcastReceiver;
  4. import android.content.Context;
  5. import android.content.Intent;
  6.  
  7. public class AlarmReceiver extends BroadcastReceiver{
  8.  
  9. @Override
  10. public void onReceive(Context context, Intent intent) {
  11. Intent i=new Intent(context, AlarmActivity.class);
  12. i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  13. context.startActivity(i);
  14. }
  15. }

AlarmActivity类

  1. package com.ljq.activity;
  2.  
  3. import android.app.Activity;
  4. import android.app.AlertDialog;
  5. import android.content.DialogInterface;
  6. import android.content.DialogInterface.OnClickListener;
  7. import android.os.Bundle;
  8.  
  9. public class AlarmActivity extends Activity {
  10.  
  11. @Override
  12. public void onCreate(Bundle savedInstanceState) {
  13. super.onCreate(savedInstanceState);
  14.  
  15. //显示对话框
  16. new AlertDialog.Builder(AlarmActivity.this).
  17. setTitle("闹钟").//设置标题
  18. setMessage("时间到了!").//设置内容
  19. setPositiveButton("知道了", new OnClickListener(){//设置按钮
  20. public void onClick(DialogInterface dialog, int which) {
  21. AlarmActivity.this.finish();//关闭Activity
  22. }
  23. }).create().show();
  24.  
  25. }
  26.  
  27. }

MainActivity类

  1. import java.util.Calendar;
  2.  
  3. import android.app.Activity;
  4. import android.app.AlarmManager;
  5. import android.app.Dialog;
  6. import android.app.PendingIntent;
  7. import android.app.TimePickerDialog;
  8. import android.content.Context;
  9. import android.content.Intent;
  10. import android.os.Bundle;
  11. import android.view.View;
  12. import android.widget.Button;
  13. import android.widget.TimePicker;
  14. import android.widget.Toast;
  15.  
  16. public class MainActivity extends Activity{
  17. private Button btn=null;
  18. private AlarmManager alarmManager=null;
  19. Calendar cal=Calendar.getInstance();
  20. final int DIALOG_TIME = ; //设置对话框id
  21.  
  22. @Override
  23. protected void onCreate(Bundle savedInstanceState) {
  24. super.onCreate(savedInstanceState);
  25. setContentView(R.layout.main);
  26.  
  27. alarmManager=(AlarmManager)getSystemService(Context.ALARM_SERVICE);
  28. btn=(Button)findViewById(R.id.btn);
  29. btn.setOnClickListener(new View.OnClickListener(){
  30. public void onClick(View view) {
  31. showDialog(DIALOG_TIME);//显示时间选择对话框
  32. }
  33. });
  34.  
  35. }
  36.  
  37. @Override
  38. protected Dialog onCreateDialog(int id) {
  39. Dialog dialog=null;
  40. switch (id) {
  41. case DIALOG_TIME:
  42. dialog=new TimePickerDialog(
  43. this,
  44. new TimePickerDialog.OnTimeSetListener(){
  45. public void onTimeSet(TimePicker timePicker, int hourOfDay,int minute) {
  46. Calendar c=Calendar.getInstance();//获取日期对象
  47. c.setTimeInMillis(System.currentTimeMillis()); //设置Calendar对象
  48. c.set(Calendar.HOUR, hourOfDay); //设置闹钟小时数
  49. c.set(Calendar.MINUTE, minute); //设置闹钟的分钟数
  50. c.set(Calendar.SECOND, ); //设置闹钟的秒数
  51. c.set(Calendar.MILLISECOND, ); //设置闹钟的毫秒数
  52. Intent intent = new Intent(MainActivity.this, AlarmReceiver.class); //创建Intent对象
  53. PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this, , intent, ); //创建PendingIntent
  54. //alarmManager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pi); //设置闹钟
  55. alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), pi); //设置闹钟,当前时间就唤醒
  56. Toast.makeText(MainActivity.this, "闹钟设置成功", Toast.LENGTH_LONG).show();//提示用户
  57. }
  58. },
  59. cal.get(Calendar.HOUR_OF_DAY),
  60. cal.get(Calendar.MINUTE),
  61. false);
  62.  
  63. break;
  64. }
  65. return dialog;
  66. }
  67. }

运行结果

Android 实现闹钟功能的更多相关文章

  1. Android AlarmManager类的应用(实现闹钟功能)

    1.AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,可以实现从指定时间开始,以一个固定的间隔时间执行某项操作,所以常常与广播(Broadcast)连用 ...

  2. AlarmManager类的应用(实现闹钟功能)

    1.AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,可以实现从指定时间开始,以一个固定的间隔时间执行某项操作,所以常常与广播(Broadcast)连用 ...

  3. 基于Android的闹钟的软件

    一.本课题要求:设计一个基于Android的闹钟的软件. 实现的功能有:能通过界面设置闹钟的启动条件建立后台服务进程,当满足触发条件时,闹钟响应相应事件. 二.需求分析 该课题实现在手机操作系统And ...

  4. Android Studio调试功能使用总结【转】

    Android Studio调试功能使用总结[转]   这段时间一直在使用Intellij IDEA, 今天把调试区工具的使用方法记录于此. 先编译好要调试的程序. 1.设置断点 选定要设置断点的代码 ...

  5. Android Studio调试功能使用总结---转

    Android Studio调试功能使用总结[转]   这段时间一直在使用Intellij IDEA, 今天把调试区工具的使用方法记录于此. 先编译好要调试的程序. 1.设置断点 选定要设置断点的代码 ...

  6. 集成Android免费语音合成功能(在线、离线、离在线融合)

    集成Android免费语音合成功能(在线.离线.离在线融合),有这一篇文章就够了(离线)集成Android免费语音合成功能(在线.离线.离在线融合),有这一篇文章就够了(离在线融合) 转眼间,大半年没 ...

  7. Android中选项卡功能的实现

    Android中选项卡功能的实现 Android中使用TabHost和TabWidget来实现选项卡功能.TabHost必须是布局的根节点,它包含两个子节点: TabWidget,显示选项卡: Fra ...

  8. Android社会化分享功能的实现步骤

    众所周知,互联网是一个资源共享的地方,在网络上,我们可以分享我们所有认为好的资源.而随着互联网信息爆发式的增长,我们习惯了一键分享功能,比如:微博分享.微信分享.QQ空间分享.人人网分享等等.由此可见 ...

  9. Android微信分享功能实例+demo

    Android微信分享功能实例 1 微信开放平台注册 2 获得appId,添加到程序中,并运行程序 3 使用应用签名apk生成签名,添加到微信开放平台应用签名,完成注册 4 测试分享功能. 有问题请留 ...

随机推荐

  1. 移除Sourcesafe与VC6的绑定

    整理日: 2015年2月16日 HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Source Control\Disabled

  2. ios7控件特性(一)

    苹果发布iOS7之后,iOS7全部采用扁平化的界面,我们的app界面在iOS7上出现了很大的改变,这包括UINavigationBar,UIButton,UIActionSheet,UITabBar等 ...

  3. Flyer

    hdu4768:http://acm.hdu.edu.cn/showproblem.php?pid=4768 题意:给你1--2^32个位置,然后有m个操作,每次操作给你3个数 a,b,c,然后在a, ...

  4. vs2010编译curl为static库及测试

    1,编译curl为static库 用vs2010打开: curl-7.32.0\vs\vc6\vc6curl.dsw 选择LIB Release生成libcurl静态库: curl-7.32.0\vs ...

  5. 译文:TransactionScope 与 Async/Await

    你可能不知道这一点,在 .NET Framework 4.5.0  版本中包含有一个关于 System.Transactions.TransactionScope 在与 async/await 一起工 ...

  6. 【HDOJ】1892 See you~

    wa了十次,原来变量名写错.二维树状数组. #include <cstdio> #include <cstring> #define MAXN 1002 int nums[MA ...

  7. windows/NBTSTAT,linux/nmblookup命令详解,查询NetBIOS名

    NBTSTAT命令详解 请问: Linux下有没有和nbtstat一样的命令,用 nmblookup -A ip 可以 nbstat命令主要用于查看当前基于netbios的tcp/ip连接状态,通过该 ...

  8. R语言 系统聚类分析1

    #聚类分析是一类将数据所研究对象进行分类的统计方法,这一类方法的共同特点是:#事先不知道类别的个数与结构 据以进行分类的数据是对象之间的相似性 或差异性数据#将这些相似(相异)性数据看成是对象之间的距 ...

  9. 【传】玩转Android---UI篇---ImageButton(带图标的按钮)

    原文网址:http://hualang.iteye.com/blog/964049 除了Android系统自带的Button按钮一万,还提供了带图标的按钮ImageButton 要制作带图标的按钮,首 ...

  10. HDU-4920 Matrix multiplication

    矩阵相乘,采用一行的去访问,比采用一列访问时间更短,根据数组是一行去储存的.神奇小代码. Matrix multiplication Time Limit: 4000/2000 MS (Java/Ot ...