DoJa3.5、4.0対応のiアプリについての質問です。
高レベルAPI(Panelクラス)を使って、十字キーのイベントを取得しようとしています。Panelクラスにインタフェース(KeyListener)を実装し、keyPressedメソッド、keyReleasedメソッドを用意しましたが、どちらのメソッドでもDisplay.KEY_DOWN、Display.KEY_LEFT、Display.KEY_RIGHT、Display.KEY_UPに相当するイベントを取得することができません。(十字キーを操作しても、keyPressedメソッド、keyReleasedメソッドがcallされない)
但し、1や9といったその他ボタンのイベントは取得可能です。この現象は、DoJa3.5開発キットと実機N902iで確認しました。
↓参考までに、DoJa4.1で十字キーのイベントが拾えないという現象は紹介されています。
http://blog.goo.ne.jp/xmldtp/e/a56ab0453d0b0bb24d0c74ce813e1e95
この件についての不具合情報、及び回避策を提供していただきたいです。
あくまで、高レベルAPI(Panelクラス)を使って実現したいので、低レベルAPI(Canvasクラス)を使いましょうといった回避策はご遠慮ください。
以上宜しくお願致します。
作ろうiモードコンテンツ : iアプリコンテンツの概要 | サービス・機能 | NTTドコモ
DoCoMoのサイトからダウンロードできる「iアプリコンテンツ開発ガイド for DoJa-4.x 詳細編」というpdfファイルの85ページには、KeyListenerについて以下のような記述があります。
【DoJa-2.0】
Panelでは、画面のスクロールやコンポーネントの操作などのために方向キーおよび選択キーを使用します。DoJa-2.0プロファイル以降では、高レベルAPI利用時におけるこれらのキーのキーイベントについては以下のように規定されています。
- 方向(上下左右)キーはキーイベントを発生しません。これらのキーは、スクロールおよびフォーカス制御のために常にPanelで処理されます。
- 選択(決定)キーは、フォーカスを得ているコンポーネントがディスプレイ上に表示されている場合に限りキーイベントを発生しません。フォーカスを得ているコンポーネントがディスプレイ上に表示されている状態では、選択キーはそのコンポーネントの操作のためにPanelで処理されます。
なお、DoJa-1.0プロファイルでは、どのような状況でどのようなキーイベントがPanelで処理されるかについてはメーカーにより異なります。
つまり、方向キーのイベントはPanelに喰われてしまう運命なので、どうやっても取得することは不可能ではないかと思います。
ありがとうございました。大変参考になりました。また質問することがあれば、宜しくお願い致します。