android增加来电闪光灯功能吗,安卓关于来电与短信闪光灯功能研究

41413e7027ffa026ba737eccea21484e.gif

手机来电或者通话时闪烁的LED效果,比较绚丽,找了机会,研究了一下。。

一 .  分析过程

1.  既然是闪光,那肯定是跟Light有关系了,于是乎,找到了一个LightService.java的文件,实现了IBinder接口,可以用于进程间通信。看起来好像是找到了  !  如下:

public class LightsService  extends ILightService.Stub {},

但是突然失望的发现,这个对象在安卓系统中并没有公布它的系统服务接口。。 换句话说,我们不能通过

getSystemService(String service_name) 的方式来获取它的引用(Context.jva里面并没有这个服务的字符串)。所以得找另外的方法。

2.  继续寻找哪里有个系统的引用。。好的好的,在SystemServer.java,这个专门用于拉起系统服务的类中,我们找到了这样的代码 lights = new LightsService(context); 是的,它就是在这里实例化的。然后继续调用

Slog.i(TAG, "Notification Manager");

notification = new NotificationManagerService(context, statusBar, lights);

嗯!没错,它被防到通知服务里面去了。^_^, 这个服务我们是可以获取到滴!

NotificationManager notify =(NotificationManager)  getSystemService(Context.NOTIFICATION_SERVICE);

然后我们就可以通过NotificationManager来控制Led灯了!

3.  继续研究NotificationManagerService.java类,终于发现它里面有个BroadCastReceiver, 在onReceive方法里面有这样的代码:

else if (action.equals(TelephonyManager.ACTION_PHONE_STATE_CHANGED)) {

mInCall = (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(

TelephonyManager.EXTRA_STATE_OFFHOOK));

updateNotificationPulse();

}

我们都知道, 当电话状态发生改变的时候,我们会发出TelephonyManager.ACTION_PHONE_STATE_CHANGED的广播。

然后这里慢慢进去,就是调用到LightService里面的一些东东了,LightService里面有些本地方法。下面的就是底层做的事情了。

不过,当然,这得咱们的手机支持Led灯才可以呀!

随手所记, 不知所云, ^_^

+5

原创内容

2012-12-29 20:50

分享至:

90ed4b13fe016cebd9fe3df2ae3a899b.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值