Android按键灯,指示灯总结【Android源码解析十一】
Android中有各种灯,背光灯,按键灯,指示灯,等等;前几天修改了这部分代码,整理下思路,其实都不难;
首先,来说说指示灯(提示灯),即未接电话,未接短信的时候,会闪灯,这个其实就是NotificationManager这个类中的notify()方法来处理的;流程简单来过一下:
Step 1:从应用层发送的notify(),到framework层被NotificationManager.java这个类接受了,来看看这个notify()这个方法:
if ( (newScreenState == DisplayPowerRequest.SCREEN_STATE_BRIGHT) && (mWakefulness == WAKEFULNESS_AWAKE) && !mIPOShutdown && !mShutdownFlag) { if ( ( (mWakeLockSummary & WAKE_LOCK_BUTTON_BRIGHT) != 0 ) || ( (mUserActivitySummary & USER_ACTIVITY_BUTTON_BRIGHT) != 0) ) { mButtonLight.setBrightness(mScreenBrightness); Slog.i(TAG, "setBrightness mButtonLight, mScreenBrightness=" + mScreenBrightness); } else { mButtonLight.turnOff(); Slog.i(TAG, "setBrightness mButtonLight 0 ===."); } } else { mButtonLight.turnOff(); Slog.i(TAG, "setBrightness mButtonLight else 0."); }灯的点亮的方法setBrightness()
灯关闭的方法turnOff()
要想修改按键灯随p-sensor的灯的亮灭同步,可以参考Android4.2中Phone的P-sensor的应用的分析。
然后再加上上述控制灯亮灭的方法就可实现同步;
总结:灯的亮灭最后都会调用到LightsService.java这个类的,最后通过c代码调用底层的接口实现灯的颜色和闪烁的变化的;