MainActivity例如以下:

  1. package cc.cc;
  2.  
  3. import java.util.Calendar;
  4. import java.util.Locale;
  5. import android.os.Bundle;
  6. import android.app.Activity;
  7. import android.app.AlarmManager;
  8. import android.app.PendingIntent;
  9. import android.content.Context;
  10. import android.content.Intent;
  11. /**
  12. * Demo描写叙述:
  13. * 反复闹钟的实现
  14. *
  15. * 注意事项:
  16. * 1 由于我们是要实现的两个闹钟每天早八点和晚八点,它们是反复的.
  17. * 所以在PendingIntent.getBroadcast()非常easy出错.导致早八点
  18. * 的闹钟无效.主要原因是由于该方法的第四个參数引起的.
  19. * 解决的方法:为BroadcastReceiver设置两个action,在生成Intent
  20. * 的时候採用了不同的action,从而让两个闹钟都起作用.
  21. * 假设有更好的方式请留言指出,多谢.
  22. * 2 在calendar.set(Calendar.HOUR_OF_DAY, 8)方法的第二个參数
  23. * 表示小时,请依照24小时制式填写.不用管此时设备採用什么时间
  24. * 制式(12小时或24小时)
  25. *
  26. * 參考资料:
  27. * 1 http://blog.csdn.net/hudashi/article/details/7060837
  28. * 2 http://blog.csdn.net/wdaming1986/article/details/6745655
  29. * 3 http://blog.csdn.net/z1074971432/article/details/17532139
  30. * Thank you very much
  31. *
  32. */
  33. public class MainActivity extends Activity {
  34.  
  35. @Override
  36. protected void onCreate(Bundle savedInstanceState) {
  37. super.onCreate(savedInstanceState);
  38. setContentView(R.layout.main);
  39. sendAlarmEveryday1(this);
  40. sendAlarmEveryday2(this);
  41. }
  42.  
  43. private void sendAlarmEveryday1(Context context){
  44. AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
  45. Calendar calendar =Calendar.getInstance(Locale.getDefault());
  46. calendar.setTimeInMillis(System.currentTimeMillis());
  47. calendar.set(Calendar.HOUR_OF_DAY, 8);
  48. calendar.set(Calendar.MINUTE, 30);
  49. calendar.set(Calendar.SECOND, 0);
  50. calendar.set(Calendar.MILLISECOND, 0);
  51.  
  52. Intent intent = new Intent();
  53. intent.setAction("testalarm0");
  54. PendingIntent pendingIntent=PendingIntent.getBroadcast(context,0, intent,PendingIntent.FLAG_CANCEL_CURRENT);
  55. alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pendingIntent);
  56. }
  57.  
  58. private void sendAlarmEveryday2(Context context){
  59. AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
  60. Calendar calendar =Calendar.getInstance(Locale.getDefault());
  61. calendar.setTimeInMillis(System.currentTimeMillis());
  62. calendar.set(Calendar.HOUR_OF_DAY, 20);
  63. calendar.set(Calendar.MINUTE, 30);
  64. calendar.set(Calendar.SECOND, 0);
  65. calendar.set(Calendar.MILLISECOND, 0);
  66.  
  67. Intent intent = new Intent();
  68. intent.setAction("testalarm1");
  69. PendingIntent pendingIntent=PendingIntent.getBroadcast(context,0, intent,PendingIntent.FLAG_CANCEL_CURRENT);
  70. alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pendingIntent);
  71. }
  72.  
  73. }

AlarmBroadcastReceiver例如以下:

  1. package cc.cc;
  2.  
  3. import android.content.BroadcastReceiver;
  4. import android.content.Context;
  5. import android.content.Intent;
  6.  
  7. public class AlarmBroadcastReceiver extends BroadcastReceiver {
  8. @Override
  9. public void onReceive(Context context, Intent intent) {
  10. if ("testalarm0".equals(intent.getAction())) {
  11. System.out.println("第一个闹钟");
  12. }
  13.  
  14. if ("testalarm1".equals(intent.getAction())) {
  15. System.out.println("第二个闹钟");
  16. }
  17.  
  18. }
  19.  
  20. }

AndroidManifest.xml例如以下:

  1. <?xml version="1.0" encoding="utf-8"?
  2.  
  3. >
  4. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  5. package="cc.cc"
  6. android:versionCode="1"
  7. android:versionName="1.0" >
  8.  
  9. <uses-sdk
  10. android:minSdkVersion="10"
  11. android:targetSdkVersion="10" />
  12.  
  13. <application
  14. android:allowBackup="true"
  15. android:icon="@drawable/ic_launcher"
  16. android:label="@string/app_name"
  17. android:theme="@style/AppTheme" >
  18. <activity
  19. android:name="cc.cc.MainActivity"
  20. android:label="@string/app_name" >
  21. <intent-filter>
  22. <action android:name="android.intent.action.MAIN" />
  23.  
  24. <category android:name="android.intent.category.LAUNCHER" />
  25. </intent-filter>
  26. </activity>
  27.  
  28. <receiver android:name="cc.cc.AlarmBroadcastReceiver">
  29. <intent-filter >
  30. <action android:name="testalarm0"/>
  31. <action android:name="testalarm1"/>
  32. </intent-filter>
  33. </receiver>
  34.  
  35. </application>
  36.  
  37. </manifest>

