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

闹铃信息采集

闹铃时间,闹铃备注信息

闹铃引起系统变化的点:

1. Send Notification

2. Play Ring

闹铃信息结构体

ClockInfo{

String apkName;

String startTime;

String backup;

boolean isPlayingRing;

}

SendNotification

SystemUI

BaseStatusBar.java

解析ExpandedView,获取Clock发送的Notification.因为在BaseStatusBar里显示Notification时,不能够确认是否在播放铃声,所以isPlaying=false.将获取的Clock information 通过广播发送到服务端.

闹铃信息:{

apkName;

startTime=****;

backup=****;

isPlayingRing=false;

}

Play Ring

MediaPlayer

MediaPlayer.java

当产生Clock时,会调用MediaPlayer.start()方法播放铃声。在调用start()方法里,创建ClockInfo,然后通过广播发送到服务端。

闹铃信息{

apkName=**;

startTime=****;

backup=Empty;

isPlayingRing=true;

}

为什么需要在两个地方创建ClockInfo?

1.正点闹钟可以设置不发送Notification。这时只能获取到它调用MediaPlayer.start()方法。

2.调用MediaPlayer.start()方法不能获取到Notification的内容。为了尽量获取到Clock的backUp信息,需要同时在StatusBar里获取ClockInfo。

3.正点闹钟和即时提醒会在StatusBar中显示下一个闹钟,此时并不是闹铃事件。所以需要同时根据MediaPlayer.start()产生的闹铃信息判断。

存储结果

服务端接收到收集Clock information的广播后,解析里面的clock information,并存储到Local database.

Media start

apkName =**, startTime=***,backup= ,isPlayingRing=true;

StatusBar

apkName=**, startTime=***, backup=****,isPlayingRing=false;

当存储StatusBar发送的ClockInfo时,会判断:

一定时间间隔内是否存在 apkName=** and backup=Empty andisPlayingRing=true;

如果存在

更新已经存在的backup内容。

当存储Media发送的ClockInfo时,会判断:

一定时间间隔内是否存在apkName=** and backup !=Empty andisPlayingRing=false;

如果存在设置isPlaying=true;

Android获取第三方闹钟的闹铃信息,布布扣,bubuko.com

时间: 2024-12-28 22:20:52

Android获取第三方闹钟的闹铃信息的相关文章

Android获取第三方音乐播放器的音乐信息

最近在做Android手机获取第三方音乐播放器的音乐信息.一开始头疼的很,采集第三方的信息太难了,后面看了一遍博文是关于怎么监听系统的音乐播放信息,发现在播放下一首音乐的时候会发送广播,广播会包含下一首信息. Android系统的音乐播放器会发送: com.android.music.metachanged 那怎么获取第三方的音乐信息? 先反编译了QQ音乐的Apk, 找到它关于player的service,发现里面用的就是"com.android.music.metachaged" 接

Android获取手机和系统版本等信息的代码

有时候需要统计手机的型号和版本号,利用程序可以获取到相应的手机信息,对比两部手机发现,厂商不同,某个信息显示方式也不尽相同,具体见: 1 String phoneInfo = "Product: " + android.os.Build.PRODUCT; 2 phoneInfo += ", CPU_ABI: " + android.os.Build.CPU_ABI; 3 phoneInfo += ", TAGS: " + android.os.B

android 获取 imei号码 以及其他手机信息

核心代码: Imei = ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)) .getDeviceId(); 1.加入权限 在manifest.xml文件中要添加 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 2.代码 /** * * *创建日期 2010-4-29 下午05:02:47 * */ package ne

android 获取屏幕尺寸,密度等信息

摘选自 http://blog.csdn.net/chenguang79/article/details/9222817 DisplayMetrics dm = new DisplayMetrics(); dm = getResources().getDisplayMetrics(); float density = dm.density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0) int densityDPI = dm.densityDpi; // 屏幕密度(每寸像素:12

判断是否在播放闹铃

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

Android Twitter第三方登录&amp;获取用户信息

Android接入Twitter先是去了Twitter的开发者网站,发现太麻烦,不太适用目前项目,转而接入了Twitter为java提供的twitter4j的jar包. 以下为接入Twitter4j的一些经验 官网地址:http://twitter4j.org/en/index.html#sourceCode 其中提供了jar包下载链接 Download 分为两个版本 ?Latest stable version (稳定版) ?Latest snapshot build (快照版) 快照版应该是

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

Android获取Exif信息

获取Exif信息 代表的是文件的头信息; 步骤: 步骤一: // 获取指定的文件的头信息对象 ExifInterface exif = new ExifInterface("/sdcard/x.jpg"); 步骤二: 获取指定的头信息: // 获取指定的信息 // 获取拍摄时间 String time =exif.getAttribute(ExifInterface.TAG_DATETIME); System.out.println("拍摄时间是:===" + ti

android获取周围AP信息

1.增加权限: 由于此应用需要获取手机的网络信息,wifi信息,因此需要在AndroidManifest.xml文件中添加相关权限,否则会报permission deny错误: 1 <uses-permission android:name="android.permission.INTERNET"/> 2 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE">