【Android11】ケーブル無しでペアリングできる「ワイヤレスデバッグ」

USBケーブルでの接続なしに、クイックタイルから「ワイヤレスデバッグ」をタップするだけで、Wi-Fi接続できるようになりました。

 

ペアリングの手順

👉 ワイヤレスでバッグ | 機能と API の概要  | Android Developers 

初回に、端末とパソコンをペアリングしておく必要があります。

[開発者オプション] - [ワイヤレスデバッグ]

もちろんUSBケーブルは不要です。

パソコン上コンソールから。


~$ adb pair 192.168.0.6:42073 740464
Successfully paired to 192.168.0.6:42073 [guid=adb-(B7JX0TL0Z-Y7ThhK]

これで、ペアリング完了です。

そして、クイックタイル「ワイヤレスデバッグ」の表示/非表示は、

[開発者オプション] - [クイック設定開発者用タイル]

から設定できます。

しかし、これ、いろいろトロくね?

👉 【Android11】クイックタイルから「画面録画(スクリーンレコード)」が可能に 
👉 【謎?】QRコードによるデバイスのペア設定 – Android11 


android 電池の最適化 | Doze | スタンバイ | バッテリーセーバー

以前にも書きましたが、いろいろな節電処理が自動に行われているということで。

「電池の最適化」とは、バックグラウンド時にアプリを「スリープ」すること。

👉 ラジオや音楽アプリが勝手に終了する場合 

まずは、adb でカレントなステータスを確認したり、エミュレートしたりして自在に試してみることですよね。

以下の公式リファレンスベースに確認しながら関連の操作や語彙に馴染んでいきましょう。

👉 Doze とアプリ スタンバイ用に最適化する  |  Android デベロッパー  |  Android Developers 

 

Dozeモード

端末を使っていなければアプリのバックグラウンド処理を保留する

アイドルモード開始


$ adb shell dumpsys deviceidle force-idle

アイドルモード終了


$ adb shell dumpsys deviceidle unforce

デバイスを再度アクティブにする


$ adb shell dumpsys battery reset

 

スタンバイモード

アプリを操作していなければ、そのアプリのバックグランド処理を保留します。

スタンバイモードにする


$ adb shell dumpsys battery unplug
$ adb shell am set-inactive {PACKAGENAME} true

アプリ復帰する


$ adb shell am set-inactive {PACKAGENAME} false
$ adb shell am get-inactive {PACKAGENAME}

👉 電源に関する問題をテストする  |  Android デベロッパー  |  Android Developers 

 

アプリ スタンバイ バケット 

各アプリは、その使用パターンに基づいて 5 つの優先度バケットのいずれかに振り分けられます。システムは、各アプリが入っているバケットに基づいて、そのアプリで使用できるデバイス リソースを制限します。


$ adb shell dumpsys battery unplug


$ adb shell am set-standby-bucket {PACKAGENAME} active|working_set|frequent|rare


$ adb shell am set-standby-bucket {PACKAGENAME1} {BUCKET1} {PACKAGENAME2} {BUCKET2}...


$ adb shell am get-standby-bucket [PACKAGENAME]

👉 アプリ スタンバイ バケット  |  Android デベロッパー  |  Android Developers 

 

バックグラウンド制限


$ adb shell cmd appops set {PACKAGENAME} RUN_ANY_IN_BACKGROUND ignore


$ adb shell cmd appops set {PACKAGENAME} RUN_ANY_IN_BACKGROUND allow

 

バッテリーセーバー


$ adb shell dumpsys battery unplug
$ adb shell settings put global low_power 1
$ adb shell dumpsys battery reset

👉 電源管理に関する制限  |  Android デベロッパー  |  Android Developers 

バッテリー操作系


$ adb shell dumpsys battery


$ adb shell dumpsys battery -h

電源を抜く


$ adb shell dumpsys battery unplug 

30%にセット


$ adb shell dumpsys battery set level 30

電源を元に戻す


$ adb shell dumpsys battery reset

 

まとめ

端末や対象のアプリそれぞれのステータスを確認しながら進むと良いででしょう。


$ adb shell dumpsys deviceidle


$ adb shell dumpsys battery


$ adb shell settings list {system|secure|global}


$ adb shell am get-inactive {PACKAGENAME}


$ adb shell am get-standby-bucket [PACKAGENAME]


$ adb shell cmd appops get {PACKAGENAME}

カレントな状態が目で見てはっきり分かると、

自然に次にやるべきことはきちんと見つかります。

👉 電源に関する問題をテストする  |  Android デベロッパー  |  Android Developers 


単独で最新版をダウンロードできるようになった platform-tools のURL

これまでは, サイズがでかい Android-SDK 内にあった platform-tools.


~/sdk $ tree -L
.
├── add-ons
│   └── addon-google_apis-google-21
├── build-tools
│   ├── 21.0.0
│   ├── 21.1.0
│   ├── 21.1.1
│   ├── 21.1.2
│   ├── 22.0.0
│   ├── 22.0.1
│   ├── 23.0.0
│   ├── 23.0.1
│   ├── 23.0.2
│   ├── 23.0.3
│   ├── 24.0.0
│   ├── 24.0.1
│   ├── 24.0.2
│   ├── 24.0.3
│   └── 25.0.0
├── docs
│   ├── _redirects.yaml
│   ├── about
│   ├── app.yaml
│   ├── assets
│   ├── auto
│   ├── channels
│   ├── community
│   ├── design
│   ├── develop
│   ├── distribute
│   ├── favicon-a.ico
│   ├── favicon.ico
│   ├── gcm_navtree_data.js
│   ├── gms_navtree_data.js
│   ├── google
│   ├── googlef295f8c7d59b0d29.html
│   ├── guide
│   ├── images
│   ├── index.html
│   ├── jd_collections.js
│   ├── jd_extras.js
│   ├── jd_lists_unified.js
│   ├── jd_tag_helpers.js
│   ├── legal.html
│   ├── license.html
│   ├── navtree_data.js
│   ├── ndk
│   ├── offline.html
│   ├── out
│   ├── package.xml
│   ├── preview
│   ├── reference
│   ├── resources
│   ├── resources.html
│   ├── robots.txt
│   ├── samples
│   ├── sdk
│   ├── security_at_android_dot_com.txt
│   ├── shareables
│   ├── sitemap-intl.txt
│   ├── sitemap.txt
│   ├── source.properties
│   ├── support.html
│   ├── timestamp.js
│   ├── tools
│   ├── training
│   ├── tv
│   └── wear
├── extras
│   ├── android
│   ├── google
│   └── m2repository
├── licenses
│   ├── android-sdk-license
│   └── android-sdk-preview-license
├── patcher
│   ├── v1
│   ├── v3
│   └── v4
├── platform-tools
│   ├── NOTICE.txt
│   ├── adb
│   ├── api
│   ├── dmtracedump
│   ├── etc1tool
│   ├── fastboot
│   ├── hprof-conv
│   ├── lib
│   ├── package.xml
│   ├── source.properties
│   ├── sqlite3
│   └── systrace
├── platforms
│   ├── android-19
│   ├── android-21
│   ├── android-24
│   └── android-25
├── samples
├── sources
│   └── android-24
├── system-images
│   ├── android-21
│   └── android-22
├── temp
│   ├── docs-22_r01.zip
│   ├── docs-22_r01.zip.inf
│   ├── sysimg_x86_64-22_r01.zip
│   └── sysimg_x86_64-22_r01.zip.inf
└── tools
    ├── NOTICE.txt
    ├── android
    ├── ant
    ├── apps
    ├── bin
    ├── bin64
    ├── ddms
    ├── draw9patch
    ├── emulator
    ├── emulator-check
    ├── emulator64-arm
    ├── emulator64-crash-service
    ├── emulator64-mips
    ├── emulator64-x86
    ├── hierarchyviewer
    ├── jobb
    ├── lib
    ├── lib64
    ├── lint
    ├── mksdcard
    ├── monitor
    ├── monkeyrunner
    ├── package.xml
    ├── proguard
    ├── qemu
    ├── screenshot2
    ├── source.properties
    ├── support
    ├── templates
    ├── traceview
    └── uiautomatorviewer

分割されて単独で, Google サーバーからzipで配信されるようになりました.

収録物は以下.


~/platform-tools $ tree -L 1
.
├── NOTICE.txt
├── adb
├── api
├── dmtracedump
├── etc1tool
├── fastboot
├── hprof-conv
├── lib
├── source.properties
├── sqlite3
└── systrace

~/platform-tools $ ./adb version
Android Debug Bridge version 1.0.36
Revision 0e9850346394-android

~/platform-tools $ ./fastboot --version
fastboot version 0e9850346394-android

~/platform-tools $ ./sqlite3 --version
3.9.2 2015-11-02 18:31:45 bda77dda9697c463c3d0704014d51627fceee328

SDKが必要ない場合でも, adb, fastboot, sqlite3 などのバイナリツールを気軽にダウンロードしやすくなります.

platform-tools-latest-windows.zip

platform-tools-latest-darwin.zip

platform-tools-latest-linux.zip

参考 : Ever wanted to download adb or fastboot without having to download the whole of Android Studio?.


急げ!! いまなら使えるイースターエッグ「adb lolcat」

lolcat_-_Google_Search

lolcat(ロルキャット、あるいはエル・オー・エル・キャット)は、多くの場合ネコの画像にユーモラスで風変わりなキャプションを、正しくない英語で付けたものである。インターネットスラングなどに見られる文法の貧弱な英語のパロディである。lolcatは笑いを表す頭文字語のLOLと「cat」(ネコ)の複合語である。

Lolcat - Wikipedia

android のデバッグツールである「adb」の隠しコマンドが, Android N で 削除されはじめているようです.

$ adb hell

adb_hell

    else if (!strcmp(argv[0], "shell") || !strcmp(argv[0], "hell")) {
        char h = (argv[0][0] == 'h');
        if (h) {
            printf("\x1b[41;33m");
            fflush(stdout);
        }

adb/commandline.cpp - 6.0.1_r22

以下は, Nでも 健在です.

いまのうちに使っておきましょう.

$ adb lolcat

 /* other commands */
    else if (!strcmp(argv[0],"logcat") || !strcmp(argv[0],"lolcat") || !strcmp(argv[0],"longcat")) {
        return logcat(transport_type, serial, argc, argv);
    }

$ adb longcat

    if (!strcmp(argv[0], "longcat")) {
        cmd += " -v long";
    }

adb/commandline.cpp - Android N Preview1

どうでもいいですかね.


PHP+ADB でAndroid画面操作の保存と再現をする

adb経由で getevent/sendevent を使います.

Getevent | Android Developers

adb_—_121×44

やってみておもしろかったの以下からのPHPへの移植です.

getevent/sendeventでAndroid端末の操作自動化

実行方法は同様に,ADB接続したパソコン上コンソールから

保存

$ adb shell getevent /dev/input/event2 | php getevent.php > events.txt

保存したファイルはシェルスクリプトです.

$ cat event.txt
sleep 0.000
adb shell sendevent /dev/input/event2 0 0 0
sleep 0.000
adb shell sendevent /dev/input/event2 3 53 283
sleep 0.010
adb shell sendevent /dev/input/event2 3 54 2331
sleep 0.000
adb shell sendevent /dev/input/event2 0 0 0
sleep 0.000
adb shell sendevent /dev/input/event2 3 57 4294967295
sleep 0.060
adb shell sendevent /dev/input/event2 0 0 0
sleep 0.000
adb shell sendevent /dev/input/event2 3 57 1886
sleep 0.344
adb shell sendevent /dev/input/event2 3 53 800
sleep 0.000
adb shell sendevent /dev/input/event2 3 54 2312
sleep 0.000
adb shell sendevent /dev/input/event2 3 58 64
sleep 0.000
adb shell sendevent /dev/input/event2 3 48 4
sleep 0.000
adb shell sendevent /dev/input/event2 0 0 0
sleep 0.000
adb shell sendevent /dev/input/event2 3 53 798
sleep 0.010
adb shell sendevent /dev/input/event2 3 54 2311
...

このときの タッチパネルを表す /dev/input/event2 は端末によって違います.

コンソールから以下で確認しましょう.

以下Nexus4の場合.

$ adb shell getevent
add device 1: /dev/input/event0
  name:     "pmic8xxx_pwrkey"
add device 2: /dev/input/event1
  name:     "keypad_8064"
add device 3: /dev/input/event4
  name:     "apq8064-tabla-snd-card Headset Jack"
add device 4: /dev/input/event3
  name:     "apq8064-tabla-snd-card Button Jack"
add device 5: /dev/input/event5
  name:     "hs_detect"
add device 6: /dev/input/event2
  name:     "touch_dev"
^C

再現

$ sh events.txt

続きを読む >>