开发一个能将手机从睡眠状态唤醒的应用,采用wakelock实现,java代码如下:
mWakeLock = mPowerManager.newWakeLoc(PowerManager.SCREEN_DIM_WAKE_LOCK |PowerManager.ACQUIRE_CAUSES_WAKEUP,getClass().getName());
mWakeLock.acquire();
手机连接充电器或计算机USB口调试时,可以将手机唤醒;但一旦脱离计算机或不充电,就无法唤醒手机。
大家知道为什么,有什么建议?
android应用 java usb
------解决方案--------------------
因为手机在充电时不会suspend
试着通过用alarm来唤醒
------解决方案--------------------
连接USB充电时,手机并未进入睡眠状态。PowerManager.SCREEN_DIM_WAKE_LOCK
------解决方案--------------------
PowerManager.ACQUIRE_CAUSES_WAKEUP在屏幕亮的时候能够保持亮的状态,如果用户按下power键熄屏,在未连接USB的情况下,手机一样会睡眠。
PowerManager.PARTIAL_WAKE_LOCK才可以做到用户手动熄屏后,CPU仍然不睡眠。但是过15分钟后,如果系统检测到你的应用持有一个WakeLock一直没释放,会强制把你的进程关闭的,然后系统又进入睡眠了。相关的代码你可以看一下frameworks/base/services/java/com/android/server/am/ActivityManagerService.java里的checkExcessivePowerUsageLocked()方法。
------解决方案--------------------

------解决方案--------------------
很显然,插入usb的时候是不会进入deepsleep的。
在拔掉usb之后,进入了deepsleep,你的程序也得不到运行(被挂起),所以不可能能点亮屏幕。
正确的做法就是起个alarm,用alarmmanager吧,可以仿照闹钟。