Android鎖定螢幕或關閉狀態-screen,高速按兩次音量向下鍵來實現拍攝功能(1.1Framework在實現的形式層廣播)...

weixin_33816946發表於2015-06-09
思想的實現:
    WindowManagerService迴圈讀取下面的關鍵資訊和分發形式。在PhoneWindowManager.interceptKeyBeforeQueueing方法中進行訊息的過濾。

因此該實現方式為在訊息分發前的interceptKeyBeforeQueueing方法中監聽當前按鍵為音量下鍵,假設當前狀態為鎖屏狀態。並按鍵為音量下鍵,且兩次按鍵間隔時間小於800ms時傳送抓拍廣播--"com.bill.snapshot"。


詳細實現方式例如以下:

/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("com.bill.snapshot");
                  mContext.sendBroadcast(intent);
             }
          lastTime=System.currentTimeMillis();
          }
      }
......
}

相關文章