Android Touch Monitor — Android画面タッチ監視ツール

Mobile

概要

本リポジトリ「Android_Touch_Monitor」は、Androidシステムの画面タッチ信号を監視することを目的としたシンプルなツール群をRustで実装したプロジェクトです。Linux系OSで提供されるevdev互換の入力デバイス(/dev/input/event*)から生の入力イベントを取得し、ABS(絶対座標)やBTN_TOUCH、マルチタッチプロトコルのパケットを解析して、座標やタッチ状態をログ出力することを想定しています。簡易な実装でデバイス情報の読み取りやイベント変換を行い、デバッグや品質検証、外部ツールとの連携用途に適しています。

GitHub

リポジトリの統計情報

  • スター数: 1
  • フォーク数: 0
  • ウォッチャー数: 1
  • コミット数: 2
  • ファイル数: 6
  • メインの言語: Rust

主な特徴

  • 生の入力イベント読み取り: Linux input サブシステムのデバイスから直接イベントを取得して解析
  • マルチタッチ対応: ABS_MT_* 系のイベントを扱い、複数のスロット・トラッキングを処理可能
  • 高速で安全な実装: Rust を用いたメモリ安全性と低レイテンシ処理
  • シンプルなログ出力: タッチ座標やタッチ開始/終了を標準出力やログに出力しやすい設計

技術的なポイント

本プロジェクトが注目する技術的要素は次の通りです。まず、Linuxのinputサブシステム(evdev)からイベントを取得する設計により、/dev/input/eventX を直接パースして input_event 構造体(タイムスタンプ、タイプ、コード、値)を扱います。タッチでは EV_ABS (ABS_X/ABS_Y, ABS_MT_POSITION_X/Y, ABS_MT_SLOT, ABS_MT_TRACKING_ID) や EV_KEY (BTN_TOUCH) を注視し、SYN_REPORT によるフレーム境界で状態を確定します。マルチタッチ処理ではスロットベースのプロトコル対応が必須で、スロット切替やトラッキングIDの管理を正確に行う必要があります。

Rust を選択する利点として、低レベルの入出力(ファイルディスクリプタ読み取り、ioctl 呼び出しでの absinfo 取得など)を型安全に扱えること、さらにクロスコンパイル(cargo-ndk 等)によって Android 実機向けバイナリを用意できる点が挙げられます。一方でデバイスアクセスには通常 root 権限が必要で、adb shell でも /dev/input/* の権限管理や selinux による制約に注意が必要です。実運用ではノイズ除去(軽微な座標揺れのフィルタリング)やデバイスごとの absinfo (min/max/resolution) に基づく座標正規化も重要です。

拡張余地としては、イベントを JSON 等で出力して外部の可視化ツールと連携する仕組み、adb 経由でのデバイス自動検出・ポートフォワーディング、Android向けのパッケージ化(実行権限・サービス化)や WebSocket 経由でのリアルタイム配信などが考えられます。また、evdev の差異やベンダ固有の実装に対応するためのデバイスプロファイル機構を導入すると汎用性が高まります。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: file(ビルド成果物やIDE設定の無視設定)
  • .idea: dir(IDE設定ファイル)
  • Cargo.lock: file(依存解決の固定化)
  • Cargo.toml: file(プロジェクトと依存クレートの定義)
  • README.md: file(リポジトリ概要・用途の説明)
  • …他 1 ファイル(ソースコードやビルドスクリプトと思われます)

各ファイルの想定役割:

  • Cargo.toml: 使用しているクレート(例: evdev系ラッパーやserde/logクレート)やビルド設定、バイナリ名が定義されます。クロスコンパイルの設定やfeatureフラグもここで管理されることが多いです。
  • ソース(省略されている1ファイル): デバイス列挙、/dev/input/event の読み取りループ、イベントパース、タッチステート管理、ログ出力を含むメインロジックが実装されている想定です。
  • README.md: 実行方法(ローカル実行、adbを使った実機実行、必要な権限)やビルド例が記載されている可能性があります。

実行時の典型的な手順(想定)

  1. ビルド: cargo build —release(または Android向けに cargo ndk)
  2. 実行: sudo ./target/release/android_touch_monitor /dev/input/eventX
  3. ログ確認: 標準出力にタッチの開始/終了、スロット・座標が出力される

注意: Android実機で直接実行する場合は root 権限や adb push/adb shell での配置、SELinuxの許可が必要になることがあります。

まとめ

シンプルで実用的なタッチイベント監視ツールの骨子をRustで提供する軽量プロジェクトです。

リポジトリ情報:

READMEの抜粋:

Android_Touch_Monitor

监听Android系统屏幕触摸信号(Monitor Android system screen touch signals)…