分类 Android 下的文章

曾看到有文章介绍Nexus 5(d820)开启LET Band 3,即能使用联通4G,一直想试试。但联通4G套餐还是太贵了,只能作罢。直到上个月收到短信,说我的卡已开通4G网络,于是找了个机会,升级系统之余,顺便开启4G。

操作过程参考了这个文章:
Nexus 5 D820 Android Lollipop 5.1 美版破解band 3
http://hi-it.org/1335.html

总结一下我的经验及步骤吧:
1)手机端准备:
1.1)备份系统及数据。32G版的Nexus 5,备份起来很耗时间。
1.2)刷官方Android 5.0或5.1,并root,开启开发模式。
1.3)安装Recovery。TWRP或Clockworkmod的,都可以。个人比较习惯Clockworkmod。
1.4)安装 Nexus 5 Field Test Mode。
1.5)安装 franco.Kernel updater ,然后运行并安装最新的kernel。

2)电脑端准备:
2.1)最好使用windows7操作系统。windows8会涉及更多的操作步骤。
2.2)准备好电脑端adb。
2.3)安装LG驱动。
2.4)安装QPST。
2.5)准备好qcn文件。

3)开刷:
3.1)手机插上电脑,确认开发模式已开启。
3.2)手机命令行激活 diag mode 。在电脑端运行以下命令(手机端会提示root权限):

adb shell
su
setprop sys.usb.config diag,adb

然后打开 设备管理器 -> 端口(COM和LPT),应该看到“LGE AndroidNet USB Serial Port (COM4)”。COM口的数字,会根据实际情况而定。
3.3)获取SPC码。

首先,电脑端运行命令`adb logcat -s LG_SVC_CMD`。
接着,手机端运行 Nexus 5 Field Test Mode ,进入 Settings (View) -> LTE -> Edit。此时查看电脑端的输出,找到SPC码。在手机端输入该SPC码后,进入了EDIT界面。依次修改设置为“Disable”、“Disable”、“Enable”、“1”、“1”、“0”,然后手机端不要动。

3.4)刷入QCN文件。

电脑端,运行 QPST -> QPST Configuration ,点 Ports ,检查COM口是否已添加。若没有,则点“Add New Port”进行添加。
电脑端,运行 QPST -> Software Download ,点 Restore ,看到 Port 显示手机所在COM口。在 QCN File 点 Browse ,选择 QCN 文件中的“80XXXXXX_RF_QDART_band3 RxTx NV patch.qcn”。SPC填入手机的SPC码。然后点 Start 。
如果看到Errors显示 Could not Reset the Phone 的报错,就表示成功了。
最后重启手机就应该可以了。

相关软件下载地址:
http://yunpan.cn/cgyfsDMTARiY9 密码 56ea

开启4G后,用手机网络上网时确实快了很多。主要体现在打开微信朋友圈,一下子就用了几十MB流量。对于月套餐只有500MB的我来说,一下子就掉了两天的流量,真是悲喜交集。

Volley是Google于2013年推出的Android网络数据传输框架。用起来非常简单。但是字符编码的问题让人头痛。Volley默认获取Response Headers中Content-Type来转换字符编码。若该值获取不到,则默认ISO-8859-1。问题就在于很多网站都没有设置该值。只能自己改为默认UTF-8。

把收集到的相关资料记录一下:
1)Transmitting Network Data Using Volley
http://developer.android.com/training/volley/index.html

2)Android Volley完全解析
(一),初识Volley的基本用法
http://blog.csdn.net/guolin_blog/article/details/17482095

(二),使用Volley加载网络图片
http://blog.csdn.net/guolin_blog/article/details/17482165

(三),定制自己的Request
http://blog.csdn.net/guolin_blog/article/details/17612763

(四),带你从源码的角度理解Volley
http://blog.csdn.net/guolin_blog/article/details/17656437

通过一晚的测试与实验,终于用YUMI,把Android-x86 4.4.2 RC2装到U盘上,并且启动成功。记录一下吧:

1)打开YUMI并选择U盘,Step 2选“Try Unlisted ISO (via SYSLINUX)”,Step 3选ISO文件,如“android-x86-4.4-RC2.iso”。然后就等待YUMI自动处理完成。

2)进入刚弄好的U盘,找到文件 X:\multiboot\android-x86-4.4-RC2\isolinux\isolinux.cfg 并用编辑器打开。修改 kernel 和 initrd 的路径前缀为 /multiboot/android-x86-4.4-RC2 。具体修改后的文件内容如下:

