如何唤醒的Android与利用亚行 - 我想调试应用程序的每个新版本之前醒来(好像睡着了一样)的Android终端。
典型的流程是:1。我在Eclipse中的一些变化。 2.同时屏幕熄灭与否。 3.我运行“调试”,想迫使屏幕醒来。
我发现了“电源键”仿真的方法,但它并没有打开它,而是切换电源状态。 我不想额外的代码添加到我的应用程序。 什么其他的方法做这样简单的工作,请大家帮忙。
如何唤醒的Android与利用亚行 - 我想调试应用程序的每个新版本之前醒来(好像睡着了一样)的Android终端。
典型的流程是:1。我在Eclipse中的一些变化。 2.同时屏幕熄灭与否。 3.我运行“调试”,想迫使屏幕醒来。
我发现了“电源键”仿真的方法,但它并没有打开它,而是切换电源状态。 我不想额外的代码添加到我的应用程序。 什么其他的方法做这样简单的工作,请大家帮忙。
adb shell input keyevent KEYCODE_WAKEUP
如上所述这里 ,这会唤醒器件。 行为有点像KEYCODE_POWER但如果该设备已经醒了就没有效果。
要切换休眠/唤醒一个命令就可以发出
adb shell input keyevent KEYCODE_POWER
只需使用:
adb shell input keyevent 26
以下是我想出了:
adb shell dumpsys power | grep "mScreenOn=true" | xargs -0 test -z && adb shell input keyevent 26
这将首先检查,看看是否在屏幕上。 如果不是,它将模拟电源键,这将打开设备的屏幕上。
您可以通过亚行检查设备的当前电源状态(包括显示器) dumpsys power
命令,发送功率按键下压事件只有当显示器关闭。 在简单的解决方案将在开发人员选项被完全禁止显示超时“同时连接到USB”。
你还可以添加以下标志您onCreate()
在您的主要活动:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
这样,当它被装载到Eclipse中,通过该装置设备要醒来。
如果执行adb shell input keyevent KEYCODE_POWER
,结果被Killed
,你应使用执行root用户su
前。
睡眠: (adb shell) input keyevent KEYCODE_SLEEP
唤醒: (adb shell) input keyevent KEYCODE_WAKEUP
切换: (adb shell) input keyevent KEYCODE_POWER
对于Windows和Eclipse,你可以使用.bat文件:
@ECHO OFF
setlocal
for /f "delims= tokens=1*" %%a in ('adb shell dumpsys power ^| findstr.exe "mScreenOn="') DO (
for /f "delims== tokens=2*" %%S in ("%%a") do (
if "%%S" == "false" (goto move1) else (goto move2)
)
)
:move1
adb shell input keyevent 26
goto end
:move2
goto end
:end
exit
它会检查,如果屏幕处于关闭状态,切换电源状态。 要使用Eclipse使用该bat文件应作为“外部工具”(只需填写的路径,.bat)并将其链接到项目中它的属性(建设者 - 导入 - )。
我用下面的唤醒用于自动化测试的远程设备。 如果屏幕不亮,那么它将按电源按钮,然后按菜单按钮。
(
cd ${platform-tools};
./adb shell dumpsys power | grep -i 'SCREEN_ON' >/dev/null;
if [ $? -eq 0 ]; then
echo "Screen is on...";
else
echo "Pressing buttons to wake-up...";
# http://developer.android.com/reference/android/view/KeyEvent.html
./adb shell input keyevent 26; # Power
./adb shell input keyevent 82; # Menu
echo "Pausing for state to settle...";
sleep 1;
./adb shell dumpsys power | grep -i 'SCREEN_ON';
fi;
echo '---';
./adb shell dumpsys power | grep -i 'SCREEN'
)
我知道这是一个什么样的OP请求相反的,但我想指出的“真正睡着”了其他读者的定义:如果亚行有效,则该设备不是真正睡着了,因为USB是和命令提示运行(亚行是去壳怎么回事工作?)。 当完全睡着了,只有物理电源按钮将唤醒它(除非其它按钮被选择为在BSP唤醒源)。 我的项目吸引约120毫安与屏幕关闭,但在睡眠模式下仅23毫安(断开USB连接线)。 “亚行外壳输入的keyEvent 26”在此模式下不起作用。 同样没有串行控制台。 我测试夹具确实有进入电池和外部电源线分开。 我可以切换电源线(与连接的电池)将其唤醒。 我也有特异性断开USB用于测试的睡眠部分的切换USB集线器。
我希望这可以给别人一些帮助。