ポケモンGoブームもそろそろ陰りが見えてきましたね。
私は格安スマホを使っているため、ARモードができないのはもとよりPokemonGo全体的に動作がもっさりしています。特に博士にポケモンを送るのが大変で、ポケモン詳細画面のスクロールがうまく行かない上に一匹ずつしか送れないので、かなりストレスフル。ということでADBとBashの練習がてら、博士へのポケモン転送を軽く自動化することで、半一括みたいな感じにして負担を減らしてみました。
思いつきなのでもっと簡単にリピートタスク自動化する方法は他にありそう。ぜひ教えてください。
免責:バグ等があっても責任は負いません。私は開発中に誤ってラッタを送ってしまいました。なお、間違えたくないポケモンはお気に入りに追加しておくと、誤送信を防げるようです。
ADBの導入
adbコマンド Windows
などでググってください。ここが一番ハードルが高い。
実行
-
source pokemon-go.sh
コードはあとで。 -
スマホとPCをUSBで繋ぎ、USBデバッグをオンにする。
-
ポケモンGoを起動してポケモン一覧を表示
- 番号順にソートして
消したい送りたいポケモン(コラッタ)を一番上に持ってくる
-
send-pokemons right 3
今回は、一番上の右から順に3体のポケモンを博士に送ります。 -
待つ
- 完了!
コード
数値とか自分の実機専用です。
2016年7月31日に「博士に送る」周りのUIが変更されてからのものに対応をしました。
ゆっくりスクロールを強制されるバグがなくなり、送信時間が短縮されました。
function send-pokemons () {
echo "Begin";
for ((i=1; i<=$2; i++)); do
echo $i
send-pokemon $1
done
echo "Finished";
}
function send-pokemon () {
case "$1" in
"left") x=130;;
"center") x=360;;
"right") x=590;;
*) echo "unknown position"
return;;
esac
# ポケモンリストで、一番上の指定した位置のポケモンをタップ
adb shell input tap $x 360
sleep 1
# フローティングアクションボタンをタップ
adb shell input tap 620 1180
# 「博士に送る」ボタンを押し確認画面で「はい」を押す
adb shell input tap 620 1040
adb shell input tap 360 670
sleep 3
}
function send-pokemons () {
echo "Begin";
for ((i=1; i<=$2; i++)); do
echo $i
send-pokemon $1
done
echo "Finished";
}
function send-pokemon () {
case "$1" in
"left") x=130;;
"center") x=360;;
"right") x=590;;
*) echo "unknown position"
return;;
esac
# ポケモンリストで、一番上の指定した位置のポケモンをタップ
adb shell input tap $x 360
sleep 1
# 「博士に送る」ボタンが表示されるまでスクロール。
# 私の場合時間をかけてゆっくりスクロールしないとアプリに認識されませんでした。
adb shell input swipe 700 1200 700 250 4300
sleep 1
# 「博士に送る」ボタンを押し確認画面で「はい」を押す
adb shell input tap 360 1050
adb shell input tap 360 670
sleep 3
}
解説
座標・待機時間を自分のスマホに調整する必要があります。
各値を調べるときは開発者向けオプション
でポインタの位置
をオンにすると便利です。
画面サイズはadb shell dumpsys window | grep "mUnrestrictedScreen"
で取れます。
send-pokemons (position) (count)
特に説明することも無いかと思いますが指定された(count)回数だけsend-pokemon (position)
を実行します。
send-pokemon (position)
一番上の(position)の位置にあるポケモンを博士に送ります。
adb shell input tap X Y
adb shell input swipe X1 Y1 X2 Y2 DURATION
adbのコマンドです。タップやスワイプを再現します。
sleep N
N秒停止するbashのコマンドです。スマホがサクサクなら必要ないかも。
ToDo
- もっといっぺんにいろんなポケモンを送れるようにする
- 以下でスクリーンショットができるので画像識別してもっと簡単にやりたい。
adb shell screencap -p | sed 's/\r$//' > XXX.png