android 关机闹钟 实现,android 关机闹钟
今天看了下关于关机闹钟的问题,网上看了下资料,对关机闹钟的基本流程大致也算是了解了,
所以就梳理一下
1 启动过程
android有两个闹钟 一个是软件实现的闹种,一个硬件实现的rtc的闹钟
系统关机的时候就通过rtc来通知alarmserver,alarmserver再进行管理,查找,并发送到时间的广播
2 关机时注意点
如果是关机闹铃的话,alarmserver里面保存的队列等都将丢失,所以要到数据库中从新初始化alarmserver。要先主曾系统开机的广播,在系统开机的时候在
上层调用setnextalarm就行了。由此看来刚才出现的标签丢失,关机闹铃无法启动后snooze应该是应用层的,经过验证,发现是机器启动后会把之前的snooze的操作给清除掉,所以我把这一步给关了,也验证通过了。
而另个标签的问题,至今也没有搞定,只是在layout里面加了个假的替代,后来在activitymanager里面居然找到了 控制这个显示的窗口 这个窗口直接设置了 无标题
所以怎么着都无法设置了 。
不明白里面只要从关机闹钟中起来后settitle方法就无用了,虽然能拿到那个内容,但就是不显示title,也就是活关机闹铃启动的时候
应该是改变了title的参数,导致他不能设置title,看了下alrammanagerservice的内容,还是没找到关于这个参数的变化,算了,不找了,替代方案也可以
等以后对系统熟悉后应该会明白原因吧
问题。
以下是粗略的模仿闹钟的工作过程
Android 闹钟机制实现定时任务 复制下来以便后来用
1. 设置闹铃时间(毫秒)
1
private void setAlarmTime(Context context,longtimeInMillis) {
2
AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
3
Intent intent =newIntent(”android.alarm.demo.action“);
4
PendingIntent sender = PendingIntent.getBroadcast(
5
context,0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
6
intinterval =60*1000;//闹铃间隔, 这里设为1分钟闹一次,在第2步我们将每隔1分钟收到一次广播
7
am.setRepeating(AlarmManager.RTC_WAKEUP, timeInMillis, interval, sender)
8
} 2. 接收闹铃事件广播
1
public class AlarmReceiverextendsBroadcastReceiver {
2
publicvoidonReceive(Context context, Intent intent) {
3
if(”android.alarm.demo.action“.equals(intent.getAction())) {
4
//第1步中设置的闹铃时间到,这里可以弹出闹铃提示并播放响铃
5
//可以继续设置下一次闹铃时间;
6
return;
7
}
8
}
9
} 当然,Receiver是需要在Manifest.xml中注册的:
1
2
3
4
5
3. 重开机后重新计算并设置闹铃时间当然要有一个BootReceiver:
1
public class BootReceiverextendsBroadcastReceiver {
2
publicvoidonReceive(Context context, Intent intent) {
3
String action = intent.getAction();
4
if(action.equals(Intent.ACTION_BOOT_COMPLETED)) {
5
//重新计算闹铃时间,并调第一步的方法设置闹铃时间及闹铃间隔时间
6
}
7
}
8
} 广播都是需要注册的
android 关机闹钟 实现,android 关机闹钟相关推荐
- android 关机闹钟 实现,安卓关机闹钟:你所不知道的关机闹钟的背后
可以通过其他方式实现关机闹钟 事实上大家也大可不必抱怨Android手机或者是iPhone的固执做法,因为目前在Android手机当中,全新的"明"系列摩托罗拉A1680就已经支持 ...
- android layout组件,Android UI学习 - Linear Layout, RelativeLayout
1.一些常用的公共属性介绍 1) layout_width -宽 fill_parent: 宽度和父元素相同,wrap_content: 宽度随本身的内容所调整,或者指定 px值来设置宽 2) lay ...
- android:layout_gravity 和 android:gravity 的区别
gravity 这个英文单词是重心的意思,在这里就表示停靠位置的意思. android:layout_gravity 和 android:gravity 的区别 从名字上可以看到,android:gr ...
- Android横向伸缩,Android 实现伸缩布局效果示例代码
最近项目实现下面的图示的效果,本来想用listview+gridview实现,但是貌似挺麻烦的于是就用flowlayout 来addview实现添加伸缩的效果,实现也比较简单. mainActivit ...
- android ble 设备扫描程序,Android应用开发Android 7.0 BLE scan 问题:程序无错但扫描不到BLE设备...
本文将带你了解Android应用开发Android 7.0 BLE scan 问题:程序无错但扫描不到BLE设备,希望本文对大家学Android有所帮助. < 最近在做毕设,需要几周内从头学起 ...
- android window 大小,android popupWindow 中宽度莫名很大,求帮助?
这个是popupwindow的内容xml(就是放了个ListView): android:layout_width="wrap_content" android:layout_he ...
- android radiobutton 分组,Android 第十课——UI RadioButton
常用基础空组件 5 RadioGroup RadioButton 单选按钮时常用组件之一,但是开发过程中虽然很多地方会用到单选按钮,但是却不会用Android系统提供的原始样式,类似我们在写html时 ...
- android单线字体,Android自定义字体
在main文件夹下,新建assets/fonts文件,添加.otf文件 image.png 字体工具类 import android.app.Application; import android.g ...
- mp4 android自动播放,Android 使用VideoView播放MP4的简单实现
使用VideoView播放MP4 播放示例 实现简单的播放功能,播放手机本地的MP4文件.不依赖任何第三方框架,不添加任何防腐剂. 添加一个系统自带的控制条. 申请权限 读取存储中的MP4文件 准备布 ...
- android 虚方法,尝试在空对象引用上调用虚方法’android.view.View android.view.View.getRootView()’...
我收到这个错误, "Attempt to invoke virtual method 'android.view.View android.view.View.getRootView()' ...
最新文章
- 计算机游戏和传统游戏的区别是什么,电竞显示器与普通显示器有什么区别-电脑自学网...
- 跑得好好的Java进程,怎么突然就瘫痪了?
- php 调用openoffice,PHP调用OpenOffice实现word转PDF的方法
- SpringBoot2.1.5 (21)---使用 devtools 热部署
- (2) python 使用pd.read_excel 读取excel时,选取某一列为索引
- LINUX tar解压到指定目录
- 大数据平台层级架构图
- 分布式游戏服务器设计
- firefox火狐浏览器开启backdrop-filter高斯模糊
- PCIe Receiver内部恢复时钟与本地时钟
- 文墨绘学任何事物都是发展变化的
- 名帖108 鲜于枢 行楷《麻徵君透光古镜歌》
- php画梯形,利用css来画出各种样式不同的梯形,html中梯形外框怎么做
- VG、PV、PP、LV、LP
- 彩票开奖结果查询接口介绍
- Elixir GenServer
- 产品经理修炼需要注意的七个点
- git 撤销上次commit提交
- 利用python实现 CAD STEP格式转化为STL格式--update 对整个文件夹下的所有文件进行转换格式
- 【计算机图形学】c++ OpenGL Sutherlang-Hodgman 多边形裁剪