android 4.4 截屏功能,android4.4 添加快捷开关(以截屏为例)

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

xmlns:android="http://schemas.android.com/apk/res/android"

style="@style/TextAppearance.QuickSettings.TileView"

android:id="@+id/screen_shot_textview"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:gravity="center"

android:drawableTop="@drawable/ic_qs_screen_shot"

android:text="@string/quick_settings_screen_shot_label"

/>

F,添加相应java代码:

frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone\QuickSettings.java

import android.content.ServiceConnection;

import android.os.IBinder;

import android.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(new View.OnClickListener() {

@Override

public void onClick(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 = new Runnable() {

public void run() {

takeScreenshot();

}

};

private final Object mScreenshotLock = new Object();

private ServiceConnection mScreenshotConnection = null;

private final Runnable mScreenshotTimeout = new Runnable() {

@Override public void run() {

synchronized (mScreenshotLock) {

if (mScreenshotConnection != null) {

mContext.unbindService(mScreenshotConnection);

mScreenshotConnection = null;

}

}

}

};

// Assume this is called from the Handler thread.

private void takeScreenshot() {

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 = new Intent();

intent.setComponent(cn);

ServiceConnection conn = new ServiceConnection() {

@Override

public void onServiceConnected(ComponentName name, IBinder service) {

synchronized (mScreenshotLock) {

if (mScreenshotConnection != this) {

return;

}

Messenger messenger = new Messenger(service);

Message msg = Message.obtain(null, 1);

final ServiceConnection myConn = this;

Handler h = new Handler(mHandler.getLooper()) {

@Override

public void handleMessage(Message msg) {

synchronized (mScreenshotLock) {

if (mScreenshotConnection == myConn) {

mContext.unbindService(mScreenshotConnection);

mScreenshotConnection = null;

mHandler.removeCallbacks(mScreenshotTimeout);

}

}

}

};

msg.replyTo = new Messenger(h);

msg.arg1 = msg.arg2 = 1;

try {

messenger.send(msg);

} catch (RemoteException e) {

}

}

}

@Override

public void onServiceDisconnected(ComponentName name) {}

};

if (mContext.bindService(

intent, conn, Context.BIND_AUTO_CREATE)) {

mScreenshotConnection = conn;

mHandler.postDelayed(mScreenshotTimeout, 10000);

}

}

}

/**************************************************/

系统编译后的最终效果如下图(找了个关于SIM的图标代替):

f4771df518397a57dad7fe0e5f3c43cb.png

------------------------------------------------------------------------------------- -------------------------------------- -------------------------

来源:https://www.cnblogs.com/Miami/p/4998441.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值