【質問】サービスでのイベント(キー/タッチ)検知方法について

3,833 views
Skip to first unread message

kan

unread,
May 20, 2011, 11:14:34 PM5/20/11
to 日本Androidの会
kanと申します。

主題の件、目的としては

「他アプリ(HOME等)から自サービスの状態を変化させたい」

のですが、実現できずに困っています。

方法として、特定キー、もしくは、特定領域のタッチを自サービスで検知し、
状態を変化させようと考えたのですが、上手くいっておりません。
サービスでのイベント(キー/タッチ)検知は不可能なのでしょうか。

知識不足で申し訳ありませんが、有識者の方がおられましたら
ご教授いただけないでしょうか。

また、キー/タッチイベント検知以外での実現方法があれば
ご助言いただければ嬉しいです。

ご助力の程、よろしくお願いいたします。

大垣憲俊

unread,
May 21, 2011, 9:51:37 AM5/21/11
to android-g...@googlegroups.com
大垣です。

「サービスでのイベント(キー/タッチ)検知」という意味が、よく分かりませんでした。
キーイベント、タッチイベントはアクティビティまたはビューで検知できるので、
それをサービスに引き渡す、という意味かなと想像しましたが。。。


kan

unread,
May 22, 2011, 8:49:34 AM5/22/11
to 日本Androidの会

TO:大垣さん

ご回答ありがとうございます。
また、内容が分かりにくく申し訳ありません。

ご認識の通り、アクティビティまたはビューで検知したイベントを
サービスに受け渡せれば目的が達せます。

困っている点としては、自分のアクティビティまたはビューが
トップにいない状態でイベントの検知が出来ていないという点となります。

バックグラウンドのアクティビティまたはビューへイベントを通すことが
できれば良いかと考えていますが、可能なのでしょうか。

お手数をおかけし申し訳ありませんが、ご教授いただければ幸いです。

大垣憲俊

unread,
May 22, 2011, 10:55:27 AM5/22/11
to 日本Androidの会
TO:kanさん

大垣です。

> 困っている点としては、自分のアクティビティまたはビューが
> トップにいない状態でイベントの検知が出来ていないという点となります。

そうした状況を想像することが難しいのですが、
キーボードの入力をバックグラウンドで検知するということは、
「キーロガー」という手法に相当するのではないでしょうか。
それが、できてしまうとセキュリティ上の問題になるような気がします。

yoshiyuki kanno

unread,
May 22, 2011, 10:29:22 PM5/22/11
to android-g...@googlegroups.com
菅野です。

興味があるのでちょっと調べてみました。
結論としては、大垣さんがおっしゃられるようにセキュリティ上の問題を勘案した上での仕様で、
アプリケーションレイヤでは、SystemHookに相当する機能は提供されていないようです。
うけとれるグローバルなイベントはBroadCastReceiverでとれるものが全てかと思われます。

ただ、調べている過程でみつけた以下のndk-mlのスレッドで言及されている内容は興味深いです。(※英語です)

--- 以下、要約 ---
 "SEND_SMS" や "CONNECT_INTERNET"権限を要求するアプリが、ユーザへの告知なしに
任意のデータを送信可能な状況は、一般ユーザにとって好ましくない状況である事に変わりはない。
自分は開発者なのでOSをリビルドしてネットワークキャプチャできるものを作ることができたけど、
androidは開発者のおもちゃじゃないです。一般ユーザのことを考慮した仕様を検討してくれることを強く望みます。
---



2011年5月22日23:55 大垣憲俊 <noritos...@gmail.com>:

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

o

kan

unread,
May 23, 2011, 9:44:45 AM5/23/11
to 日本Androidの会
TO:大垣さん

kanです。

ご回答ありがとうございます。

確かにセキュリティの観点から考えると難しそうですね。
タイマー等を使って別手段での実現も検討してみたいと思います。

ありがとうございました

kan

unread,
May 23, 2011, 9:46:28 AM5/23/11
to 日本Androidの会
TO:菅野さん

kanです。

ご回答ありがとうございます。
私もアプリケーションレイヤでは困難という結論に至りました。

限られた枠で出来ることを模索するのも楽しみの一つですね。
もっと勉強していきたいと思います。

On 5月23日, 午前11:29, yoshiyuki kanno <nekota...@gmail.com> wrote:
> 菅野です。
>
> 興味があるのでちょっと調べてみました。
> 結論としては、大垣さんがおっしゃられるようにセキュリティ上の問題を勘案した上での仕様で、
> アプリケーションレイヤでは、SystemHookに相当する機能は提供されていないようです。
> うけとれるグローバルなイベントはBroadCastReceiverでとれるものが全てかと思われます。
>
> ただ、調べている過程でみつけた以下のndk-mlのスレッドで言及されている内容は興味深いです。(※英語です)
>
> http://osdir.com/ml/android-ndk/2010-09/msg00277.html
>
> --- 以下、要約 ---
> "SEND_SMS" や "CONNECT_INTERNET"権限を要求するアプリが、ユーザへの告知なしに
> 任意のデータを送信可能な状況は、一般ユーザにとって好ましくない状況である事に変わりはない。
> 自分は開発者なのでOSをリビルドしてネットワークキャプチャできるものを作ることができたけど、
> androidは開発者のおもちゃじゃないです。一般ユーザのことを考慮した仕様を検討してくれることを強く望みます。
> ---
>
> 2011年5月22日23:55 大垣憲俊 <noritoshi.og...@gmail.com>:
>
>
>
> > TO:kanさん
>
> > 大垣です。
>
> > > 困っている点としては、自分のアクティビティまたはビューが
> > > トップにいない状態でイベントの検知が出来ていないという点となります。
>
> > そうした状況を想像することが難しいのですが、
> > キーボードの入力をバックグラウンドで検知するということは、
> > 「キーロガー」という手法に相当するのではないでしょうか。
> > それが、できてしまうとセキュリティ上の問題になるような気がします。
>
> > --
> > このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> > このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> > このグループから退会するには、android-group-j...@googlegroups.comにメールを送信してくださ-い。
> > 詳細については、http://groups.google.com/group/android-group-japan?hl=jaからこのグループにアクセスしてください。
>
> > o- 引用テキストを表示しない -
>
> - 引用テキストを表示 -
Reply all
Reply to author
Forward
0 new messages