Android:キーイベントを追跡するYukiの枝折2012/05/24Android:キーイベントを追跡するQWERTYキー等のハードキーを備える端末は少ないですが、需要があるため今後も発売され続けるでしょう。Androidの設計はハードキー操作よりもタッチ操作に重きを置いています。このことが、ハードキーを意識したアプリ開発を難しくしています。今回はキーイベントのアップ/ダウンについてです。キーのアップとダウンは対とならないケースがあります。下記のようなケースが考えられます。ケース1:手順)アプリ起動前にキーAを押下し続ける>タップでアプリ起動>起動後にキーアップ結果)アプリにはキーアップのみが通知される。ケース2:手順)アプリ起動中にキーAを押下し続ける>続けてバックキーを押下する結果)キーアップしていないのにキーAのキーアップが通知されるキーアップとダウンが対になる前提でコーディングするのは危険です。上記のようなケースを判断したい場合はKeyEventクラスのAPIを使用します。●ケース1の判断キーイベントはトラッキング(追跡)することが可能です。onKeyDownでevent.startTrackingを実行することでキーイベントの追跡が開始されます。}}RepeatCountをチェックしているのは、押下し続けているキーのイベントがアプリ起動後にも配信されるためです。RepeatCountが0であるということは、今まさにキー押下されたことを意味します。続けて、onKeyUpでキーイベントが追跡されている状態かどうかを判断します。event.isTracking();}ここでisTrackingがtureを返せば、このキーイベントが自アプリ内でのキーダウンを契機に開始されたことを意味します。●ケース2の判断ユーザが実際にキーアップしていなくてもonKeyUpが呼ばれます。本当にユーザがキーアップしたイベントかどうかはevent.isCanceledで確認可能です。event.isCanceled()キーAを押し続けた状態で、BackキーやHomeキーを押下(あるいはタップ)した場合に、キーイベントはキャンセルされてisCanceledがtureを返します。●ユーザがアプリ内でキーダウン⇒アップしたかどうかを判断したい場合キーAがアプリ内でキーダウン⇒キーアップされたかどうかを判断するコードです。ホーム人気の投稿Android:引数はthisか?getApplicationContextか?ActivityとApplicationの違いAndroidにはContextを引数にとるAPIが数多く存在しています。