main.xml例如以下:

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:paddingBottom="@dimen/activity_vertical_margin"
  6. android:paddingLeft="@dimen/activity_horizontal_margin"
  7. android:paddingRight="@dimen/activity_horizontal_margin"
  8. android:paddingTop="@dimen/activity_vertical_margin"
  9. tools:context=".MainActivity" >
  10.  
  11. <TextView
  12. android:layout_width="wrap_content"
  13. android:layout_height="wrap_content"
  14. android:text="@string/hello_world" />
  15.  
  16. </RelativeLayout>

Android反复闹钟(每天)的实现的更多相关文章

  1. Android 实现闹钟功能

      原文地址:Android 实现闹钟功能作者:Android_Learners 一.手机闹钟主要用到了AlarmManager类,AlarmManager类提供了访问系统定时服务的途径,开发人员可以 ...

  2. 基于Android的闹钟的软件

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

  3. Xamarin.Android 反复报 Please Download android_m2repository_rxx.zip 的解决办法

    我原来一直用的是老版本的 Xamarin , android_m2repository_rxx.zip 早已在 C:\Users\XXX\AppData\Local\Xamarin\Android.S ...

  4. Android 小闹钟程序

    最近写了个闹钟的程序,看到SharedPreferences在一个程序中可以共享数据,SharedPreferences是一个轻量级的键值存储机制,只可以存储基本数据类型.我就拿来用用,没想到Shar ...

  5. Android 获取闹钟引发的血案

    想做一个锁屏的软件.锁屏后可以显示闹钟信息. 一开始的思路是通过android content provider获取 mActivityObject.getContentResolver().quer ...

  6. Android简单闹钟设置

    利用AlarmManager实现闹钟设置 //设置本地闹钟,actiongString:闹钟标识 setLocAlarm(int week, String actionString) { Calend ...

  7. Android 在闹钟开机时,如何解决开机动画没有播完就进入Launcher M

    前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net        ...

  8. Android 画闹钟

    1.今天就来模仿一下这个小闹钟的 2.思路: 先画闹钟的圆盘 ,在通过Path来画指针 两个耳朵其实就是用两个圆被一个大圆截取后留下的,并旋转一定度数后生成 3.直接上代码: public class ...

  9. Android闹钟设置的解决方案

    Android设置闹钟并不像IOS那样这么简单,做过Android设置闹钟的开发者都知道里面的坑有多深.下面记录一下,我解决Android闹钟设置的解决方案. 主要问题 API19开始AlarmMan ...

随机推荐

  1. net core 使用ef生成实体类(SqlServer)

    1)打开程序包管理器控制台 2)输入命令  Install-Package Microsoft.EntityFrameworkCore.SqlServer 3)输入命令  Install-Packag ...

  2. 在window下搭建即时即用的hyperledger fabric 的环境

    有版本号的严格按要求,遇到不少坑 1)安装git  版本无要求 2)安装go  1.9   配置环境变量 3)安装Vagrant  1.9.4 4)安装VirtualBox  5.1.28 5)在go ...

  3. web中的$多种意思

    $符号在php中是表示变量的特征字符, 在js中它也有很多作用, 一般我们用来命名一个函数名称,获取id的1.首先可以用来表示变量, 比如变量 var s='asdsd'或var $s='asdasd ...

  4. More Effective C++ - 章节一 : 基础议题

    1. 仔细区分 pointers 和 references references和pointers的差别描述如下: pointer:当需要考虑"不指向任何对象"时,或者是考虑&qu ...

  5. UVa-1585-得分

    #include <stdio.h> #include <string.h> int main() { char s[100]; int T; scanf("%d&q ...

  6. MySQL数据库文件

    MySQL数据库文件 本文档从MySQL数据库和存储引擎层面介绍各种类型的文件. 参数文件(my.cnf) 错误日志(error log) 二进制日志文件(binary log) 慢查询日志(slow ...

  7. django1.11 启动错误:Generator expression must be parenthesized

    错误信息: Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0 ...

  8. python之tkinter变量设置 2014-4-9

    python 可以自己定义变量以及变量类型mystring = StringVar(ticked_yes = BooleanVoption1 = IntVar()volume = DoubleVar( ...

  9. CSS选择器定位的使用

    CSS 可以比较灵活选择控件的任意属性,一般情况下定位速度要比XPath 快,但对于初学者来说比较难以学习使用,下面我们就详细的介绍CSS 的语法与使用.一.CSS 选择器的常见语法: 例如下面一段代 ...

  10. INFO main org.springframework.context.support.AbstractApplicationContext

    原因, spring-framework-5.0.2.RELEASE  需要使用 jdk8.