LoginSignup
4
0

More than 5 years have passed since last update.

Android端末のADBによるWiFi設定について(SH-M05編 Android 7.1.2)

Last updated at Posted at 2018-07-06

あらまし

Android(SH-M04)をキッティングするにあたりadbで自動化(バッチ化)することを思いついた。
apkのインストールなどは、問題なく行えたものの、
ADBでのWiFi設定が苦労したが、力技で解決できたので、共有したい。

ADBによるWiFi設定について

そもそも、標準では、CLIで設定する方法はないので、いろいろ探したところ、
StackOverFlowにて解決策を見つけた。
https://stackoverflow.com/questions/8708886/connecting-to-wi-fi-using-adb-shell
のjpihlさんが回答されている、
https://github.com/steinwurf/adb-join-wifi
を端末にインストールすることで解決できた。

実際は、インストール・設定完了後アンインストールをバッチで行った。

何事もないかに見えたが、テストで現場にてこの方法ではうまくいかないことが発覚した。

「SSIDがステルスの場合は、接続できない。」

いろいろ調べると、フラグがあるらしいことはわかったが、
adb-join-wifiにはこの機能がなかった。

ステルス回避策

いくつか端末を持ち込んでいたところ、つながる端末があった。
設定画面から手動で入れたものであった。
このため、

adb shell am start -n com.android.settings/.wifi.WifiSettings

 と

adb shell input tap 

などを駆使し、SH-M04でのキッティングは成功した。

なお、スクリーンショットを取るバッチファイルを作り、
TAPする座標を確認した。
座標確認に役立ったのは、以外にもペイントである。

本題は、SH-M05である。

Androidのバージョンが上がった関係で、メニューの中にSSIDを追加する項目がなかった。
SSIDが表示されているListViewの最終行に表示されていた。
セットアップ環境により、何行目に出てくるかわからない。

いろいろとこねくり回して、
com.android.settings.wifi.WifiDialog
が設定のダイアログだということはわかったが、表示させる術がわからなかった。
もし、ご存知の方がいたら教えてほしい。

ついぞ解決方法を見つけることとなった。

意外な犯人解決方法

わかってしまえば(力技では)単純な話であった。
実際に発行したのは以下のコマンドである。

adb shell am start -n com.android.settings/.wifi.WifiSettings
adb shell input keyevent 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 KEYCODE_ENTER

おわかりいただけただろうか。
KEYCODE_DPAD_DOWN(↓)を連打後、Enterキーを押すのである。
SSIDが表示されない領域まで持っていくのである。
↓を連打がミソで、SSIDが死ぬほど出ているような環境下であれば、20の値をもっと増やしてやれば良い。
なお、SSID以外はフォーカスは表示されないので注意されたい。

これが、ことの顛末である。

めでたし、めでたし。


なお、別件で、マルチバイトで文字列を流し込む必要が出てきたが、下記の記事で解決できた。
https://qiita.com/yuki-nakamura/items/4bd0ea7524521e731335

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0