android.os.Build
Build.VERSION
android.os.SystemClock
文档中对System.currentTimeMillis()进行了相应的描述,就是说它不适合用在需要时间间隔的地方,如Thread.sleep, Object.wait等,因为可以通过System.setCurrentTimeMillis来改变它的值。
要用时间间隔,推荐使用SystemClock中的相关方法。
android.os.PowerManager
PowerManager的flag的意思:
- Build.BOARD // 主板
- Build.BRAND // android系统定制商
- Build.CPU_ABI // cpu指令集
- Build.DEVICE // 设备参数
- Build.DISPLAY // 显示屏参数
- Build.FINGERPRINT // 硬件名称
- Build.HOST
- Build.ID // 修订版本列表
- Build.MANUFACTURER // 硬件制造商
- Build.MODEL // 版本
- Build.PRODUCT // 手机制造商
- Build.TAGS // 描述build的标签
- Build.TIME
- Build.TYPE // builder类型
- Build.USER
- // 运行结果
- /*
- board: unknown
- brand: generic
- cpu abi: armeabi
- device: generic
- display: google_sdk-eng 2.1 ERD79 22607 test-keys
- finger print: generic/google_sdk/generic/:2.1/ERD79/22607:eng/test-keys
- host: genki.mtv.corp.google.com
- id: ERD79
- manufacturer: unknown
- model: google_sdk
- product: google_sdk
- tags: test-keys
- time: 1261185425000
- type: eng
- user: android-build
- */
Build.BOARD // 主板
Build.BRAND // android系统定制商
Build.CPU_ABI // cpu指令集
Build.DEVICE // 设备参数
Build.DISPLAY // 显示屏参数
Build.FINGERPRINT // 硬件名称
Build.HOST
Build.ID // 修订版本列表
Build.MANUFACTURER // 硬件制造商
Build.MODEL // 版本
Build.PRODUCT // 手机制造商
Build.TAGS // 描述build的标签
Build.TIME
Build.TYPE // builder类型
Build.USER
// 运行结果
/*
board: unknown
brand: generic
cpu abi: armeabi
device: generic
display: google_sdk-eng 2.1 ERD79 22607 test-keys
finger print: generic/google_sdk/generic/:2.1/ERD79/22607:eng/test-keys
host: genki.mtv.corp.google.com
id: ERD79
manufacturer: unknown
model: google_sdk
product: google_sdk
tags: test-keys
time: 1261185425000
type: eng
user: android-build
*/
Build.VERSION
- // 当前开发代号
- Build.VERSION.CODENAME
- // 源码控制版本号
- Build.VERSION.INCREMENTAL
- // 版本字符串
- Build.VERSION.RELEASE
- // 版本号
- Build.VERSION.SDK
- // 版本号
- Build.VERSION.SDK_INT
- // 结果
- /*
- REL
- 22607
- 2.1
- 7
- 7
- */
- // Build.VERSION.SDK_INT可与switch搭配用
- switch (Build.VERSION.SDK_INT) {
- case Build.VERSION_CODES.BASE: // 1.0
- break;
- case Build.VERSION_CODES.BASE_1_1: // 1.1
- break;
- case Build.VERSION_CODES.CUPCAKE: // 1.5
- break;
- case Build.VERSION_CODES.CUR_DEVELOPMENT: // current dev version
- break;
- case Build.VERSION_CODES.DONUT: // 1.6
- break;
- case Build.VERSION_CODES.ECLAIR: // 2.0
- break;
- case Build.VERSION_CODES.ECLAIR_0_1: // 2.0.1
- break;
- case Build.VERSION_CODES.ECLAIR_MR1: // 2.1
- break;
- }
// 当前开发代号
Build.VERSION.CODENAME
// 源码控制版本号
Build.VERSION.INCREMENTAL
// 版本字符串
Build.VERSION.RELEASE
// 版本号
Build.VERSION.SDK
// 版本号
Build.VERSION.SDK_INT
// 结果
/*
REL
22607
2.1
7
7
*/
// Build.VERSION.SDK_INT可与switch搭配用
switch (Build.VERSION.SDK_INT) {
case Build.VERSION_CODES.BASE: // 1.0
break;
case Build.VERSION_CODES.BASE_1_1: // 1.1
break;
case Build.VERSION_CODES.CUPCAKE: // 1.5
break;
case Build.VERSION_CODES.CUR_DEVELOPMENT: // current dev version
break;
case Build.VERSION_CODES.DONUT: // 1.6
break;
case Build.VERSION_CODES.ECLAIR: // 2.0
break;
case Build.VERSION_CODES.ECLAIR_0_1: // 2.0.1
break;
case Build.VERSION_CODES.ECLAIR_MR1: // 2.1
break;
}
android.os.SystemClock
文档中对System.currentTimeMillis()进行了相应的描述,就是说它不适合用在需要时间间隔的地方,如Thread.sleep, Object.wait等,因为可以通过System.setCurrentTimeMillis来改变它的值。
要用时间间隔,推荐使用SystemClock中的相关方法。
- SystemClock.currentThreadTimeMillis(); // 在当前线程中已运行的时间
- SystemClock.elapsedRealtime(); // 从开机到现在的毫秒书(手机睡眠(sleep)的时间也包括在内)
- SystemClock.uptimeMillis(); // 从开机到现在的毫秒书(手机睡眠的时间不包括在内)
- SystemClock.sleep(100); // 类似Thread.sleep(100);但是该方法会忽略InterruptedException
- SystemClock.setCurrentTimeMillis(1000); // 设置时钟的时间,和System.setCurrentTimeMillis类似
- // 时间间隔
- long timeInterval = SystemClock.uptimeMillis() - lastTime;
- // do something with timeInterval
SystemClock.currentThreadTimeMillis(); // 在当前线程中已运行的时间
SystemClock.elapsedRealtime(); // 从开机到现在的毫秒书(手机睡眠(sleep)的时间也包括在内)
SystemClock.uptimeMillis(); // 从开机到现在的毫秒书(手机睡眠的时间不包括在内)
SystemClock.sleep(100); // 类似Thread.sleep(100);但是该方法会忽略InterruptedException
SystemClock.setCurrentTimeMillis(1000); // 设置时钟的时间,和System.setCurrentTimeMillis类似
// 时间间隔
long timeInterval = SystemClock.uptimeMillis() - lastTime;
// do something with timeInterval
android.os.PowerManager
PowerManager的flag的意思:
![点击查看原始大小图片](http://dl.iteye.com/upload/attachment/552019/6e2b7c9b-b317-39b7-b349-68a673702ae3.png)
- // PowerManager的一般用法,请求和释放唤醒锁
- PowerManager powerMgr = (PowerManager)
- getSystemService(Context.POWER_SERVICE);
- int flags = PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP;
- WakeLock wakeLock = powerMgr.newWakeLock(flags, "for debug purpose tag");
- wakeLock.acquire(); // 获取唤醒锁
- wakeLock.release(); // 释放唤醒锁
- // 在游戏中,会将acquire放在onResume中;将release放在onPause,这样在程序运行时就可以保持屏幕常量;在程序处在后台时,就恢复原来的设置。
- // PowerManager的其它api的使用
- powerMgr.goToSleep(SystemClock.uptimeMillis() + 100); // 100ms后进入睡眠
- powerMgr.isScreenOn(); // 屏幕是否亮着
- powerMgr.userActivity(SystemClock.uptimeMillis()+100, true); // 相当于按home键,会引起从睡眠激活
- // WakeLock的其它api
- wakeLock.acquire(1000); // 获取唤醒锁,并在1000ms后释放
- wakeLock.isHeld(); // 当前是否持有唤醒锁
- // 是否使用引用计数,默认是启用的。引用计数应该就是第一次请求为1,第二次加1,再一次再加1。
- // 在释放时,只有引用计数为0时才被视为完全释放(所以要多次调用release)
- wakeLock.setReferenceCounted(true);
// PowerManager的一般用法,请求和释放唤醒锁
PowerManager powerMgr = (PowerManager)
getSystemService(Context.POWER_SERVICE);
int flags = PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP;
WakeLock wakeLock = powerMgr.newWakeLock(flags, "for debug purpose tag");
wakeLock.acquire(); // 获取唤醒锁
wakeLock.release(); // 释放唤醒锁
// 在游戏中,会将acquire放在onResume中;将release放在onPause,这样在程序运行时就可以保持屏幕常量;在程序处在后台时,就恢复原来的设置。
// PowerManager的其它api的使用
powerMgr.goToSleep(SystemClock.uptimeMillis() + 100); // 100ms后进入睡眠
powerMgr.isScreenOn(); // 屏幕是否亮着
powerMgr.userActivity(SystemClock.uptimeMillis()+100, true); // 相当于按home键,会引起从睡眠激活
// WakeLock的其它api
wakeLock.acquire(1000); // 获取唤醒锁,并在1000ms后释放
wakeLock.isHeld(); // 当前是否持有唤醒锁
// 是否使用引用计数,默认是启用的。引用计数应该就是第一次请求为1,第二次加1,再一次再加1。
// 在释放时,只有引用计数为0时才被视为完全释放(所以要多次调用release)
wakeLock.setReferenceCounted(true);