您的位置:首页 > 移动开发 > Android开发

android 6.0在关机界面添加截图功能

2017-03-17 17:50 531 查看
在关机界面添加截图功能,可以参考如下步骤修改实现:

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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: