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(){
}
日拱一卒百无有尽,功不唐捐终入海
浙公网安备 33010602011771号