当前位置: 首页 > 编程日记 > 正文

android4.4 添加快捷开关(以截屏为例)

A,frameworks\base\packages\SystemUI\res\values\config.xml

添加: <bool name="quick_settings_show_screenshot">true</bool>

B,frameworks\base\packages\SystemUI\res\values\strings.xml

添加:<string name="quick_settings_screen_shot_label">Screen shot</string

C,frameworks\base\packages\SystemUI\res\values-zh-rCN\strings.xml

添加:<string name="quick_settings_screen_shot_label" msgid="f9870466a61654f367d">屏幕截图</string>

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

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2012 The Android Open Source ProjectLicensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License.
-->
<TextViewxmlns: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 shotQuickSettingsTileView 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() {@Overridepublic 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() {@Overridepublic 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()) {@Overridepublic 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) {}}}@Overridepublic void onServiceDisconnected(ComponentName name) {}};if (mContext.bindService(intent, conn, Context.BIND_AUTO_CREATE)) {mScreenshotConnection = conn;mHandler.postDelayed(mScreenshotTimeout, 10000);}}}/**************************************************/

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

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

参考:http://blog.csdn.net/yicao821/article/details/17416649

转载于:https://www.cnblogs.com/Miami/p/4998441.html

相关文章:

两台ubuntu虚拟机环境下hadoop安装配置

http://blog.itpub.net/26978437/viewspace-730136/按照上几篇的内容&#xff0c;安装好两台ubuntu虚拟机之后&#xff0c;首先确定好哪台机子做namenode&#xff0c;哪台做datanode&#xff0c;打开终端,输入&#xff1a;$sudo vi /etc/hosts 在打开的文件中输入主机名和IP地址…

记录程序运行时间

long currentTimeMills()返回以毫秒为单位的当前时间 long nanoTime() 返回最准确的可用系统计时器的当前值&#xff0c;以毫微秒为单位. 测试某些代码执行的时间长度&#xff1a; long startTime System.nanoTime();// ... the code being measured ...long estimatedTime S…

绝对定位下margin的作用

以前一直对绝对定位下的margin作用很模糊&#xff0c;今天细看一下 不使用top,left&#xff0c;margin等 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdev…

战地1如何修改服务器地址,《战地1》服务器加入方法一览

《战地1》发布已经有一段时间了&#xff0c;今天小编要为大家带来的是玩家“黑肉佐罗”分享的《战地1》服务器加入方法一览&#xff0c;感兴趣的玩家赶紧一起来看看吧!战地风云系列正统续作战地1问世已经有几个礼拜了&#xff0c;游戏怎么样&#xff0c;我想也不用多说&#xf…

css如何设置dialog,css-dialog提示

内容不完善内容不完善内容不完善内容不完善内容不完善确定BackGround.jsimport styled from styled-components;const BackGround styled.divbackground-color: rgba(19, 21, 26, 0.6);opacity: 1;z-index: 1001;top: 0;left: 0;right: 0;bottom: 0;position: absolute;;expor…

1356服务器性能,Intel发布4款LGA1356插口服务器处理器

Intel发布了4款LGA 1356插口的处理器&#xff0c;它们分别是Xeon E5-2449L和E5-1410、Pentium 1403和1407。Xeon E5-2449L是一款8核16线程的处理器&#xff0c;20MB三级缓存&#xff0c;同时它还具有Xeon E5-2400系列最低的TDP&#xff0c;仅为50W&#xff0c;但为了达到这个功…

二分图匹配匈牙利算法DFS实现

