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(){
     
  }

 

 

 

 

 

 

 

 

posted @ 2017-03-17 17:50  稻香鱼  阅读(218)  评论(0)    收藏  举报