Dropbox

5800XMでMIDPアプリを動かすのは一部難があります。というのもハードウェア・キーを省略し徹底的にタッチ・スクリーンを活用するようになっているからです。MIDPアプリに対しては組み込み済みJVMが提供するバーチャルなキーボードが使えるのですがキーが限られたものになっています。ナビキー+αではKKJConvは言うに及ばずPiClipなども動かせません。ちなみに現行の5800XMではApplication Managerで設定することにより2種類のバーチャル・キーボードとキーボード無しの状態がMIDPアプリに対して選択可能です。

ではMIDPアプリ側から5800XMに対応するための方法を探ってみようと考えてみました。MIDP2.0のCanvasクラスにはpointerPressed(int x, int y), pointerReleased(int x, int y), pointerDragged(int x, int y)といったタッチ・インターフェースにも使えそうなコールバック・メソッドが備わっています(必ずしもタッチとは限らなくて他のポインティング・デバイスも対象と思います) 。また、それらのイベントが有効かどうかを調べるboolean hasPointerEvents()というメソッドもあります。

と、いうことで簡単なテストプログラムで試してみました。

public void pointerReleased(int x, int y)
{
    iPointX = x;
    iPointY = y;
    this.repaint();
}

えらく単純な部分だけの紹介ですが、これに加えてpaintルーチンの中でiPointXとiPointYの数値を画面に出すようにしておくとタッチした場所に応じたx, yが分かるというものです。

Nokia S605thエミュレーターで試してみると、ちゃんとタッチ・イベントを拾うことが出来ました。余談ですが以前はS60エミュレーターとMIDPのエミュレーターは別でしたが5thからは一つのエミュレーターで両方のテストが出来ます。MIDPのテストは、エミュレーターのFile/OpenでJARファイルを選び、実機同様にインストールを行います。

これで低レベルなタッチ・イベントが取得出来ることは確認できました。ゲームやアプリ独自のバーチャル・キーボードなどは、これで作成出来ますね。ってKKJConv Virtual Keyboardは期待しないでね (^_^;)

標準UIの提供する部品については何もしなくても概ねタッチすると反応するみたいです。ということで10キーなどに操作を頼っている部分だけタッチ・イベントの取得で代替すれば何とかなりそうです。今後S605thデバイスがメジャーになってくると対応するMIDPアプリも増えてくるものと期待します。

Trackback

2 comments untill now

  1. ご無沙汰してます。
    5800のJVMのバーチャルキーボードはゲーム専用という扱いなんでしょうか。
    で、本題ですが、最近ま~さんが公開されたM-VK for 5800XM
    http://digilife.bz/blog/?p=2975
    でそれこそJVMも動いたりしないもんですかね?
    #え?他力本願?痛い痛いっ(苦笑)

  2. どうも、お久しぶりです。
    詳しくは分からないですが5800XMのMIDPで表示されるものは10キーが無いのですよね。困ったものです。小さな10キーが出れば、それでだいぶ救われるのですが、、、
    私も他力本願したかったのですがM-VKでCanvasクラスのkeyPressed/keyReleasedでキーコードを取得してみたのですが、正しいキーコードが拾えませんでした。深くは追求していませんが、解決は簡単ではなさそうな感じです。

Add your comment now