「このボタンの正確な位置を知りたい」 「自動化アプリで特定の場所をタップさせたい」 「アプリ開発でタッチ位置を取得したい」
Androidスマホの画面上の座標(X座標、Y座標)を知ることで、様々なことが可能になります。
ゲームの自動化、UIテストの効率化、アプリ開発でのタッチ処理など、座標情報は意外と幅広く活用できるんです。
今回は、一般ユーザーでも使える簡単な方法から、アプリ開発者向けの実装方法まで、レベル別に解説していきます。あなたの目的に合った方法がきっと見つかりますよ!
座標システムの基本を理解しよう

Androidの座標の仕組み
スマホ画面の座標は、**左上が原点(0, 0)**になっています。
(0,0) ────────→ X軸(横方向)
│
│ 画面の中央あたり
│ (540, 960)など
↓
Y軸(縦方向)
座標の読み方:
- X座標:左から右へ増加(横の位置)
- Y座標:上から下へ増加(縦の位置)
- 単位:ピクセル(px)
例えば、フルHD画面(1080×1920)なら:
- 左上:(0, 0)
- 右上:(1079, 0)
- 左下:(0, 1919)
- 右下:(1079, 1919)
- 中央:(540, 960)
方法1:開発者オプションで座標を表示(最も簡単!)
設定手順
一般ユーザーでも5分でできる方法です!
ステップ1:開発者オプションを有効化
- 設定アプリを開く
- 「デバイス情報」または「端末情報」をタップ
- メーカーによって名称が異なる
- 「ビルド番号」を7回連続タップ
- 「開発者になりました」と表示されたら成功
ステップ2:座標表示をオンにする
- 設定 → システム → 開発者オプション
- 「ポインターの位置」をオン
- 「タップを表示」もオンにすると便利
表示される情報の見方
画面上部に小さな情報バーが表示されます:
X:320 Y:568 Xv:0 Yv:0 P:0.5 S:0.3
各項目の意味:
- X, Y:現在タッチしている座標
- Xv, Yv:移動速度(ベロシティ)
- P:押圧の強さ(プレッシャー)
- S:タッチ面積(サイズ)
活用例
使い道:
- 自動化アプリの座標設定
- UIデザインの位置確認
- ゲームマクロの作成
- バグ報告時の正確な位置情報
方法2:専用アプリを使う(機能豊富)
おすすめアプリ
1. Touch Test(無料)
- シンプルで使いやすい
- マルチタッチ対応
- 座標履歴の記録
2. Developer Assistant(無料)
- 座標表示以外の開発ツールも豊富
- カラーピッカー機能付き
- 画面サイズ情報も表示
3. AutoInput(有料)
- Taskerと連携可能
- 座標の自動記録
- マクロ作成機能
アプリ使用時の注意点
権限について:
- 「他のアプリの上に表示」権限が必要
- アクセシビリティ権限を求められることも
- 信頼できるアプリのみインストール
方法3:ADBコマンドで座標を取得(PC経由)

ADB(Android Debug Bridge)とは?
PCからAndroidを操作するための開発者ツールです。
セットアップ手順
1. PCの準備
# Windows: Android SDK Platform Toolsをダウンロード
# Mac: brew install android-platform-tools
# Linux: sudo apt install adb
2. スマホ側の設定
- 開発者オプションで「USBデバッグ」をオン
- PCとUSBケーブルで接続
- 「このPCを信頼しますか?」で許可
座標取得コマンド
リアルタイムでタッチイベントを監視:
adb shell getevent -l
出力例:
/dev/input/event2: EV_ABS ABS_MT_POSITION_X 000001fe
/dev/input/event2: EV_ABS ABS_MT_POSITION_Y 00000384
16進数で表示されるので、10進数に変換が必要:
- 000001fe → 510(X座標)
- 00000384 → 900(Y座標)
より見やすい形式で表示:
adb shell input tap 500 1000 # 座標(500,1000)をタップ
adb shell input swipe 100 200 300 400 # スワイプ
方法4:アプリ開発での実装方法
Javaでの実装
基本的なタッチイベントの取得:
@Override
public boolean onTouchEvent(MotionEvent event) {
// タッチした座標を取得
float x = event.getX();
float y = event.getY();
// アクションの種類を判定
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// タッチ開始
Log.d("Touch", "押下: X=" + x + ", Y=" + y);
break;
case MotionEvent.ACTION_MOVE:
// ドラッグ中
Log.d("Touch", "移動: X=" + x + ", Y=" + y);
break;
case MotionEvent.ACTION_UP:
// タッチ終了
Log.d("Touch", "離す: X=" + x + ", Y=" + y);
break;
}
return true;
}
Kotlinでの実装
より簡潔な書き方:
override fun onTouchEvent(event: MotionEvent): Boolean {
val x = event.x
val y = event.y
when (event.action) {
MotionEvent.ACTION_DOWN -> {
Log.d("Touch", "タッチ座標: ($x, $y)")
}
MotionEvent.ACTION_MOVE -> {
Log.d("Touch", "移動中: ($x, $y)")
}
MotionEvent.ACTION_UP -> {
Log.d("Touch", "リリース: ($x, $y)")
}
}
return true
}
View上での座標取得
特定のビューでの座標:
button.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// View内での相対座標
float x = event.getX();
float y = event.getY();
// 画面全体での絶対座標
float rawX = event.getRawX();
float rawY = event.getRawY();
Log.d("座標", "相対: (" + x + "," + y +
") 絶対: (" + rawX + "," + rawY + ")");
return false;
}
});
実践的な活用例

