如前一篇博文所分析,咱們能夠使用廣播的形式在快速按下兩次音量下鍵的時候發出廣播,以方便客戶端進行捕捉。既然有兩種方式能夠實現該Issue那麼哪一種方式是首選呢?
我我的推薦使用啓動服務的方式,這樣的話能夠避免屢次連續按鍵致使重複發送廣播,而使用服務不會重複啓動服務。
具體實現方式以下:
/framework/base/policy/src/com/android/policy/impl/PhoneWindowManager.java
private long lastTime=0;
public int interceptKeybeforeQueueing(KeyEvent event,int policyFlags,boolean isScreenOn){
if(event.getKeyCode()==KeyEvent.KEYCODE_VOLUME_DOWN && event.isDwon()){
if(isKeyguardLocked()){
if((System.currentTimeMillis()-lastTime) < 800){
Intent intent=new Intent();
ComponentName component=new ComponentName("com.xxx.xxx", "com.xxx.xxx.SnapshotService");
intent.setComponent(component);
mContext.startService(intent);
}
lastTime=System.currentTimeMillis();
}
}
......
}