ホーム画面上を走るマリオのマスコットを作りました。

http://www.zd.ztv.ne.jp/h64qh2pq/pictures/blog/120909/mario00.png

ダウンロード

Windows「タスクバー上を走るマリオ」のデスクトップマスコットを作りました - valinstの日記でやっていたのと同じように画面上を左から右に向かって走っていきます。
http://www.zd.ztv.ne.jp/h64qh2pq/pictures/blog/120909/mario01.png


ホーム画面上でも走ります。
http://www.zd.ztv.ne.jp/h64qh2pq/pictures/blog/120909/mario02.png


進行方向の反対の画面端をタップするとターンします。
それ以外の場所をタップするとジャンプします(うっとうしい)
http://www.zd.ztv.ne.jp/h64qh2pq/pictures/blog/120909/mario03.png


対応機種は 2.2 以降のAndroidです…が、実は Android 4.* 以降の端末で動作させるとジャンプやターンの操作ができなくなっています。
これは4.0(ICS)以降でオーバーレイ表示の仕様が変更されたためで、バックグラウンドで動作しているサービスはタッチイベントを(簡単には?)取得できなくなりました。


「FLAG_WATCH_OUTSIDE_TOUCH ICS」 とか 「FLAG_WATCH_OUTSIDE_TOUCH 4.0」でぐぐるとそれらに関する情報がいくつかでてきます。

android - TYPE_SYSTEM_OVERLAY detect touches in ICS - Stack Overflow


そりゃ裏で動いているアプリが簡単にタッチイベントを捕まえられるって状況はセキュリティ的にどうなの?って話になりますよね。

しかし、例えばhttps://play.google.com/store/apps/details?id=mobi.conduction.swipepad.androidとかICS以降でもタッチイベントを拾えてるアプリもあったり…。
なにやらハックすれば動作させられるってことなんでしょうかね;


自分が持っているのが Android 4.0 の端末ってこともあって、何か回避策を知りたいのですが。
うーん……。