default vesamenu.c32
timeout 600

menu background android-x86.png
menu title Android-x86 Live & Installation CD 4.4-RC2 
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffff00 #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ffffff00 #ff000000
menu color hotkey 7 #ffffff00 #00000000

label livem
    menu label Live CD - ^Run Android-x86 without installation
    kernel /multiboot/android-x86-4.4-RC2/kernel
    append initrd=/multiboot/android-x86-4.4-RC2/initrd.img root=/dev/ram0 androidboot.hardware=android_x86 video=-16 quiet SRC= DATA=

label vesa
    menu label Live CD - ^VESA mode
    kernel /multiboot/android-x86-4.4-RC2/kernel
    append initrd=/multiboot/android-x86-4.4-RC2/initrd.img root=/dev/ram0 androidboot.hardware=android_x86 video=-16 quiet nomodeset vga=788 SRC= DATA=

label debug
    menu label Live CD - ^Debug mode
    kernel /multiboot/android-x86-4.4-RC2/kernel
    append initrd=/multiboot/android-x86-4.4-RC2/initrd.img root=/dev/ram0 androidboot.hardware=android_x86 video=-16 vga=788 DEBUG=2 SRC= DATA=

label install
    menu label Installation - ^Install Android-x86 to harddisk
    kernel /multiboot/android-x86-4.4-RC2/kernel
    append initrd=/multiboot/android-x86-4.4-RC2/initrd.img root=/dev/ram0 androidboot.hardware=android_x86 video=-16 INSTALL=1 DEBUG=

PS. Android-x86项目越来越完善了,非常适合上网本安装。但要注意驱动的问题,特别是无线网卡!

记得刷上Android 4.0之后,想过为什么系统自带了流量监控功能,还要装个监控流量的软件呢?系统自带的流量控制,最大的缺点是不能把流量统计情况显示在桌面上。于是想做个Widget,直接显示系统统计的流量情况。一直拖到上几个星期,终于开工了。但是,面临着一大堆问题……

首先是API。Android统计流量的API都是系统不开放的,就是带了@hilde的类、属性、方法等。

方案1:直接源码编译。首先想到是把android framework的源码下载下来,重新编译成jar包。问题是,CM提供的源码(http://github.com/CyanogenMod/)可能跟Android SDK的对不上。而采用SDK自带的源码,又不能编译。于是直接否决此方案。

方案2:采用Java的反射(Java Reflection)。比编译源码简单多了,什么类都可以拿来用。但是,要写一堆try catch代码,太麻烦了!

方案3:反编译虚拟机上的jar包,即把已编译成dex的jar还原成JVM的jar。由于虚拟机上的jar已被odex化,所以还要先合并。
1)用smali把odex文件转化为dex文件(smali项目:https://code.google.com/p/smali/)。
2)用dex2jar把dex文件转为class文件(dex2jar项目:https://code.google.com/p/dex2jar/)。
3)把class文件打包,并替换SDK上的platforms/android-17/android.jar文件。
这样就可以只用系统的所有api了。但是有个问题,就是system权限的问题未解决。要获得system权限,必须要获得rom的签名。就是说,只能放到rom里面,不能做成通用的软件。

所以,这个项目就研究到这里,然后无限期的暂停了……

在G1时代,入手了蓝牙耳机之后,就一直想把蓝牙耳机当成无线快门来用。虽然很屌丝,但是很实在的一个功能,特别是当年还一个人到处乱逛。

这几天终于启动这个项目。一开始的想法,肯定是参考一些音乐播放软件,利用BroadcastReceiver接受蓝牙耳机的按键事件,再广播一个Camera按键事件,实现从蓝牙的“播放键”到相机的“快门”的动作转换。但是,静态注册了BroadcastReceiver后,不起作用,怀疑是受其它音乐播放软件的影响,但也查不到原因。

后来灵机一动,想起直接修改Android的按键影射文件,把“播放键”直接改成“快门键”。于是修改 /system/usr/keylayout/AVRCP.kl 文件,把 key 200 MEDIA_PLAY WAKE 中的 MEDIA_PLAY 替换成 CAMERA。连上蓝牙后,测试通过,但还有个问题,就是相机不会先自动对焦后拍照,而是直接就拍照。然后就是写个Shell脚本(主要是sed命令吧)来自动修改影射文件。再然后就是写个app来实现这个功能了。当然,这是后话,希望不会成为屁话……