1 /**\2 | 二分图匹配&#xff08;匈牙利算法DFS 实现&#xff09;3 | INIT: g[][]邻接矩阵;4 | CALL: res MaxMatch ();5 | 优点&#xff1a;实现简洁容易理解&#xff0c;适用于稠密图&#xff0c;DFS 找增广路快。6 | 找一条增广路的复杂度为O&#xff08;E &#…

十大Intellij IDEA快捷键转

Intellij IDEA中有很多快捷键让人爱不释手&#xff0c;stackoverflow上也有一些有趣的讨论。每个人都有自己的最爱&#xff0c;想排出个理想的榜单还真是困难。以前也整理过Intellij的快捷键&#xff0c;这次就按照我日常开发时的使用频率&#xff0c;简单分类列一下我最喜欢的…

Java和.NET使用DES对称加密的区别

Java和.NET的系统类库里都有封装DES对称加密的实现方式&#xff0c;但是对外暴露的接口却各不相同&#xff0c;甚至有时会让自己难以解决其中的问题&#xff0c;比如Java加密后的结果在.NET中解密不出来等&#xff0c;由于最近项目有跨Java和.NET的加解密&#xff0c;经过我的分…

web.config配置

在config中配置自己项目中的用户控件&#xff1a; <pages> <controls> <add tagPrefix"fish" tagName"MainMenu" src"~/Controls/MainMenu.ascx" /> <add tagPrefix"fish" tagName"PageHeader" src&qu…

字符串最易犯的错误 总是和 那个\0 有关

下面程序有一处错误导致 多错误&#xff1a; View Code 1 #include <stdio.h>2 #include <string.h>3 #include <stdlib.h>4 #include <assert.h>5 typedef struct{6 int l, c; // lines, cols7 } pos_t;8 9 typedef struct {10 char *str;1…

12月3号条件控制语句和循环语句

if条件语句 非零即真 0即假 if&#xff08;表达式&#xff09;{ //成立之后要处理的事情 } 以atm小程序为例 //判断用户选择的操作 if &#xff08;operation 1&#xff09;{ //输入密码 printf("输入密码\n"); } if (operation 2){ //取款 printf("取款\n…

获取交换机OID值

附&#xff1a;之前的文章直接给出交换机cpu和内存的OID&#xff0c;下面我叙述下怎么具体去获得OID。下面以H3C内存及cpu部分OID值&#xff1a;&#xff08;可打400电话询问部分值&#xff09;400电话告诉我以下&#xff08;当然万能的网友也行了&#xff09;&#xff0c;缺少…

矩阵变化和坐标

原文地址&#xff1a;http://www.cnblogs.com/winter-cn/archive/2010/12/29/1919266.htmlhttp://www.useragentman.com/blog/2011/01/07/css3-matrix-transform-for-the-mathematically-challenged/在开始之前&#xff0c;首先来复习下一个简单的线性代数知识&#xff1a;矩阵…

Eclipse+SVN搭建开发环境

目前我们开发环境为&#xff1a;windows service 2008 r2 x64 现在开始记录一下eclipseSVN环境搭建过程&#xff1a; 1&#xff0c;&#xff09;下载 VisualSVN-Server-3.4.2-x64:https://www.visualsvn.com/server/download/ 2,)下载与安装&#xff1a;tortoisesvnhttp://tort…

牛客网练习赛44-B(快速幂+模拟)

题目链接&#xff1a;https://ac.nowcoder.com/acm/contest/548/B 题意&#xff1a;计算m/n小数点后k1位到k2位&#xff0c;1≤m≤n≤109&#xff0c;1<k1<k2<109,0<k2-k1<105,T<20。 思路&#xff1a;计算小数可以模拟除法一位一位地算&#xff0c;但需要把…

古剑奇谭网络版服务器位置,《古剑奇谭网络版》服务器数据互通调研公告

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼各位仙家弟子&#xff1a;为了给大家提供更好的游戏环境、形成更加稳定的游戏生态&#xff0c;小龙人计划在春节前&#xff0c;在充分参考服务器具体情况、充分尊重大家意愿的基础上&#xff0c;对部分服务器开启数据互通&#xff…

git克隆 不带目录_Git 系统学习笔记

公众号内发送Git获取Git官方PDF教程版本控制 版本控制是一种记录一个或若干个文件内容变化、以便将来查阅特定版本修订情况的系统。本地版本控制系统很久以前就开发了许多本地版本控制系统、大多都是采用某种简单的数据库来记录文件的历次更新差异。其中最流行的一种叫做 RCS、…

Android库so文件及skia函数的调用

为了实现android的二次开发&#xff0c;希望通过编制动态链接库&#xff08;.so&#xff09;的方式实现android native C程序的调用。更为实际的情况则是&#xff1a;编制新库&#xff08;new.so&#xff09;调用android的老库&#xff08;如libskia.so libskiagl.so&#xff0…

关于参数类型的转换问题

有时候遇见方法之间的参数会有冲突&#xff0c;这个时候又不想修改方法的时候&#xff0c;可以考虑一些类型转换的一些技巧&#xff0c;如.toString( ) .toDate( ) .parseInt( ) .valueOf( )等等 转载于:https://www.cnblogs.com/2027437606qq/p/5018710.html

c++框架有哪些_Java Mybatis框架入门教程_v20200726

MyBatis 的前身是 Apache 的开源项目 iBatis。MyBatis 几乎可以代替 JDBC&#xff0c;是一个支持普通 SQL 查询&#xff0c;存储过程和高级映射的基于 Java 的优秀持久层框架。MyBatis 与 JDBC 相比&#xff0c;减少了 50% 以上的代码量。并且满足高并发和高响应的要求&#xf…

logstash写入到kafka和从kafka读取日志

收集nginx日志放到kafka 修改nginx日志格式&#xff1a;[nginx日志格式修改](https://blog.51cto.com/9025736/2373483) input {file {type > "nginx-access"path > "/data/wwwlogs/access_nginx.log"start_position > "beginning"code…

Linux cp命令如何拷贝整个目录下所有文件

复制不包含隐藏文件&#xff1a; cp -R /home/usera/* /mnt/temp 复制包含隐藏文件 &#xff1a; cp -R /home/usera/. /mnt/temp 转载于:https://www.cnblogs.com/appinn/p/5019533.html

Windows Phone开发(7):当好总舵主 转:http://blog.csdn.net/tcjiaan/article/details/7281421...

吹完了页面有关的话题&#xff0c;今天我们来聊一下页面之间是如何导航的&#xff0c;在更多情况下&#xff0c;我们的应用程序不会只有一个页面的&#xff0c;应该会有N个&#xff0c;就像我们做桌面应 用开发那样&#xff0c;我们一个应用程序中可能不止一个窗体&#xff08;…

POJ 1966 Cable TV Network【无向图点连通度 最小割 E-K算法求最大流】

题目描述&#xff1a; 给你一个无向图&#xff0c;问你最少删掉几个点&#xff0c;使这个图成不连通。 解题报告&#xff1a; 概念 (1)一个具有 N 个顶点的图&#xff0c;在去掉任意 k-1 个顶点后 (1<K<N) 所得的子图仍连通&#xff0c; 而去掉 K 个顶点后的图不连通则称…

C++ STL:stack和queue

http://blog.csdn.net/wallwind/article/details/6858634 http://blog.csdn.net/chao_xun/article/details/8037420 http://blog.163.com/jackie_howe/blog/static/19949134720111144714342/ 1、stackstack 模板类的定义在<stack>头文件中。stack 模板类需要两个模板参数…

Day03 - Ruby比一比:Module的include与extend

前情提要在第一天里&#xff0c;我们很激昂地用Ruby的类别、物件、方法&#xff0c;写了开赛宣言&#xff01;在第二天里&#xff0c;我们比较了方法与模块&#xff0c;比的过程中&#xff0c;发现模块多了包含&#xff08;inclusion&#xff09;与延伸&#xff08;extension&a…

5 zabbix 添加host_运维监控实战篇,zabbix自动发现和自动注册图文详解

一、介绍自动发现Zabbix自动发现就是为了解决批量监控而设计的功能之一&#xff0c;什么是自动发现呢&#xff0c;简单来说就是Zabbix Server端可以基于设定的规则&#xff0c;自动批量的去发现局域网若干服务器&#xff0c;并自动把服务器添加至Zabbix监控平台&#xff0c;省去…

PHP面向对象编程(imooc)代码合集(四)

class10 多态 多态简单说就是用不同的类去实现同一个接口的方法&#xff0c;以实现不同类自己的方法 <?php date_default_timezone_set("PRC"); /*** 多态* 1. 只要某个对象实现了接口&#xff08;instanceof&#xff09;&#xff0c;就可以直接在对象上调用接口…

云解析DNS产品优势与应用场景

什么是阿里云解析&#xff1a;阿里云解析是面向全网域名开放的域名智能解析服务。阿里云解析做为云计算服务的入口&#xff0c;将逐步与阿里云已有云产品融合打通&#xff0c;成为云产品大家庭中不可或缺的一份子。ECS、RDS、CDN、SLB 等产品为用户提供高效可靠的计算、存储、网…