当前位置: 代码迷 >> Android >> 奇怪,Android应用中在手机充电时运行正常,电池供电不能运行。为何
  详细解决方案

奇怪,Android应用中在手机充电时运行正常,电池供电不能运行。为何

热度:64   发布时间:2016-04-28 07:19:59.0
奇怪,Android应用中在手机充电时运行正常,电池供电不能运行。为什么?
开发一个能将手机从睡眠状态唤醒的应用,采用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充电时,手机并未进入睡眠状态。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吧,可以仿照闹钟。
  相关解决方案