收集报警信息

闹铃时间,闹铃备注信息

闹铃引起系统变化的点:

1. Send Notification (正点闹钟能够设置不发送)

2. Play audio

闹铃信息结构体

ClockInfo{

String apkName;

String startTime;

String backup;

}

SendNotification

SystemUI

BaseStatusBar.java

在BaseStatusBar获取闹钟发送的notification。由于某些第三方闹钟(比方:正点闹钟)发送的notification并不表示闹铃事件,这时须要推断系统是否正在播放闹铃。

怎样推断系统是否正在播放闹铃:

Android AudioManager.java里有一个方法
/**
    * 
    *Checks whether any music is active.
    * @return true if any music tracks are active.
 */
public boolean isMusicActive() {
       return AudioSystem.isStreamActive(STREAM_MUSIC, 0);
}
用来Checks whether any music is active.
注意AudioSystem.isStreamActive(STREAM_MUSIC,0),这里方法的STREAM_MUSIC參数,用来表示当前stream type.而对于闹铃应用一般的stream type 是STREAM_ALARM.为了
Checks whether any alarm is active 或者check other stream type is active,在AudioManager添加方法:

/**

* Checks whether the specified stream type is active.

*

* return true if this stream is active.

*/

public boolean isStreamActive(intstream){

return AudioSystem.isStreamActive(stream,0);

}

在BaseStatusBar里推断是否在播放闹铃:

AudioManager audioManager =(AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);

if (null == audioManager)

{

Log.e(TAG, "Failed to get AudioManager");

return;

}

if (!audioManager.isStreamActive(AudioManager.STREAM_ALARM)

&& !Common.DIANXIN_PACKAGENAME.equals(currentPackageName))

{

Log.i(TAG,

"Stream not active and current package name isn'tdianxin");

return;

}

使用AudioManager.STREAM_ALARM当做參数来推断是否有Alarm播放。为什么后面还须要加上Common.DIANXIN_PACKAGENAME.equals(currentPackageName)?

由于点心闹钟播放铃声时,STREAM_TYPE不是AudioManager.STREAM_ALARM,检測发现它的Stream type是动态变化的。但点心闹钟仅仅有闹铃的时候才发送notification.

所以依据

if (!audioManager.isStreamActive(AudioManager.STREAM_ALARM)

&& !Common.DIANXIN_PACKAGENAME.equals(currentPackageName))

{

Log.i(TAG,

"Stream not active and current package name isn'tdianxin");

return;

}

我们就能推断出当前是否是在闹铃。

版权声明:本文博主原创文章。博客,未经同意不得转载。

Android得到一个闹钟在第三方相关推荐

  1. ismusicactive副作用_Android得到一个闹钟在第三方

    收集报警信息 闹铃时间,闹铃备注信息 闹铃引起系统变化的点: 1. Send Notification (正点闹钟能够设置不发送) 2. Play audio 闹铃信息结构体 ClockInfo{ S ...

  2. Android开发一个闹钟

    最新2019年10月7日(趁着国庆有时间)更新了一波,界面好看了很多,但还是有很多地方不完善,以后抽时间再次更新 不完善的地方: 不能同时开多个闹钟,这个有点困难,有想法的同学可以告我怎么做 后台程序 ...

  3. 【Android NDK 开发】NDK 交叉编译 ( Ubuntu 中交叉编译动态库 | Android Studio 中配置使用第三方动态库 )

    文章目录 I . 动态库 与 静态库 II . 编译动态库 III. Android Studio 使用第三方动态库 IV . Android Studio 关键代码 V . 博客资源 I . 动态库 ...

  4. android闹钟测试工具,android开发:AlarmManager闹钟管理器的实例

    1.AlarmManager,顾名思义,就是"提醒",是Android中常用的一种系统级别的提示服务,在特定的时刻为我们广播一个指定的PendingIntent.通俗点,就是设置一 ...

  5. (转载)Android studio 导入或依赖第三方库失败

    Android studio 导入或依赖第三方库失败 原文链接 在使用第三方库的时候,需要添加很多仓库,以保证可以能正确快速的下载到我们所需要的类库,但是经常会出现各种问题. 以下为个人问题总结 首先 ...

  6. android迷宫图像生成,Android - 绘制一个迷宫,以平滑的角色移动的画布

    我目前正在创建一个基于Tile的游戏,它基本上使用2套布尔值数组绘制一个迷宫,以确定每个墙壁需要绘制的位置.Android - 绘制一个迷宫,以平滑的角色移动的画布 我有这个所有的工作,因为它应该只有 ...

  7. Android闹钟最终版【android源码闹钟解析】

    我以前写了个复杂闹钟的demo,参见Android闹钟[复杂版][大明进化十五] .但是里面的bug有一些,好多人留言,所以我就看看源码,找找原因?顺便把源码代码整理出来,弄成一个完整的可以运行的ap ...

  8. Win7系统便签怎样设置一个闹钟提醒

    Win7系统便签怎么设置一个闹钟提醒呢?在便签上设置提醒事项,还可以确定任务完成时间,让每一项任务都在规定时间内完成,杜绝拖延快速完成工作.想要在便签上设置提醒,首先要有一款会提醒的便签,还要了解在该 ...

  9. Android Proguard 不混淆所有第三方jar(忽略配置设置)

    今天给大家分享一个只混淆自己的项目代码而不混淆所有第三方jar的方法(没错,是所有的第三方都不进行混淆,无论来什么第三方,都不需要动混淆配置) 不混淆所有第三方重大突破 今天又被同事逼迫看了一下Pro ...

最新文章

  1. RadioGroup,RadioButton 和CheckBox
  2. 在linux中输入locate出现locate: can not stat ()的错误
  3. Hbuilder----安装less插件(详细)
  4. 【转】IOS制作静态库
  5. lnmp化境开启pathinfo,支持tp5.0等访问
  6. javascript测试框架 Mocha 实例教程
  7. activity绑定service
  8. vim使用系列之二——总结一下自己常用的VIM操作
  9. python自定义异常_Python自定义异常
  10. 在线英英词典完整代码
  11. Map转换List一些方法
  12. 音频编码格式——AAC简介
  13. 去掉 新版GeForce Experience 桌面录制视频时的 右上角图标
  14. JAVA中如何计算文具店总费用,文具店的连锁属于。
  15. 国风雅韵之琴瑟(页面文章不知道放哪,于是放CSDN当跳转链接系列QWQ Sorry辣~)
  16. 自己编程实现抖音特效(Python)
  17. 初学者使用pdfmake详细教程
  18. 大数据专业怎么样?是什么?
  19. 红帽认证第一课 安装RHEL 8.X操作系统
  20. elasticsearch 版本 6.6 插入和查询数据

热门文章

  1. Websocket--- long loop--ajax轮询
  2. Python之简单验证码实现
  3. Quartz.Net定时任务EF+MVC版的web服务
  4. Kubernetes容器上下文环境
  5. systemverilog 起步
  6. 英文Ubantu系统安装中文输入法
  7. 使用pm2启动Node和Vue项目教程
  8. qrcode.js 二维码生成器
  9. 面向对象之三大特性:继承,封装,多态
  10. BZOJ2301: [HAOI2011]Problem b(莫比乌斯反演)