Android でのタッチスクリーンのキャリブレーション法について.情報が溢れていそうで,案外無い, あっても,古くて使えない. ので,記録しておきます.
(少なくとも AOSP での)タッチスクリーンサポートは,tslib を用いています. tslib には,ts_calibrate というコマンドがついています. ts_calibrate は,LinuxのフレームバッファとタッチパネルデバイスをLinuxのinputデバイスとを直接アクセスします. Android は,当然ながら,画面を押さえていますので,衝突します. そこで,下記のような手順で実行を行います.
以下,Android-x86.org が提供している x86-jb での手順です.
たぶん ICS 以降の Android の多くで使えるはずですが,中には,tslib を使っていないディストロもあります.(例えば AndroVM) あと,rootが必要です. スマホやパネルコンピュータなど,きちんと製品に作りこまれた状態でも,この方法は使えないかもしれません. (その場合,キャリブレーションツールが必要なら,きちんとしたのがついてくるだろうと思います.)
- 普通にAndroidを起動します.
- adb shell など用いて,コマンドラインアクセス可能にします.
stop zygote
stop bootanim
stop surfaceflinger
として,zygote サービスを停止します.- 多くの場合,キャリブレーションデータを保存するディレクトリが存在しません.
mkdir /data/system/tslib
を実行して作ります. ts_calibrate
を実行します.- 言われるままにタッチします.
- 念のため,
ls /data/system/tslib/pointercal
などしてキャリブレーションデータが作成されていることを確認します. - 止めた順番と逆順で,
start surfaceflinger
start bootanim
start zygote
として,zygote サービスを再開します.
補足
仮想コンソールがサポートされている場合,上記2の手順で,Alt+F1 などで移動し,作業することもできます. その場合,ts_calibrate を実行する際に必要なのは zygote サービスの停止だけです.