システムオーバーレイから取得した情報を元に通常のアプリへ擬似TouchEventを送る方法

998 views
Skip to first unread message

中島智弘

unread,
Oct 24, 2012, 1:45:21 PM10/24/12
to android-g...@googlegroups.com
いつも勉強させて頂いております。
えだぴよともうします。

現在、上半身を上手く動かすことができない障がい者のために、
スマホを”自由に”操作できるようにするUIを検討しています。


そのUI案のひとつとして、声によるカーソル移動を検討しています。
まず、WindowManagerを使い、システムオーバーレイ上にカーソルのようなものを表示します。
音声操作で、タップの命令が送られた場合、
そのカーソルの座標をつかって、通常アプリの同じ座標にTouchEventを送る方法を検討しています。

オーバーレイのイメージです。(借用させて頂きます。)
http://techbooster.org/android/ui/13182/

■ご相談
システムオーバーレイから最前面のアプリにタッチイベントを送る方法が分からず、困っています。
一番下にあるアプリのonTouchEvent()を呼び出せればあとはMotionEventのオブジェクトを作るだけ、かとは思うのですが
うまくいきません。


良い方法、検討観点がございましたらご教授願います。
以上、よろしくお願い致します。

---
えだぴよ

Shigeo Mutoh

unread,
Oct 24, 2012, 10:25:12 PM10/24/12
to android-g...@googlegroups.com
tmhouseこと武藤です。

おもしろい発想ですね。実は私も似たようなことに挑戦したことが
あります。結論としては出来ませんでした。

Inject Eventsとかでぐぐると沢山でてくると思います。
コード的には動きそうに書けて、permissionもそれ用をセットしても、
どうしても動かなくて私は諦めました。

Android OSとして、それは動かないように作られているという認識を
もっています。セキュリティ的にごもっともですね。

ただし、Bluetooth経由あるいはUSB(?)のマウスやキーボードは動く
わけですから、そちらから「潜入」する形で手は打てそうな気は
します。つまり別の機器を用意する前提です。

是非がんばってください。

Hirokazu Fukami

unread,
Oct 24, 2012, 10:32:15 PM10/24/12
to android-g...@googlegroups.com
こんにちはfkmです。

手元で試していないので、端末だけでできるかわかりませんが、
Runtimeでsendeventを使うってのはどうでしょうか?
端末に依存する形にはなりますが。。。

#でもこれできちゃったら、最近流行の遠隔操作マルウェア作れちゃいますよね。。。

2012/10/25 Shigeo Mutoh <tmh...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>



--
-------------------------------------------------------------
深見 浩和(Hirokazu Fukami)

URI:http://www.fkmsoft.jp
email: f...@fkmsoft.jp

ohisamallc

unread,
Oct 25, 2012, 6:30:09 PM10/25/12
to android-g...@googlegroups.com
山形のohisamaです。
山形では、コタツ使い始めました。
がんばろう、東北。

androidはlinuxなので、/dev/input叩けば
良いのですが、root獲らないとだめです。
adb経由でsendeventも煩雑です。
android1.6なら一時的にroot獲れますが
ターゲットはandroid4ですね。

やはり、アプリ側にヴォイスオペレーションに
対応するインターフェースを組み込むしか
ないと思います。考えつくのは、fileを利用
または、socketを利用ですね。
fileなら、sdcard上に、socketなら
サーバー上にコマンド置いて、アプリ側が
ポーリングする仕組みですね。
(セキュリティ的には、最悪ですか。)
インターフェースをクラスで提供してヴォイス
オペレーション対応アプリ開発者を募るとか。

秘策は、プラットフォームを抱き込むことです。
お薦めは、たろサさんのluaridaです。このvm
に、ヴォイスオペレーションに対応する
インターフェースを組み込こんでもらえば、既存の
luaridaアプリが、すべて使えますね。
Reply all
Reply to author
Forward
0 new messages