后面还有个想法,通过老G1来自动拍照,上传到服务器,实现监控功能。好吧~继续努力~

忘了当初是什么时候,为了在G1上运行脚本(或动态语言),发现了SL4A,记得那个时候还是叫做ASE。然后又发现了Beanshell这个运行Java语言的脚本环境,貌似挺好玩,于是在G1上都装上了,但是运行不了,弹出ClassNotFoundException。该问题一直解决不了,只好作罢。现在换上Nexus S后,前几天又找出这东西来玩,问题依然。今天找了一下,终于解决了!简单来说,就是权限问题。具体过程如下:

1)安装 SL4A 。先到该项目官方网站 http://code.google.com/p/android-scripting/ 下载当前最新版 sl4a_r4.apk ,并安装到手机或模拟器上。

2)安装Beanshell for Android。可以到SL4A官方网站下载当前最新版 beanshell_for_android_r2.apk ,安装到手机货模拟器上。或者运行SL4A,依次点击 菜单键(menu) -> View -> Interpreters -> 菜单键(menu) -> Add -> BeanShell ,就会自动下载 Beanshell 了。

3)打开 BeanShell ,点 Install 。安装完成后,就会在SL4A中看到 hello_world.bsh 脚本文件。

4)打开 SL4A ,运行  hello_world.bsh 脚本文件,就会看到报错。大概说找不到 /mnt/sdcard/com.googlecode.bshforandroid/extras/bsh/bsh-2.0b4-dx.jar 。

解决办法1:
进入Android的Shell环境(例如:超级终端、ConnectBot等),运行以下命令:
su
dalvikvm -classpath /mnt/sdcard/com.googlecode.bshforandroid/extras/bsh/bsh-2.0b4-dx.jar bsh.Interprefer

就可以进入BeanShell环境了。很明显,在root权限下运行,无视了一切权限问题。当然,这不是我们想要的。

解决办法2,也就是真正的解决办法:
手机上找到 /mnt/sdcard/com.googlecode.bshforandroid/extras/bsh/bsh-2.0b4-dx.jar 。打开 bsh-2.0b4-dx.jar ,解压 classes.dex 文件到 /data/dalvik-cache 下,并重命名为 mnt@sdcard@com.googlecode.bshforandroid@extras@bsh@bsh-2.0b4-dx.jar@classes.dex 。更改该文件的权限为 rw-r--r-- ,更改Owner为 1000 (即system),更改Group为 1000 (即system) 或 2000 (即shell) 或 与SL4A相同的Group。这样就可以了。测试发现最重要修改文件权限和Owner。

再三纠结后,终于在上个月中 (2011-6-12)入手了Google Nexus S(SAMSUNG i9020)。虽然是二手,且花了2400RMB,但买到了Super AMOLED版,感觉还是值了。

机子没什么挑剔了,强大的性能、几乎最全面的功能、轻薄的身段……只是机子太强大了,导致用着用着变颓废了。主流3D游戏全部可玩,不再失望与无奈,这样花在游戏上的时间更多了;内存512MB,不用考虑APP to EXT、APK的ODEX化、压缩内存以增大使用空间或挂载swap分区等等,感觉拿着它没事可干了;内置16GB闪存,但是不能分个EXT分区,想chroot个Debian也变得麻烦了;Android 2.3.4什么都集成了,又不用装其它软件了……这一切的改变,使得该机子更接近于手机加掌上娱乐,感觉没G1好玩了。

即将要失业了,得赶紧做下计划。希望能依靠Nexus S与G1,在Android上能有所收获吧。

G1用了两年后,刷上2.3.4,虽然还基本满足日常需要,但仍感不足。内存过小从来都是被骂的硬伤,加上IO效率低下,然后是CPU速度不高(相比很多新的机器),于是再升上去绝对是勉强了。看着N多机器降价,口水直流,于是想到了换新机器。

候选佳丽1号,HTC Desire Z。去年年末一看到发布就迷上这货了,而且有着另一个名字——T-Mobile G2,G1的真正继承者啊!最重要的是,带QWERTY键盘!但是,有个硬伤——非常耗电。别人的评测中,开WiFi浏览网页只有3个小时左右,开3G的话更费电!杯具了~再想想,主频连1G都没有,键盘不如G1的(只有4行,G1有5行),没有前置摄像头,没有NFC……犹豫了。

