Android 设置闹铃步骤和基础代码

主要分三步:

1. 设置闹铃时间;

2. 接收闹铃事件广播;

3. 重开机后重新计算并设置闹铃时间;

1. 设置闹铃时间(毫秒)

private void setAlarmTime(Context context,long timeInMillis) {
  AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
  Intent intent = new Intent(”android.alarm.demo.action“);
  PendingIntent sender = PendingIntent.getBroadcast(
      context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
  int interval = 60 * 1000;//闹铃间隔, 这里设为1分钟闹一次,在第2步我们将每隔1分钟收到一次广播
  am.setRepeating(AlarmManager.RTC_WAKEUP, timeInMillis, interval, sender)
  }

2. 接收闹铃事件广播

public class AlarmReceiver extends BroadcastReceiver {
  public void onReceive(Context context, Intent intent) {
  if (”android.alarm.demo.action“.equals(intent.getAction())) {
    //第1步中设置的闹铃时间到,这里可以弹出闹铃提示并播放响铃
    //可以继续设置下一次闹铃时间;
    return;
  }
  }
}

当然,Receiver是需要在Manifest.xml中注册的:

<receiver android:name="AlarmReceiver">
    <intent-filter>
      <action android:name="android.alarm.demo.action" />
    </intent-filter>
</receiver>

3. 重开机后重新计算并设置闹铃时间 当然要有一个BootReceiver:

public class BootReceiver extends BroadcastReceiver {
  public void onReceive(Context context, Intent intent) {
  String action = intent.getAction();
  if (action.equals(Intent.ACTION_BOOT_COMPLETED)) {
    //重新计算闹铃时间,并调第一步的方法设置闹铃时间及闹铃间隔时间
  }
  }
}

当然,也需要注册:

<receiver android:name="BootReceiver">
    <intent-filter>
      <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

闹钟实现原理其实就这么多,至于具体的细节比如闹铃时间存储及计算, 界面显示及闹铃提示方式,每个人的想法做法都会不一样

时间: 2024-10-10 12:33:03

Android 设置闹铃步骤和基础代码的相关文章

Android实习札记(9)---设置Eclpise为护眼色与代码快速对齐

 Android实习札记(9)---设置Eclpise为护眼色与代码快速对齐 笔者的一些废话:(只是最近心情太差,吐槽下而已~) 感觉好久都没写博客了,看看上一次写博客是11月21号,已经有12天没有写自己的实习札记了, 不是没东西可以,只是最近真的是倒霉透了,一堆麻烦事,根本静不下心来,自己来到公司,第一二 个星期看看文档,写写小demo什么的,还过得去,日子还蛮滋润的,偶尔可以写下博文,但是第三个 星期开始就倒霉透了,因为笔者所在的公司是一间外包公司,可能是他们很久之前接的一个外包吧, 但是

Android获取第三方闹钟的闹铃信息

闹铃信息采集 闹铃时间,闹铃备注信息 闹铃引起系统变化的点: 1. Send Notification 2. Play Ring 闹铃信息结构体 ClockInfo{ String apkName; String startTime; String backup; boolean isPlayingRing; } SendNotification SystemUI BaseStatusBar.java 解析ExpandedView,获取Clock发送的Notification.因为在BaseSt

《Android Studio开发实战 从零基础到App上线》资源下载和内容勘误

http://blog.csdn.net/aqi00/article/details/72907534 http://blog.csdn.net/aqi00/article/details/73065392 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 资源下载 下面是<Android Studio开发实战 从零基础到App上线>一书用到的工具和代码资源:1.本书使用的Android Studio版本为2.2.3,因为Android官网现在不提供该版本的下载,所以博主

Android自定义控件的实现步骤(二)

前天已经写了一个关于自定义控件的实现步骤的博客,这个是附上代码的详细版本 首先,我们得新建一个attrs.xml的资源文件,在上面添加我们将要自定义控件的额外属性,就是自定义控件的自定义属性,具体代码如下: <resources> <declare-styleable name="TestView"> <attr name="textColor" format="color"></attr> <

Unity中加入Android项目的Build步骤

简介: 有的项目需要在Android中加入Unity功能,例如ANDROID应用中嵌入Unity3D视图(展示3D模型) 有的项目需要在Unity中加入Android功能,例如3D语音天气球(源码分享)——创建可旋转的3D球 由于Android中的功能和代码只能当作一个Unity插件,需要在Unity进行最终的Build后生成apk文件运行. 所以无论上面两种情况都涉及了在Unity中加入Android项目的Build步骤: 步骤: 1.确保Android工程代码正确,然后在Eclipse中bu

在Android和iOS设备上调用C++代码

不少Android和iOS项目中,因为种种原因不得不调用C/C++代码.这篇文章主要讲述如何通过Objective-C++.NDK技术在iOS及Android设备上调用C/C++代码. 主要工作原理 主要工作原理,如上图所示.Google Android提供NDK以便支持C/C++代码,而iOS可以通过Objective-C++(*.mm)来支持C/C++代码的编译运行.如果有朋友钻研过Cocos2d-x的话,应该对上述这些内容非常熟悉.好了,废话不多说,开始提供干货. 需要调用的C++代码 我

Android JNI(一)——NDK与JNI基础

本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Native相互调用 Android JNI学习(四)——JNI的常用方法的中文API Android JNI学习(五)——Demo演示 本片文章大纲如下: 1.导读 2.什么是NDK 3.为什么使用NDK 4.NDK到SO 5.JNI 大纲.png 一.导读 在Android OS上开发应用程序,Goog

Android的WebView通过JS调用java代码

做项目时候会遇到我们用WebView 打开一个web,希望这个web可以调用自己的一些方法,比如我们在进一个web页面,然后当我们点击web上的某个按钮时,希望能判断当前手机端是否已经登录,如果未登录,那么就会跳转到登录页面(登陆页面是另一个Activity).这个时候,一个简单的做法就是在按钮动作事件的js上调用java的方法,从而起到判断是否登录,并决定是否跳转到另一个页面. Google的WebView为我们提供了 addJavascriptInterface(Object obj, St

判断是否在播放闹铃

怎么判断系统在播放闹铃? AudioManager里有个方法isMusicActive()来判断当前是否在播放音乐. 对于闹铃呢?目前没找到相关的API. 两种解决方法: 1. 在AudioManager里增加方法,需要改动源码.可以参考Android获取第三方闹钟的闹铃信息 2. 通过反射. 反射的解决方法: /** * Unhide android api: check is stream is active now (AudioManager.STREAM_RING, AudioManag