#untitled note

私的な考えとかメモ、その他トラブルシュート

液晶が壊れてタップが出来ない!そんな時にASM。

事の発端

Nexus7にスマホを投げつけて壊した。
皆もスマホを投げるときはその先に大切なモノが無いか確認しようね。

修理に出すと100%データが消えて帰って来るので、その前にデータを抜き出すことにしたのだが、
ケリ姫やクロスサマナーなどのスマホゲー系アプリはUSBマウス操作を受け付けないという事がわかったので、どうにかならんか?というのを調べた。

解決策その1

adb shell input tap xxx yyyを使う
参考:Androidのadbコマンドからタップイベントを起こす - Tatuas Blog

adbが使えるなら、これでも出来た。
adb shell input tap 100 200
例えば上のように書いて実行すると、x:100 y:200の座標に内部的にタップ処理が走る。
ただ、座標をいちいち調べないと行けないのは面倒極まり無いのでボツ。


ちなみに、Nexus7ではBACKキーもソフトキーなので、BACKはこいつにやらせた。
adb shell input keyevent KEYCODE_BACK
(後から気づいたのだが、これは普通にマウスでBACKを押しても良かった。)

解決策その2(おすすめ)

Android Screen Monitorを使う。

DL先→Android Screen Monitor - adakoda

このAndroidScreenMonitorことASM、出てきた当初は本当にスクリーンをモニタするだけだったのだが
バージョンアップを重ねて、なぜかサイト上に説明されていないのに、PC上の画面をクリックすると、その座標をタップする機能までついているのだ。

きっちりバージョンアップを重ねてくれている事に本当に感謝、感謝です。

今回はこの方法を使った。

ASM操作方法

インストール方法、初期操作の方法はadakodaさんのページをしっかり読んでください。

1.操作はASMに表示する端末を選択する。

2.端末が表示されるまでちょっと待つ。

3.タップしたいところをASM上の画面でクリック
これだけだ。

Q.クリックが効かないんだが?

たまになぜか効かない時がある。
慌てず騒がず、一度端末からUSBを抜いてASMを終了させ、もう一度USBを繋いでASMを起動してみよう。

Q.画面遷移が遅すぎなんだが?

なんたるワガママ!
USBでも10秒ぐらいラグがあるが、タップ操作自体は画面に関係なくできるので、液晶が無事に映るなら、実際の端末の画面を見ながら進めて行っても良い。

クリックしてからボタンを離すまでは、液晶に指を押し付けてなぞっている状態と同じなので、スマホ系のゲームでタッチの軌跡を表示するタイプや、ボタンを押した時にボタンが光るようなUIの時はそれを目印にしよう。

Q.画面が縦横逆なんだが?

ASM上の画面で右クリック→Orientationから
Portrait(縦画面)
Landscape(横画面)
の好きな方を選ぶが良い。

Q.画面の縦横はあってるんだけど、反転してるだが?

携帯端末側の自動回転をONにして、向きが合うようにひっくり返せ!
ひっくり返した画面がASM上に表示されるのも、もちろん時間がかかるぞ。

まとめ

今回は液晶に画面は表示されるけど、タップだけが効かないという状態だったので、内部的にタップ処理を発生させる方法を探した(と言うか知ってた)のでそれを試しただけなのだが、多分同じ人がいそうなので書いておいた。

今回紹介したASMとadb input keyeventは、液晶画面が壊れて全く映らなくなったり、ボタンが壊れて泣きそうになったりした時には強い味方になってくれるので覚えておこう。

追記:adbを有効にしてなかったら…?

書いてなかったけど、上記の方法はいずれもadbを使う。adbをONにしてなかったらほぼ詰み(たぶん)。
僕ならadb設定の階層・位置を画像検索とかしまくって調べて、USBマウスかキーボードを接続して勘でONにする(めっちゃ大変だろうけど)
うまくadbをONにできてればPCで繋げた時にドライバを認識するはず。