web-dev-qa-db-ja.com

目を覚ますAndroid adbまたはEclipseを使用して(デバッグの直前に)?

ウェイクアップする方法Android with adb-私は(眠っている場合)ウェイクアップしたい)Androidアプリケーションのすべての新しいバージョンをデバッグする前にターミナル。

一般的なフローは次のとおりです。1. Eclipseでいくつかの変更を行います。 2.その間、画面がオフになるかどうか。 3.「デバッグ」を実行して、強制的に画面を起動させたい。

「電源キー」エミュレーションを備えたメソッドを見つけましたが、オンにせず、電源状態を切り替えます。アプリケーションにコードを追加したくありません。そのような些細な仕事をする他の方法は何ですか、助けてください。

23
Chameleon
adb Shell input keyevent KEYCODE_WAKEUP

here で説明したように、これによりデバイスがウェイクアップします。 KEYCODE_POWERのように動作しますが、デバイスがすでに起動している場合は効果がありません。

1つのコマンドでスリープ/スリープ解除を切り替えるには、次のコマンドを発行できます

adb Shell input keyevent KEYCODE_POWER
36

ただ使用する:

adb Shell input keyevent 26
16
Rene Barbosa

これが私が思いついたものです:

adb Shell dumpsys power | grep "mScreenOn=true" | xargs -0 test -z && adb Shell input keyevent 26

これにより、最初に画面がオンになっているかどうかが確認されます。そうでない場合は、電源キーをエミュレートして、デバイスの画面をオンにします。

8
Brian

dumpsys powerコマンドでadbを介してデバイスの現在の電源状態(ディスプレイを含む)を確認し、ディスプレイがオフの場合にのみ電源キーを押すイベントを送信できます。より簡単な解決策は、開発者オプションで「USBに接続している間」に表示タイムアウトを完全に無効にすることです。

3
Alex P.

adb Shell input keyevent KEYCODE_POWERKilledを取得した場合は、前にsuを実行してrootユーザーを使用する必要があります。

睡眠:(adb Shell) input keyevent KEYCODE_SLEEP

目を覚ます:(adb Shell) input keyevent KEYCODE_WAKEUP

トグル:(adb Shell) input keyevent KEYCODE_POWER

3
吴毅凡

メインアクティビティの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を介してデバイスにロードされたときに、デバイスがウェイクアップします。

3
amark

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へのパスを入力するだけ)、そのプロパティでプロジェクトにリンクする必要があります(ビルダー-インポート-)。

0
Sergey Grabak

自動テスト用にリモートデバイスをウェイクアップするには、以下を使用しました。画面がオンになっていない場合は、電源ボタンを押してからメニューボタンを押します。

(
  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'
)
0
TJR

これはOPが要求したものと反対であることは知っていますが、他の読者のために「本当に眠っている」の定義を指摘したかったのです。adbがアクティブな場合、USBがオンでコマンドプロンプトが実行されています(adb Shellは他にどのように機能しますか?)。完全にスリープ状態になると、物理的な電源ボタンのみがそれをウェイクアップします(BSPでウェイクソースとして他のボタンが選択されている場合を除く)。私のプロジェクトでは、画面をオフにした状態で約120mAを消費していますが、スリープモードでは23maしかありません(USBケーブルを取り外します)。 「adb Shell input keyevent 26」は、このモードでは機能しません。シリアルコンソールも同様です。テストフィクスチャは、バッテリーと外部電源ラインに別々にアクセスできます。バッテリーを接続した状態で電源ラインを切り替えて、ウェイクアップできます。また、テストのスリープ部分のためにUSBを切断するスイッチUSBハブもあります。

これが誰かの助けになることを願っています。

0
gyent