这个是

private void setLocked(int type, long when) {

if (mNativeData != 0) {
            // The kernel never triggers alarms with negative wakeup times
            // so we ensure they are positive.
            long alarmSeconds, alarmNanoseconds;
            if (when < 0) {
                alarmSeconds = 0;
                alarmNanoseconds = 0;
            } else {
                alarmSeconds = when / 1000;
                alarmNanoseconds = (when % 1000) * 1000 * 1000;
            }
            
            set(mNativeData, type, alarmSeconds, alarmNanoseconds);
        } else {
            Message msg = Message.obtain();
            msg.what = ALARM_EVENT;
            
            mHandler.removeMessages(ALARM_EVENT);
            mHandler.sendMessageAtTime(msg, when);
        }

}

setLocked()内部会调用native函数set():

[java] view plaincopy
  1. private native void set(int fd, int type, long seconds, long nanoseconds);

重新设置“实体闹钟”的激发时间。这个函数内部会调用ioctl()和底层打交道。具体代码可参考frameworks/base/services/jni/com_android_server_AlarmManagerService.cpp文件:

[java] view plaincopy
  1. static void android_server_AlarmManagerService_set(JNIEnv* env, jobject obj, jint fd,
  2. jint type, jlong seconds, jlong nanoseconds)
  3. {
  4. struct timespec ts;
  5. ts.tv_sec = seconds;
  6. ts.tv_nsec = nanoseconds;
  7. int result = ioctl(fd, ANDROID_ALARM_SET(type), &ts);
  8. if (result < 0)
  9. {
  10. ALOGE("Unable to set alarm to %lld.%09lld: %s\n", seconds, nanoseconds, strerror(errno));
  11. }
  12. }

转载于:https://www.cnblogs.com/muhuacat/p/5261100.html

rtc关机闹钟6 AlarmManagerService研究相关推荐

  1. java rtc alarm_rtc关机闹钟4 AlarmManagerService.java

    vim base/services/core/java/com/android/server/AlarmManagerService.java AlarmManager 调用 IAlarmManage ...

  2. 中国实时时钟(RTC)模块市场深度研究分析报告

    [报告篇幅]:113 [报告图表数]:151 [报告出版时间]:2021年9月 报告摘要 2020年中国实时时钟(RTC)模块市场规模达到了 亿元,预计2027年可以达到  亿元,未来几年年复合增长率 ...

  3. mysql自定义函数的分号_MySQL之自定义函数实例讲解

    转自:https://www.2cto.com/database/201804/740205.html MySQL中已经有很多函数,如时间函数等,但是有时这些函数不能满足自己的设计需求,此时需要自定义 ...

  4. pycharm如何更改python项目环境_PyCharm如何导入python项目,并配置虚拟环境

    rtc关机闹钟7 jni层 com_android_server_AlarmManagerService frameworks/base/services/core/jni/com_android_s ...

  5. 声网高纯:领域和方向要聚焦,用最专业的方法做最专业的事丨人物专访

    前言 本期「声网开发者 x 人物专访」的受访者,是声网高级架构师 @高纯. 高纯是 W3C 组织的 AC REP(Advisory Committee Representative),还是一名管乐爱好 ...

  6. 展讯平台功耗调试记录

    展讯平台功耗调试记录 1.查看应用持有锁:dumpsys power | grep LOCK 2.查看内核持有锁:cat /d/wakeup_sources 休眠后查看唤醒源:串口 log 打印 Wa ...

  7. 马志强:语音识别技术研究进展和应用落地分享丨RTC Dev Meetup

    本文内容源自「RTC Dev Meetup 丨语音处理在实时互动领域的技术实践和应用]的演讲分享,分享讲师为寰语科技语音识别研究主管马志强. 01 语音识别技术现状 1.语音成为万物互联时代人机交互关 ...

  8. 嵌入式Linux初始化硬件RTC,嵌入式Linux系统中的快速启动技术研究

    嵌入式Linux系统主要特点在于使用Bootloader替代了桌面系统的BIOS,同时对系统进行了规模上的裁剪,但硬件上的劣势往往导致系统启动速度较慢,而嵌入式产品使用者又对系统的开机速度比较敏感,样 ...

  9. wk一sm5时间温度控制器_Android RTC 自下而上分析

    作者:邹南, 在Android中,定时alarm功能是很常用的,现在来分析下怎么实现的,这里将采用自下而上的方式讲解. arm: cortex-a8 Board: FS_S5PC100 Linux: ...

最新文章

  1. 高德地图多边形覆盖物添加、获取、删除
  2. VMware下ghost安装XP后无法从硬盘启动的问题
  3. ubuntu系统安装和配置
  4. 10个Flex MVC 框架(转)
  5. LeetCode 142. 环形链表 II(链表环的检测)
  6. 哪一类人用苹果手机最多?
  7. 使用 PDO 方式将 Session 保存到 MySQL 数据中
  8. iphone怎么长截屏_涨知识了!原来苹果手机也可以长截屏,还不知道的,快来学一学...
  9. c语言中文网pdf免费下载,C语言中文网VIP教程11.9.pdf
  10. Excel文件下载From Linux
  11. IBM刀片服务器虚拟化方案
  12. 计算机基础表格函数基础知识大全,计算机基础-EXCEL公式和函数
  13. 为什么产品经理都在学画原型?
  14. (五)学习笔记:软件管理rpm、dnf软件仓库搭建与管理
  15. Ubuntu2Go制作使用和资料说明(LinuxtoGo)
  16. python写网络爬虫编程环境设置
  17. 云计算基础架构 (三)Mongodb
  18. 水货iPad 2价格骤降数千元
  19. 鱼C论坛小甲鱼Python课后题
  20. knn分类算法实现手写体数字识别python

热门文章

  1. php点选按钮ajax,php – 在单选按钮上显示div中的数据单击ajax
  2. mysql编辑工具wf_轻松构建自定义WF设计器
  3. Java程序员的春天!java引用数据类型和基本数据类型区别
  4. python【蓝桥杯vip练习题库】ALGO-91 Anagrams问题
  5. idea server日志乱码_IDEA高级玩法:集成JIRA、UML类图插件、SSH、FTP、Database管理
  6. at指令 fpga_FPGA毕设系列 | 无线通信
  7. matlab toolbox下载_Matlab自动导出高质量无变形论文插图
  8. 成都网络推广告诉大家网站抓取量要如何解决?
  9. 网络广告推广浅析网站中的关键词密度要如何控制呢?
  10. 长沙网络推广教你如何在网站优化中让URL标准化?