ハードキーを完全に無効化したい

3,422 views
Skip to first unread message

Kentaro Suzuki

unread,
Oct 13, 2009, 6:11:51 AM10/13/09
to 日本Androidの会
鈴木と申します。

パネルコンピュータにAndroidを載せて色々試しているのですが、
ハードキーを完全に無効化することはできるのでしょうか。

画面に電源OFFのボタンを表示して、そこから電源をOFFできるようにし、
ハードキーの入力は一切無視する、というActivityを作りたいのです。

ActivityのonKeyDownでキーを無効化しようとしたのですが、
試した限りではHOMEキー、ENDCALLキーのキーコードを
拾うことができませんでした。

何かいい手は無いでしょうか。
Androidのソースに手を入れたりしないとできないような要求でしょうか。

ご存知でしたらご教示ください。


よろしくお願いいたします。

mizmit1222

unread,
Oct 13, 2009, 10:55:13 PM10/13/09
to 日本Androidの会
みずの@組み込みWGです。こんにちは。

それらのボタンはAndroidのminimum requirementでハードウェアボタンが
必須になっています。どこかに書かれていたような気がするんですけど、
思い出せません。

電源を切りたいだけであれば、いくつか方法が考えられると思います。

0) Tao Softwareさんにお願いしてみる
tRebootはあるんですが、tShutdownはどうでしょ?
http://www.taosoftware.co.jp/android/reboot/

1) アプリケーションからpoweroff(shutdown)コマンドを呼ぶ
パネルコンピュータであればroot権限が取れていると思うので、poweroff
を呼び出せば電源を落とせます。アプリケーションからshellコマンドを
発行する方法は、mydroid/development/app/Term が参考になると思います。
NDKを使ってもいいかもしれません。

2) Monkeyを猿まねする
AndroidにはMonkeyというテストツールがあります。アプリケーションに
ランダムにイベントを送って、意図しない挙動がないかどうかをテストす
るツールです。
http://developer.android.com/intl/ja/guide/developing/tools/monkey.html

このツールは --pct-syskeys というオプションで、通常システムリザーブ
なイベントを発行できます。この仕組みが利用できるかもしれません。

以上、アイディアだけですみません。

ではでは。

Kentaro Suzuki

unread,
Oct 14, 2009, 12:00:38 AM10/14/09
to android-g...@googlegroups.com
みずの様

鈴木です

パネルコンピュータに、メーカー提供のソースを何とかビルドしてパネルコンピュー
タに乗せ、
動かして喜んでいたのですが、電源OFFや、
onKeyDown()やdispatchKeyEvent()で捕まえられないイベントを制御するという問題
が現れて
途方にくれていたので、道筋を示してくださっただけでも大助かりです。

「Androidのminimum requirementでハードウェアボタンが必須」というのは、
リファレンスマニュアルに載っているAPIを使って無効にできないようになってると
いうことですよね。

電源については頑張って参考先を読んでみます。

ありがとうございました。
Reply all
Reply to author
Forward
0 new messages