android 6.0在關機界面添加截圖功能

在關機界面添加截圖功能,可以參考如下步驟修改實現:

1.步驟

1.1 

 

<string name="global_action_screenshot_xxxx">screenshot</string>
 <string name="global_action_screenshot_xxxx">截屏</string>

 

1.2

 

請注意,爲了保證資源文件能夠被編譯進去,請同步將此資源添加到symbols.xml中。

 

<java-symbol type="string" name="global_action_screenshot" />  

 

2.步驟

 

 在alps\frameworks\base\core\res\res\drawable-hdpi中

ic_lock_screenshot.png

3.步驟

frameworks\base\services\core\java\com\android\server\policy\GlobalActions.java

 

private static final String GLOBAL_ACTION_KEY_SCREENSHOT = "screenshot";

文件中的createDialog()函數中添加:
/**
     * Create the global actions dialog.
     * @return A new dialog.
     */
    private GlobalActionsDialog createDialog() {
     ......
        onAirplaneModeChanged();

        mItems = new ArrayList<Action>();
        String[] defaultActions = mContext.getResources().getStringArray(
                com.android.internal.R.array.config_globalActionsList);

        ArraySet<String> addedKeys = new ArraySet<String>();
        for (int i = 0; i < defaultActions.length; i++) {
            String actionKey = defaultActions[i];
            if (addedKeys.contains(actionKey)) {
                // If we already have added this, don't add it again.
                continue;
            }
           .....
             ////////Added for screenshot items start
            else if (GLOBAL_ACTION_KEY_SCREENSHOT.equals(actionKey)) {
                mItems.add(new ScreenShotAction());
            } 		
             /////////added end          
		......
    }
		
	 private final class ScreenShotAction extends SinglePressAction  {
        private ScreenShotAction() {
            super(com.android.internal.R.drawable.ic_lock_screenshot,
                R.string.global_action_screenshot);
        }

        @Override
        public boolean showDuringKeyguard() {
            return true;
        }

        @Override
        public boolean showBeforeProvisioning() {
            return true;
        }

        @Override
        public void onPress() {
            mWindowManagerFuncs.xxxCaptureScreen();
        }
    }

 

4.步驟

 

 

alps\frameworks\base\core\java\android\view\WindowManagerPolicy.java文件中,
	找到WindowManagerFuncs這個interface的定義,增加如下function的聲明:
public interface WindowManagerFuncs {

         public void xxxCaptureScreen();//

}

 

5.步驟

 

 

alps\frameworks\base\core\java\android\view\WindowManagerPolicy.java文件中在最後,增加如下function的聲明:
  public void xxxScreenshotNow();

 

6.步驟

 

 

frameworks\base\services\core\java\com\android\server\wm\WindowManagerService.java
中,因爲其實現了WindowManagerFuncs這個接口,需要在該文件中添加xxxCaptureScreen()函數的實現體。
找到xxxCaptureScreen()函數,在其後面添加xxxCaptureScreen()函數,函數內容如下:
    @Override	
    public void xxxCaptureScreen() {
        mPolicy.xxxScreenshotNow();
    }

 

 

 

7.步驟

 

 

alps\frameworks\base\services\core\java\com\android\server\policy\PhoneWindowManager.java
中,因爲其實現了WindowManagerPolicy這個接口,需要在該文件中添加xxxScreenshotNow()函數的實現體。該方法即可實現截圖
 public void xxxScreenshotNow(){
     
  }

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章