候选佳丽2号,Google Nexus S (SAMSUNG i9020)。作为与HTC Desire Z同价格等级的选择机型,也作为Google的第2个亲生儿子,具备Android 2.3.4所需的一切硬件条件。前置摄像头、NFC芯片、1G CPU、强劲的显示芯片、Super AMOLED屏幕……而且最大的好处是,对Android新版本有更好的支持,不愁升级的问题。但是必须牺牲偶一直向往的键盘,而且不能插TF (Micro SD) 卡(还好内置16GB Flash)。另外,由于Super AMOLED产能有限,SAMSUNG推出了采用Super Clear SLCD屏幕的机型i9023,此屏幕缺点是黑屏漏光,重量增加。所以想买到i9020还有一定的困难。

场外佳丽,Nikon D5100。很久前就想买个单反了,从D3000开始观望,到D3100出来还是不敢下手(其中日本东海的大地震也间接把价格推高,导致下不了手),现在被D5100迷住了。本来“五一”假期就可以入手D5100了,可是这假期挥霍了,加上预算中的第一季度奖金居然只有想象中的一半……不给力啊!!!于是购买计划又暂停了,而且不知道要拖到什么时候。总是在想,单反这么贵,也只能拍照,值么?然而去拍照时,又感触,怎么就不买个单反呢?

其实,问题的根源还是没钱。有钱的话,都可以实现了。-_-///

终于如愿入手16GB TF卡,小小的遗憾是,只买了Class 4的,没能买个Class 6或以上的(主要是价格)。

等了N久(偶也算比较理性的),终于等到16GB的TF卡降价(以前是400左右或以上),跌到200以内了。12月12日那晚,看到“卓越网”有货,而且是见过的最低价格,189!于是果断入手一个(下订单后第2天就涨了10块),只是4天后的今天才送过来,太折磨人(在卓越上第一次等这么久)。

到手后马上分区、拷贝数据。第一次用G1上的Recovery 1.7分区,太方便了。拷贝数据时,用Ghost备份、恢复,比起直接复制、粘贴快很多,尤其是小文件比较多的情况。

装上G1后,系统一切如常。由于也是Class 4的卡,所以跟原来的KingSton 8G没多大变化。最大的变化当然是容量扩大了。

本人的目的是用来多放点的歌、电影、资料等,所以从性价比来说,Class 4、16GB是最佳的选择了。原来的8G卡以50块转给同事,这样就更划算了。选SanDisk的原因嘛,主要是口碑好,据说以前SanDisk的Class 2卡,速度直赶别人的Class 6卡。

PS. 容量有了,应该可以把图形界面的Debian装上去跑跑看~~去年就想搞的了~~

PS.. 今晚把Nokia BH-214的原装耳机拿来听听,音质还是那么不给力。于是放回原来的角落,换上一直在听的MX 360。还是看谁需要的,把它送人算了。有机会换耳机的话,希望能换上Sennheiser(森海塞尔) MX 760!据说听人声、纯音乐之类,可以达到心灵救赎的效果……哈哈,太夸张了。

想为G1换个新电池(原电用了一年多,开始肿胀了),于是逛了一晚上的淘宝,但还是没找到好的。

本来计划好买个“烤鸭电池”(别人用电芯DIY出来的山寨电池,据说比原电耐用),但是看着样子太山寨了,于是想还是买个原电吧。

于是在信誉比较好的“淘宝商城”里搜了几家,都是50RM左右。看着图片还是不放心,问店主是不是HTC原装的,怎么鉴别之类。店主都说自己的是原装的,都可以通过客服(指的是国内多普达的客服)鉴定。但是当要求进一步提供鉴定材料(例如更清晰的实物照片)时,都说不能提供,而且都说是散装,没有外包装。淘宝真是个山寨厂商的宝地啊!看着店主都在闪烁其辞,我也心灰意冷了,还是明天再考虑那“烤鸭电池”吧。

PS. 明天又一个经常一起玩的同事离职了,他说要去深圳做网络产品的实施了。今晚聊起他的经历,还挺波折的。他是学电子商务专业的,毕业后去了一家广告公司上班。然后学会做网站,又跳到中山的一家网站公司,后来跳到我们公司做网管。考了几个证后,现在跳到深圳了。比较羡慕他有这么丰富的经历,我毕业后就在现在的公司上班了,都干了两年多,还没找到机会跳槽。