A,frameworks\base\packages\SystemUI\res\values\config.xml
添加: true
B,frameworks\base\packages\SystemUI\res\values\strings.xml
添加:Screen shot
C,frameworks\base\packages\SystemUI\res\values-zh-rCN\strings.xml
添加:屏幕截图
D,添加图标
①frameworks\base\packages\SystemUI\res\drawable-hdpi\ic_qs_screen_shot.png
②frameworks\base\packages\SystemUI\res\drawable-mdpi\ic_qs_screen_shot.png
③frameworks\base\packages\SystemUI\res\drawable-xhdpi\ic_qs_screen_shot.png
E,添加单布局文件:
frameworks\base\packages\SystemUI\res\layout\quick_settings_tile_screen_shot.xml
/>
F,添加相应java代码:
frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone\QuickSettings.java
importandroid.content.ServiceConnection;importandroid.os.IBinder;importandroid.os.Message;import android.os.Messenger;
再在addTemporaryTiles() 方法里面的最后添加相应代码:
///////////////////////////////////////_1126///////////////////////////////////////////////screen shot
QuickSettingsTileView ScreenShotTile =(QuickSettingsTileView)
inflater.inflate(R.layout.quick_settings_tile, parent,false);
ScreenShotTile.setContent(R.layout.quick_settings_tile_screen_shot, inflater);
ScreenShotTile.setOnClickListener(newView.OnClickListener() {
@Overridepublic voidonClick(View v) {
Log.i(TAG,"---------------------------------screen shot is clicked.");//takeScreenshot();
mBar.collapseAllPanels(true);
mHandler.removeCallbacks(mScreenshotClick);
mHandler.postDelayed(mScreenshotClick,500);
}
});if(mContext.getResources().getBoolean(R.bool.quick_settings_show_screenshot)) {
parent.addView(ScreenShotTile);
}
随后在外部添加相应调用代码:
/*******************_1126*********************************/
//add by xxx, for screen shot in quick settings.
private final Runnable mScreenshotClick = newRunnable() {public voidrun() {
takeScreenshot();
}
};private final Object mScreenshotLock = newObject();private ServiceConnection mScreenshotConnection = null;private final Runnable mScreenshotTimeout = newRunnable() {
@Overridepublic voidrun() {synchronized(mScreenshotLock) {if (mScreenshotConnection != null) {
mContext.unbindService(mScreenshotConnection);
mScreenshotConnection= null;
}
}
}
};//Assume this is called from the Handler thread.
private voidtakeScreenshot() {
Log.i("bright", "start take screen shot.");synchronized(mScreenshotLock) {if (mScreenshotConnection != null) {return;
}
ComponentName cn= new ComponentName("com.android.systemui","com.android.systemui.screenshot.TakeScreenshotService");
Intent intent= newIntent();
intent.setComponent(cn);
ServiceConnection conn= newServiceConnection() {
@Overridepublic voidonServiceConnected(ComponentName name, IBinder service) {synchronized(mScreenshotLock) {if (mScreenshotConnection != this) {return;
}
Messenger messenger= newMessenger(service);
Message msg= Message.obtain(null, 1);final ServiceConnection myConn = this;
Handler h= newHandler(mHandler.getLooper()) {
@Overridepublic voidhandleMessage(Message msg) {synchronized(mScreenshotLock) {if (mScreenshotConnection ==myConn) {
mContext.unbindService(mScreenshotConnection);
mScreenshotConnection= null;
mHandler.removeCallbacks(mScreenshotTimeout);
}
}
}
};
msg.replyTo= newMessenger(h);
msg.arg1= msg.arg2 = 1;try{
messenger.send(msg);
}catch(RemoteException e) {
}
}
}
@Overridepublic voidonServiceDisconnected(ComponentName name) {}
};if(mContext.bindService(
intent, conn, Context.BIND_AUTO_CREATE)) {
mScreenshotConnection=conn;
mHandler.postDelayed(mScreenshotTimeout,10000);
}
}
}/**************************************************/
系统编译后的最终效果如下图(找了个关于SIM的图标代替):
------------------------------------------------------------------------------------- -------------------------------------- -------------------------
原文:http://www.cnblogs.com/Miami/p/4998441.html