关于Android的闹钟

Android的闹钟依赖两个组件。一个是AlarmManager一个是Calendar。

先说Calendar,Calendar是一个非常方便的时间日期管理容易,它存放了日期时间信息,并且可以以各种体位set和get。

Calendar的使用可以分为以下几步

1、获得Calendar实例

     Calendar calendar  = Calendar.getInstance();

2、设置或者获得日期+时间

        calendar.set(Calendar.HOUR_OF_DAY,3);
        calendar.set(Calendar.YEAR,3);
        int minute = calendar.get(Calendar.MINUTE);
        int month = calendar.get(Calendar.MONTH)+1; 

  值得注意的是,在Calendar中get的MONTH是需要+1的。

总之你通过这个得到了一个日期+时间的数据了,现在,你要用这个数据开始设置闹钟。

  首先,我们可以想象,在闹钟时间到时,一定有一个动作。开发者通过这个动作,为闹钟响应设计行为(如打开屏幕,响起烦人的起床音乐等等)。所以我们似乎需要一个Intent。这个Intent可以打开Activity,打开Service或者发个广播。但是,这还不够。因为开发者实际上不知道这个Intent何时会发动,这完全取决于用户。因此我们需要一个PendingIntent对Intent进行包装。假设我在A.activity中设置闹钟,希望在闹钟响起时打开B.activity。我可以进行如下设置:

        AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
        Intent intent = new Intent(A.this,B.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(A.this , id , intent , 0);
        alarmManager.set(AlarmManager.RTC_WAKEUP , calendar.getTimeInMillis() , pendingIntent);

  其中RTC_WAKEUP这个闹钟类型,表示闹钟即使在手机休眠情况下依然会唤醒手机。calendar.getTimeInMillis()即是用户设置的闹钟时间。pendingIntent即是开发者为闹钟设计的唤醒后的动作,本例为开启B.activity。

  其中PendingIntent的设置中的id非常令人在意。有些教程将它直接设为0,似乎闹钟也能正常工作。

  其实不然!通过查阅资料了解,如果将id直接设为0,闹钟将只能设置一个,后面设置的闹钟将覆盖前面设置的闹钟。因此,开发者在设计闹钟时,一定要给每个闹钟设置一个id用以区别它们,否则将会引起PendingIntent的覆盖问题。

  以上~

时间: 2024-08-26 14:15:50

关于Android的闹钟的相关文章

基于Android的闹钟的软件

一.本课题要求:设计一个基于Android的闹钟的软件. 实现的功能有:能通过界面设置闹钟的启动条件建立后台服务进程,当满足触发条件时,闹钟响应相应事件. 二.需求分析 该课题实现在手机操作系统Android闹钟提醒功能,携带方便,使用起来灵活.快捷.省心,是一款实用的手机软件.“手机闹钟”可以在后台运行,且能和普通闹钟一样设置多个位置闹铃,有良好的人机交互界面,可对其编辑.启用或禁用,关键在于可以自定义设置取消闹钟的操作. (1)系统体系结构包括:添加闹铃.设置时间.重复等,闹铃提醒方式,返回

Android重复闹钟(每天)的实现

MainActivity如下: package cc.cc; import java.util.Calendar; import java.util.Locale; import android.os.Bundle; import android.app.Activity; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import androi

Android AlarmManager闹钟实现

什么是AlarmManager? AlarmManager是Android中常用的一种系统级别的提示服务,在特定的时刻为我们广播一个指定的Intent.简单的说就是我们设定一个时间,然后在该时间到来时,AlarmManager为我们广播一个我们设定的Intent,通常我们使用 PendingIntent,PendingIntent可以理解为Intent的封装包,简单的说就是在Intent上在加个指定的动作.在使用Intent的时候,我们还需要在执行startActivity.startServi

android Alarm闹钟发送广播播放音乐

通过网上的例子  自己根据相关功能修改的  如有不合理的地方  请提出来  互相学习 一共有3个类 MainActivity.java 主程序 AlarmReceiver.java 广播接收器 MusicService.java service播放音乐 MainActivity.java package com.yqy.yqy_alarm; import java.util.Calendar; import android.app.Activity; import android.app.Ala

Android基础——闹钟

有两个活动:一个是Main,用来设定闹钟,另一个是闹钟到点提示的活动Alarm Main布局文件 <?xml version="1.0" encoding="utf-8"?> <TimePicker xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto&q

Android 画闹钟

1.今天就来模仿一下这个小闹钟的 2.思路: 先画闹钟的圆盘 ,在通过Path来画指针 两个耳朵其实就是用两个圆被一个大圆截取后留下的,并旋转一定度数后生成 3.直接上代码: 1 public class AlarmClockView extends View { 2 3 private static final PorterDuff.Mode MODE = PorterDuff.Mode.DST_OUT; 4 /** 5 * 屏幕适应性参数 6 */ 7 private static fina

Android之闹钟(AlarmManager)实例

有图有真相: 点击按钮进行闹钟提示: 设置闹钟时间: 时间到了变化提醒. 源代码下载地址:(四个下载地址,总有一个能够下载) http://www.400gb.com/file/90502625 http://zfl33.7958.com/down_19701966.html http://qiannao.com/file/zfl33/c616faff/ http://d.119g.com/f/1CA4662B4C1EC978.html

Android闹钟设置的解决方案

Android设置闹钟并不像IOS那样这么简单,做过Android设置闹钟的开发者都知道里面的坑有多深.下面记录一下,我解决Android闹钟设置的解决方案. 主要问题 API19开始AlarmManager的机制修改. 应用程序被Kill掉后,设置的闹钟不响. 6.0以上进入Doze模式会使JobScheduler停止工作. 手机设置重启后,闹钟失效问题. API19以上AlarmManager机制的修改 API19之前AlarmManager提供了三个设置闹钟的方法,由于业务需求闹钟只需要一

Android开发之闹钟

闹钟开发: 1.需要时间选择器TimePicker 2.需要Calendar类对日期时间进行操作 3.需要AlarmManager//闹钟管理实质是一个全局定时器, 是Android中常用的一种系统级别的提示服务,在指定时间或周期性启动其它组件(包括Activity,Service,BroadcastReceiver). 4.PendingIntent的理解 PendingIntent 可以看作是对intent的包装,通常通过getActivity,getBroadcast ,getServic