ホーム画面が表示されるまでデバイスの待機をadbする方法は?


18

adbを使用して画面のロックを解除する必要があり、デバイスの起動が早すぎる(デバイスの起動時に)ため、画面のロック解除が失敗します。ホーム画面を検出する方法はありますか?それで、画面のロックを解除できますか?

これは、画面のロックを解除するために使用しているコマンドです-

adb wait-for-device shell input keyevent 82

回答:


23

adbデーモンが適切に起動するまで待機するだけであることが既にわかっているため、デバイスの待機は十分です。これはすでに初期化されています。完全なブートを確認するには、次のようなスクリプトに広告を表示できません。

擬似的に:

  1. デバイスの待機
  2. getprop sys.boot_completed!= 1が数秒間スリープする限り、getprop sys.boot_completedを再度チェックします。
  3. シェル入力キーイベント82

これは動作するはずです。

このようなもの:

#!/bin/bash

adb wait-for-device

A=$(adb shell getprop sys.boot_completed | tr -d '\r')

while [ "$A" != "1" ]; do
        sleep 2
        A=$(adb shell getprop sys.boot_completed | tr -d '\r')
done

adb shell input keyevent 82

これはテストされていないため、潜在的な間違いに注意してください


回答を編集して、読みやすくしてください。あなたは有効な答えを持っていますが、少し明快にすればみんなに役立つでしょう。ありがとう
HasH_BrowN

回答が編集されました。これがあなたの助けになることを願っています:)
ゼロ除算

良い答え+1、今では他の人がそれに従うことができます。それらの偶発的な瞬間のために常にバックアップを実行する」ことを忘れないでください;)
HasH_BrowN

2
の結果にgetpropキャリッジリターンがあることに気付いたので、adbコマンドを変更$(adb shell getprop sys.boot_completed | tr -d '\r')してトリックを実行しました。これは、キャリッジリターン文字を削除するだけです。
CoatedMoose

@ divided-by-zeroは、CoatedMooseが言及したトリミングを含めるように回答を修正してください。Umangも回答として受け入れてください。
ジェイシルデイブ

9

これは古い質問であり、境界線から外れていますが、1行で行う方法を次に示します。

adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done; input keyevent 82'

0

ここに私が思いついたものがあります:

adb wait-for-device shell <<ENDSCRIPT
echo -n "Waiting for device to boot "
echo "" > /data/local/tmp/zero
getprop dev.bootcomplete > /data/local/tmp/bootcomplete
while cmp /data/local/tmp/zero /data/local/tmp/bootcomplete; do 
{
    echo -n "."
    sleep 1
    getprop dev.bootcomplete > /data/local/tmp/bootcomplete
}; done
echo "Booted."
exit
ENDSCRIPT

echo "Waiting 30 secs for us to be really booted"
sleep 30

echo "Unlocking screen"
adb shell "input keyevent 82"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.