自動化アプリでの使用
Taskerでの座標指定:
- AutoInputプラグインをインストール
- 座標を確認(開発者オプション使用)
- タスクで「AutoInput → Action」
- 座標を入力して自動タップ
使用例:
- 毎朝の定型操作を自動化
- ゲームのデイリーボーナス取得
- 繰り返し作業の効率化
UIテストの自動化
Espressoでの座標クリック:
// 特定座標をタップ
ViewActions.click(
GeneralLocation.translate(
GeneralLocation.CENTER,
0, -100 // 中央から上に100px
)
);
ゲーム開発での活用
Unity(C#)での実装例:
void Update() {
if (Input.touchCount > 0) {
Touch touch = Input.GetTouch(0);
Vector2 pos = touch.position;
// スクリーン座標をワールド座標に変換
Vector3 worldPos = Camera.main.ScreenToWorldPoint(
new Vector3(pos.x, pos.y, 10f)
);
}
}
座標に関するトラブルシューティング
問題1:座標がずれる
原因と対策:
ステータスバーの高さ:
- getRawY()とgetY()の違いに注意
- ステータスバーの高さ分を考慮
画面密度(DPI)の違い:
// dpをpxに変換
float scale = getResources().getDisplayMetrics().density;
int px = (int)(dp * scale + 0.5f);
問題2:マルチタッチの処理
複数の指を識別:
int pointerCount = event.getPointerCount();
for (int i = 0; i < pointerCount; i++) {
int pointerId = event.getPointerId(i);
float x = event.getX(i);
float y = event.getY(i);
Log.d("MultiTouch", "ID:" + pointerId +
" 座標:(" + x + "," + y + ")");
}
問題3:画面回転時の対応
向きによる座標系の変化:
- 縦向き:1080×1920
- 横向き:1920×1080
対策:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
セキュリティとプライバシーの注意点
気をつけるべきこと
座標情報の扱い:
- パスワード入力位置の記録は危険
- 個人情報に関わる座標データの保護
- 他アプリの座標取得は制限される
アクセシビリティ権限:
- 強力な権限なので慎重に許可
- 信頼できるアプリのみに付与
- 定期的に権限を見直す
よくある質問
Q: 開発者オプションを有効にしても大丈夫?
A: 基本的に安全ですが:
- USBデバッグは使用後オフに
- 知らないPCには接続しない
- アニメーション速度変更は問題なし
Q: 座標の単位は?
A: ピクセル(px)が基本:
- dp(密度非依存ピクセル)に変換可能
- 機種によって画面サイズが異なる
- 相対位置での指定も検討
Q: iPhoneでも同じ方法が使える?
A: iOSは異なります:
- 開発者オプションはない
- Xcodeでの開発が必要
- 脱獄なしでは制限が多い
Q: 座標を使った自動化は規約違反?
A: アプリによって異なる:
- ゲームでは禁止が多い
- 業務効率化は問題なし
- 利用規約を必ず確認
まとめ – 目的に合った方法を選ぼう
Android画面の座標取得方法について、様々なアプローチを理解できましたか?
方法の選び方
✅ 簡単に確認したい → 開発者オプションの「ポインターの位置」
✅ 自動化したい → Tasker + AutoInput
✅ 開発で使いたい → onTouchEventの実装
✅ 詳細な分析 → ADBコマンド
今すぐできること
- 開発者オプションを有効化して座標表示
- 目的のアプリで座標を確認
- メモして活用方法を検討
- 必要に応じてツールやコードを準備
座標情報は、Androidをより深く活用するための強力なツールです。単純な数値ですが、自動化、開発、テストなど、幅広い可能性を秘めています。
この記事で学んだ知識を活かして、あなたのAndroidライフをもっと便利にしてみてくださいね!
コメント