Menu Home

Android:How to change MTP and PTP name

Android OS: 4.4.4 Sometimes, you want to change the default MTP/PTP name of your android device. If you have android source, it’s very easy. First open the source file: frameworks/base/media/java/android/mtp/MtpDatabase.java, Line:799(in my source), or you can search the function getDeviceProperty private int getDeviceProperty(int property, long[] outIntValue, char[] outStringValue) { switch […]

Framework增加资源文件

把需要增加的图片资源放到 frameworks/base/core/res/res/drawable-nodpi,如果就这样直接应用这个资源,会出现找不到资源的错误。实际上在增加完资源后还需要在 frameworks/base/core/res/res/values/symbols.xml文件中做相应的注册,比如: <java-symbol type=”drawable” name=”my_wallpaper” /> 重新编译framework-res后就可以使用这个资源了: com.android.internal.R.drawable.my_wallpaper

git log format

Command git log –pretty=format:”%h – %an, %ar : %s” Output 362067d – liuxh, 4 months ago : Support tablet. f638c17 – Linux Build Service Account, 4 months ago : Merge “StatusBar: Customize LTE signal level for carriers” b197b6f – Qiang Chen, 4 months ago : StatusBar: Customize LTE signal level […]

Linux版有道词典

OS: ubuntu 12.04 Linux版的StarDic真是越来越难用了。试了下Linux版的有道词典,很不错哦! deb http://ppa.launchpad.net/justzx2011/openyoudao-v0.4/ubuntu trusty main deb-src http://ppa.launchpad.net/justzx2011/openyoudao-v0.4/ubuntu trusty main sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys 14C9B91C3F9493B9 sudo apt-get update sudo apt-get install openyoudao ref:

Java:线程安全的单例

public class Singleton { private static class SingletonHolder { private static Singleton sSingleton = new Singleton(); } public static Singleton getInstance() { return SingletonHolder.sSingleton; } private Singleton() { } } 基于以下事实: JVM加载class是线程安全的。 class的static成员在类首次加载时初始化。

Java DOM设置XML缩进

TransformerFactory tf = TransformerFactory.newInstance(); Transformer transformer = tf.newTransformer(); DOMSource source = new DOMSource(mDocument); transformer.setOutputProperty(OutputKeys.INDENT, “yes”); transformer.setOutputProperty(“{http://xml.apache.org/xslt}indent-amount”, “4”);//缩进宽度 transformer.setOutputProperty(OutputKeys.METHOD, “xml”); transformer.setOutputProperty(OutputKeys.ENCODING, “UTF-8”);

Java Enum

Java的Enum搞的越来越强大,用着也越来越别扭。看看下面的代码: public class TestJavaEnum { static enum WorkDay { Mon(“Monday”), Tue(“Tuesday”), Wed(“Wednesday”), Thu(“Thursday”), Fri(“Friday”); private String mDay; private WorkDay(String day) { mDay = day; } @Override public String toString() { return mDay; } } public static void main(String[] args) { WorkDay[] workDays = WorkDay.values(); System.out.println(“——WorkDay——“); for (int i = 0; […]

Git修改历史提交

修改最后一次提交 git commit –amend 修改非最后一次提交 git rebase -i HEAD~3 -i参数的含义: –interactive let the user edit the list of commits to rebase HEAD~3: 需要修改倒数第三个提交 之后出现如下界面: 把你想要修改的提交记录前的pick改成edit。 下图说明我想修改7013c8c这个提交(PS:可以同时修改多个): 保存后,git会出现提示: 输入 git commit –amend 弹出的界面跟第一种情况一样,你可以开始修改你的提交说明了。 最后保存你的修改。 最后执行 git rebase –continue 完成操作。如果一次选择了多个提交需要修改,只需要多次执行git commit –amend和git rebase –continue即可。

Android设置系统首次开机的默认输入法

Android OS: 4.4.4 需求:Android系统首次开机(恢复出厂状态),读取build.prop中的属性来设置默认的输入法。 增加系统属性 ro.product.IME.default 修改InputMethodService 打开文件 frameworks/base/services/java/com/android/server/InputMethodManagerService.java 增加如下方法: /** * 0: not first boot * 1: first boot */ static final String FIRST_BOOT_FLAG = “first_boot_flag”; private void setCustomDefaultIME() { int firstBootFlag = Settings.System.getInt( mContext.getContentResolver(), FIRST_BOOT_FLAG, 1); if(DEBUG) Slog.d(TAG, “First Boot Flag: ” + firstBootFlag); if (1 == firstBootFlag) […]

Android自定义系统属性

增加自定义属性涉及的文件: /build/toos/buildinfo.sh 比如这里增加了一个系统默认输入法的属性: echo “ro.product.IME.default=com.android.inputmethod.pinyin/.PinyinIME” 也可以加在device目录下的system.prop文件中,最终都会输出到build.prop rebuild出来的system.img中的build.prop就有了上面的属性。 通过下面的代码来访问这个自定义属性: String defaultIme = SystemProperties.get(“ro.product.IME.default”, “com.android.inputmethod.latin/.LatinIME”); 这里的SystemProperties为@hide类,所以需要在Android Source中使用上面的代码。 有了需要的属性后,就可以在Android机器中修改这个属性值了,但是需要注意一点: 如果是通过adb pull后再push到android机器的话,需要确保build.prop文件的权限为644,否则进不了系统。

XPath去除XML空行

XPath xp = XPathFactory.newInstance().newXPath(); NodeList nl = null; try { nl = (NodeList) xp.evaluate(“//text()[normalize-space(.)=”]”, mDocument, XPathConstants.NODESET); } catch (XPathExpressionException e) { e.printStackTrace(); } for (int i = 0; i < nl.getLength(); ++i) { Node node = nl.item(i); node.getParentNode().removeChild(node); }

[转]XPath简介

结点类型 XPath中有七种结点类型:元素、属性、文本、命名空间、处理指令、注释以及文档节点(或成为根节点)。 文档的根节点即是文档结点;对应属性有属性结点,元素有元素结点。 常用路径表达式 表达式 描述 nodename 选取此节点的所有子节点 / 从根节点选取 // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置 . 选取当前节点 .. 选取当前节点的父节点 @ 选取属性 例如有文档: <?xml version=”1.0″ encoding=”ISO-8859-1″?> Harry Potter 29.99 Learning XML 39.95 则: