Google Now截图
其实中国用户也完全可以激活Google Now功能,但是需要一些技巧,我们在将手机升级至Android 4.1以后,先要把语言调成英语,再打开Google搜索栏,就会出现Google Now功能激活的提示了。
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/android/)Google Now截图
按照步骤激活后,还可以将语言调回去,Google Now也会以中文显示,Google Now有不少提醒功能,用户可以按照自己的个人习惯设置好偏好。以便其体型更为准确。
Google Now截图
不过使用中文依旧无法在搜索时激活Google Now卡片,这个功能也只能成为一个默默无闻的助手,但有总比没有强,如果没有Google Now,每次启动搜索时都会读取加载一下,开启后,这个加载的过程就没有了。虽然没带来多少方便,但不会给使用造成太大麻烦,总体来说Google Now功能开启总比不开强。
测试结论:
1)灭屏待机最省电:
a)任何App包括后台Service应该尽可能减少唤醒CPU的次数,比如IM类业务的长连接心跳、QQ提醒待机闹钟类业务的alarm硬时钟唤醒要严格控制;
b)每次唤醒CPU执行的代码应该尽可能少,从而让CPU迅速恢复休眠,比如申请wake lock的数量和持有时间要好好斟酌;
2)WiFi比蜂窝数据,包括2G(GPRS)、3G更省电:
a)尽量在WiFi下传输数据,当然这是废话,不过可以考虑在有WiFi的时候做预加载,比如应用中心的zip包、手Q web类应用的离线资源等;
b)非WiFi下,尽量减少网络访问,每一次后台交互都要考虑是否必须。虽然WiFi接入方式已经占到移动互联网用户的50%,但是是有些手机设置为待机关闭WiFi连接,即便有WiFi信号也只能切换到蜂窝数据;
测试分析:
1)灭屏的情况:
a)灭屏待机,CPU处于休眠状态,最省电(7mA);
b)灭屏传输,CPU被激活,耗电显著增加,即便是处理1K的心跳包,电量消耗也会是待机的6倍左右(45mA);
c)灭屏传输,高负载download的时候WiFi最省电(70mA),3G(270mA)和2G(280mA)相当,是WiFi的4倍左右;
2)亮屏的情况:
a)亮屏待机,CPU处于激活状态,加上屏幕耗电,整机电量消耗不小(140mA);
b)亮屏传输,如果只是处理1K的心跳包,耗电增加不多(150mA),即便是很大的心跳包(64K),消耗增加也不明显(160mA);
c)亮屏传输,高负载download的时候WiFi最省电(280mA),3G(360mA)和2G(370mA)相当,是WiFi的1.3倍左右;
3)Alarm唤醒频繁会导致待机耗电增加:
手机灭屏后会进入待机状态,这时CPU会进入休眠状态。Android的休眠机制介绍的文章很多,这里引用一段网络文章:
Early suspend是android引进的一种机制,这种机制在上游备受争议,这里 不做评论。这个机制作用在关闭显示的时候,在这个时候,一些和显示有关的 设备,比如LCD背光,比如重力感应器,触摸屏,这些设备都会关掉,但是系统可能还是在运行状态(这时候还有wake lock)进行任务的处理,例如在扫描SD卡上的文件等.在嵌入式设备中,背光是一个很大的电源消耗,所以android会加入这样一种机制.
Late Resume是和suspend配套的一种机制,是在内核唤醒完毕开始执行的.主要就是唤醒在Early Suspend的时候休眠的设备.
Wake Lock在Android的电源管理系统中扮演一个核心的角色. Wake Lock是一种锁的机制,只要有人拿着这个锁,系统就无法进入休眠,可以被用户态程序和内核获得.这个锁可以是有超时的或者是没有超时的,超时的锁会在时间过去以后自动解锁.如果没有锁了或者超时了,内核就会启动休眠的那套机制来进入休眠.
当用户写入mem或者standby到/sys/power/state中的时候, state_store()会被调用,然后Android会在这里调用request_suspend_state()而标准的Linux会在这里进入enter_state()这个函数.如果请求的是休眠,那么early_suspend这个workqueue就会被调用,并且进入early_suspend
简单的说,当用户按power键,使得手机进入灭屏休眠状态,Android系统其实是做了前面说的一些工作:关闭屏幕、触摸屏、传感器、dump当前用户态和内核态程序运行上下文到内存或者硬盘、关闭CPU供电,当然为了支持语音通讯,modern等蜂窝信令还是工作的。
这种情况下,应用要唤醒CPU,只有两种可能:
a)通过服务器主动PUSH数据,通过网络设备激活CPU;
b)设置alarm硬件闹钟唤醒CPU;
这里我们重点分析第二种情况。首先来看看什么是alarm硬件闹钟。Google官方提供的解释是:Android提供的alarm services可以帮助应用开发者能够在将来某一指定的时刻去执行任务。当时间到达的时候,Android系统会通过一个Intent广播通知应用去完成这一指定任务。即便CPU休眠,也不影响alarm services的服务,这种情况下可以选择唤醒CPU。
显然唤醒CPU是有电量消耗的,CPU被唤醒的次数越多,耗电量会越大。现在很多应用为了维持心跳、拉取数据、主动PUSH会不同程度地注册alarm服务,导致Android系统被频繁唤醒。这就是为什么雷军说Android手机在安装了TOP100的应用后,待机时间会大大缩短的重要原因。
比较简单评测CPU唤醒次数的方法是看dumpsys alarm,这里会详细记录从开机到当前的各个进程和服务唤醒CPU的次数和时间。通过对比唤醒次数和唤醒时间可以帮助我们分析后台进程和服务的耗电情况。Dumpsys alarm的输出看起来像这样:
其中544代表唤醒次数,38684ms代表唤醒时间。
4)Wake locks持有时间过长会导致耗电增加:
Wake locks是一种锁机制,有些文献翻译成唤醒锁。简单说,前面讲的灭屏CPU休眠还需要做一个判断,就是看是否还有任何应用持有wake locks。如果有,CPU将不会休眠。有些应用不合理地申请wake locks,或者申请了忘记释放,都会导致手机无法休眠,耗电增加。
原始数据:
测试方法:硬件设备提供稳压电源替代手机电池供电,在不同场景下记录手机平均电流。
测试设备:Monsoon公司的Power Monitor TRMT000141
测试机型:
测试用例:
灭屏benchmark(CPU进入休眠状态):7mA
灭屏WiFi:70 mA
灭屏3G net:270 mA
灭屏2G net GPRS:280mA
亮屏benchmark:140mA
亮屏wifi:280mA
亮屏3G net:360mA
亮屏2G:370mA
亮屏待机:140mA
亮屏wifi ping 1024包:150mA
亮屏wifi ping 65500包:160mA
灭屏 屏1024:45mA
灭屏ping 65500:55mA
关闭所有数据网络待机:7mA
添加一个apk都需要将LOCAL_PACKAGE_NAME的值添加到PRODUCT_PACKAGES才行。
而PRODUCT_PACKAGES一般在build/target/product/目录下的文件里都有定义
1. 编译模拟器时,会将以下文件中的PRODUCT_PACKAGES定义的apk都编译进去
build/target/product/banyan_addon.mk
build/target/product/sdk.mk
sdk/build/product_sdk.mk
development/build/product_sdk.mk
bum.tulaoshi.comild/target/product/core.mk
2. 编译真机版本是,会将以下文件中的PRODUCT_PACKAGES定义的apk都编译进去
build/target/product/$project.mk
build/target/product/common.mk
build/target/product/telephony.mk
build/target/product/core.mk
所以如果想添加一个apk使模拟器和真机都编译进去的话,就必须添加到core.mk(模拟器和真机都会包含)
Android2.2自发布以来,短短的几天时间里,先是谷歌NexusOne通过OTA升级,这两天各大Android手机厂商不断发出Android 2.2升级消息。HTC表示2010年出厂的Android手机都将升级到Android 2.2,其中Desire将在7月23日左右正式更新;摩托罗拉的机皇Droid也将在近期,成为第二个升级到Android 2.2系统的手机。相信同时网友开发的其它 Android 2.2ROM也很快会降临到各个机型上。
刷机Android 2.2后,网络共享、Flash视频播放等很容易就实现了,但是App2sd功能的开启却让不少新手机友很头疼,同时造成了很多比较烦人的小问题,看完这个教程,期待机友们都能够轻松的解决问题,玩转 Android 2.2。
Android 2.2原生态ROM是支持App2sd功能的,只是升级Android 2.2系统后,我们很惊奇的发现,将应用程序移动至SD卡的按钮是黑色的,机友可以在"应用程序"-"管理应用程序"-"随便点开一个已经安装的程序就能看到移动至SD卡,但不能点击确定。如上图。
一般情况下,SD卡是fat32格式时,实测App2sd默认功能是正常的。如果出现不能正常移动等状况,可以选择如下操作:
1、下载安装Nexus One电脑端驱动,还有ADB SHELL的文件和DLL等文件。
2、手机的菜单里 设置-应用程序-开发-USB调试打勾。
3、把下载解压出来的adb文件夹复制到系统盘(默认C盘)windows-system32文件目录里。(如果Windows7 32位用户,请把adb文件夹内的2个DLL文件复制到system文件夹)。
4、开始菜单打开CMD命令行。
5、输入adbshell
pm setInstallLocation 2
reboot
以上命令区分大小写,重启手机即可。
完成以上步骤后,就开启了 App2sd,不论是电子市场下载的软件还是自己安装的软件都是默认装到SD卡上的,但是请注意在这种情况下,任何带有桌面小部件的程序小部件会失效(消失)输入法也会在重启后需要重新勾选。
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/android/)解决方法:把这类"关键型"应用程序移回机身内存 重启后桌面小部件重新选择即可。
1: ./mk n(r) kernel; ./mk bootimage;当修改kernel相关代码时,要使用此命令,具体如下:
alps/kernel/
alps/mediatek/platform/mt65xx/kernel/
alps/mediatek/source/kernel/
alps/mediatek/coustom/mt65xx/kernel/
alps/mediatek/coustom/common/kernel/
alps/mediatek/coustom/$porject_name$/kernel
......
2: ./mk n pl 当修改preloader相关代码时,要使用此命令,具体如下:
alps/mediatek/platform/mt65xx/preloader/
alps/mediatek/source/preloader/
alps/mediatek/coustom/mt65xx/preloader/
alps/mediatek/coustom/common/preloader/
alps/mediatek/coustom/$porject_name$/kernle
......
3: ./mk uboot 当修改uboot相关代码时,要使用此命令,具体如下:
alps/mediatek/platform/mt65xx/uboot/
alps/mediatek/source/uboot/
alps/bootable/bootloader/uboot/
alps/mediatek/coustom/mt65xx/uboot/
alps/mediatek/coustom/common/buoot/
alps/mediatek/coustom/$porject_name$/uboot/
......
4: ./mk systemimage 当修改system相关代码时使用此命令,具体如下:
alps/frameworks/
alps/packages/
alps/vendor/
alps/hardware/
alps/dalvik/
...........
5: ./mk recoverimage 当修改recover相关代码时使用此命令,具体如下:
alps/bootable/recovery/
tulaoshialps/mediatek/customer/$project_name$/recovery/
......
6: ./mk factoryimage: 当修改factory相关代码时使用此命令,具体如下:
alps/mediatek/coustom/$project_name$/factory/
alps/mediatek/coustom/common/factory/
alps/mediatek/source/factory/
......
7: ./mk secroimage 当修改secro相关代码时使用此命令,具体如下:
alps/mediatek/source/secro/
alps/mediatek/coustom/$project_name$/secro/
.....
7: ./restproj 当修改KP_PROD相关代码时使用此命令
alps/KP_PROD/K233_XX/
Android系统由于严格的安全性设计,众多系统文件中有一些文件是非常重要的,而大多数类型可能刚入门的同学还比较陌生,这里给大家简单介绍一下。
排在第一个的就是DREAIMG.NBH,一般都是以.NBH为后缀的文件,这类文件是系统映像文件,该文件是系统升级更新的主要文件之一。所以非常重要哦。
以.apk为后缀的文件,这些文件就像是我们经常使用的Windows系统中的EXE文件,可以使安装包程序,也可以直接运行的程序,如果误删了就不能使用该程序了。
第三类为.img文件,这类文件一般也是系统映像的文件,不过和第一种NBH结尾的文件主要区别在于.img文件主要是针对特别分区,比如系统中的recovery.img和boot.img等文件。
最后一位最为重要,是我们经常卡刷Android手机时用到的update.zip,这是一个刷机ROM包,是系统更新或者是系统ROM的升级包。压缩包中包含了.NBH等文件。有兴趣的朋友可以自己下载看看其中的奥秘。
1、固件、刷固件
固件是指固化的软件,英文为firmware,它是把某个系统程序写入到特定的硬件系统中的flashROM。
手机固件相当于手机的系统,刷新固件就相当于刷系统。不同的手机对应不同的固件,在刷固件前应该充分了解当前固件和所刷固件的优点缺点和兼容性, 并做好充分的准备。
2、ROM(包)
智能手机配置中的ROM指的是EEProm(电擦除可写只读存储器)类似于计算机的硬盘,手机里能存多少东西就看他的容量了。底包+更新包统称为一个ROM包。
3、固件版本
固件版本是指官方发布的固件的版本号!里面包含了应用部分的更新和基带部分的更新,官方新固件的推出的主要目的是为了修复已往固件中存在的BUG以及优化相关性能。
4、CID、SUPERCID
CID是CustomerIDentity的简称,简单来说就是手机的平台版本,破解限制之后的CID称为SUPERCID。
刷机过程中SPL需要根据CID效验ROM是否可用,并决定是否刷入,一般情况下要求一定要对应CID的ROM才可以用,cid不同的rom是刷不上去的。对于普通的CID来说,一般有两个限制:1)不能刷入低版本的的ROM,2)不能刷入不同平台的ROM,比如:在台版机上刷欧版ROM、跨型号刷ROM等。SUPERCID有些型号手机的CID的限制是可以通过软件来破解的,已知的有www.Tulaoshi.com577W、586W等,但也有也些型号目前还没有有效的方法破解CID,如838G4。
破解限制之后的cid称为SUPERCID,拥有SUPERCID的机器可以刷任意版本和平台的ROM。具体来说,同一个手机既可以刷台湾的ROM,也可以刷日本的rom,也可以刷香港的rom等。甚至也可以刷进一个其他型号手机的ROM(如586W刷577W)。但是这也带来很大的危险性,因为没有了限制,没有了校验,刷入一个错误的ROM也是很容易的事。我们一般刷机时需要破解为SUPERCID,因为一方面现在大部分情况下刷机所用的ROM都是通不过CID校验的;另一方面万一刷机失败,对于SuperCID的手机更容易修复。
5、HTC Sense
HTC为Android系统设计的用户界面。从HTC Hero开始,HTC推出的所有产品都將整合HTC Sense。并符合三個设计理念,包括Make It Mine、Stay Close、与Discover the Unexpected。
6、Recovery
笼统的说,就是一个刷机的工程界面。如果你装过系统,你可能知道dos界面或者winPE,安装了Recovery相当于给系统安了一个dos界面。在recovery界面可以选择安装系统,清空数据,ghost备份系统,恢复系统等等。刷recovery与刷rom不冲突。
7、APP TO SD、APP2SD
一些Android机器在安装程序的时候默认是安装在机器内存上的,这就会导致原本不大的内存被占用,运行速度降低,而存储卡却利用率很低的情况。APP TO SD就是把程序安装到SD卡从而腾出手机内存提高运行速度的意思。APP2SD亦然,只是谐音而已。
8、Root
Root权限跟我们在Windows系统下的Administrator权限可以理解成一个概念 。Root是Android系统中的超级管理员用户帐户,该帐户拥有整个系统至高无上的权利,所有对象他都可以操作。只有拥有了这个权限我们才可以将原版系统刷新为改版的各种系统,比如简体中文系统。
9、RADIO
Radio简单的说是无线通信模块的驱动程序。ROM是系统程序,Radio负责网络通信,ROM和Radio可以分开刷,互不影响。如果你的手机刷新了ROM后有通讯方面的问题可以刷新RADIO试一试。
10、ROM分类
一般分为两大类,一种是出自手机制造商官方的原版ROM,特点是稳定,功能上随厂商定制而各有不同;另一种是开发爱好者利用官方发布的源代码自主编译的原生ROM,特点是根据用户具体需求进行调整,使ROM更符合不同地区用户的使用习惯。
11、IPL、SPL
IPL英文全称是InitialProgramLoader,负责主板,电源、硬件初始化程序、并把SPL装入RAM。IPL损坏了可把手机扔进河里,或者通过换字库来解决。
SPL英文全称是SecondProgramLoader,第二次装系统,就是负责装载OS操作系统到RAM中。另外SPL还包括许多系统命令,如mtty中使用的命令等。SPL损坏了还可以用烧录器重写。
SPL一般提供这几部分功能:检测手机硬件、寻找系统启动分区、启动操作系统为系统的基本维护提供操作界面,可以通过数据线与操作终端(如PC)建立连接,并接受和执行相应命令。它里面包含许多命令,像r2sd,l,doctest(危险命令,他会擦除gsmdata)等。我们常说的三色屏就是由SPL驱动的。检测SD卡,当你把一些特殊制作的SD卡插入后,SPL可以在启动时校验并根据SD卡内容刷机或执行一些命令。这有点类似于PC的从软驱启动。
IPL和SPL版本可以在三色屏中查看。按住照相键不放,然后短按电源开机键即可进入三色屏查看相关信息。
12、Sign
Sign是指给Rom包或者Apk应用程序签名,只有签名过的Rom或者Apk才可以刷入或安装到手机上。
13、Cyanogen、CM
Cyanogen是国外一位牛人,其制作的CyanogenMod系列Rom比较流行,主要追求的就是速度,CyanogenMod的缩写就是CM,因而我们也常见CM ROM。
14、adb
adb是Android Debug Bridge的缩写,意为Android系统的调试桥。通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,其实这就是用于谷歌Android系统的debug调试工具。
adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会daemon相关的网络端口,所以当我们运行APK安装器时adb进程就会自动运行。
除了上述的操作功能之外,我们还可以通过adb管理设备或手机模拟器的状态。还可以进行很多手机操作,比如刷ROM系统升级、运行shell命令等等。