書くことないです。

ayamadoriが独り言を呟く日記。

PiClip Ver 0.6.0を公開

大晦日が忙しかった理由のひとつです(笑)
更新内容は

  1. 一部の端末で正常に起動しない不具合を修正>最近のソニエリJP-8搭載端末の話
  2. 決定キーが利用できない端末に対応>S40もしくはJP-8端末
  3. 予測候補の最大数を設定できるよう変更
  4. SMS送信機能を追加>ソニエリ端末+ドコモ回線では送信できないかも?
  5. メモリカード上に辞書を置けない端末に暫定対応>メモリカードスロット非搭載機種向け

です。詳しくは『置くものないです。』でどうぞ。
以下、開発関連の備忘録。

一部の端末で正常に起動しない不具合

要はCanvas#sizeChanged()が呼ばれるタイミングが端末によってまちまちなせい。
もともと702NKなどでの全画面表示のバグ対策のためのコードが悪かった。
ループスレッドを利用するゲームなら他の方法を考える必要があるが、その必要がないPiClipのようなアプリでは、とりあえずCanvas#getWidth()、Canvas#getHeight()を積極的に呼んでやった上で、

//画面サイズが変わったら画面高さ、幅を再取得して再描画(702NKなどでの全画面表示のバグ対策)
protected void sizeChanged(int _w, int _h) {
iScrWidth = _w;
iScrHeight = _h;
//どうせ描画をループさせるわけじゃないから、ここで再描画
repaint();
}

を追加しておけばよいようだ。

決定キーが利用できない端末に対応

決定キーにCommandが割り当てられてしまう端末の話。Canvas#keyPressed()よりもcommandAction()が優先されてしまい、キーが押されたときの動作をしない。もっとも、全画面表示のときはこの限りではない。
しょうがないから決定キーに割り当てられるだろうコマンド(Command.ITEMなどで優先度最高)に決定キーを押したときと同じ動作を記述しておく。今回でいう"Select"コマンド。

SMS送信機能を追加

端末デフォルトのSMSを送信するにはポート番号を指定しなければ良い。
いままでNokiaにあわせて0番を指定していたけど、そうするとソニエリ端末では『端末が利用しています』と怒られてしまって送信できない。
さらに、ポート番号を指定することでヘッダのサイズが増え、送信可能文字数が減ってしまう問題もある。
(08/01/09追記)
やはり、ソニエリ端末+ドコモ回線では送信できないようだ。ソニエリ+SB、ノキア+ドコモ、ノキア+SBは大丈夫だから、これはドコモクオリティ乙と言ってしまってもいいのか?できれば中の人に聞いてみたい。

メモリカード上に辞書を置けない端末に暫定対応

PCの世界のように、あまり絶対パスを意識させたくないので、端末デフォルトの画像や着メロの保存フォルダを検索するようにしてみた。
こんな感じ。

String[] properties = "fileconn.dir.photos", "fileconn.dir.tones", "fileconn.dir.videos", "fileconn.dir.graphics", "fileconn.dir.music", "fileconn.dir.recordings", "fileconn.dir.themes", "fileconn.dir.private", "fileconn.dir.memorycard"};
String path;
for(int i = 0; i < properties.length; i++) {
path = System.getProperty(properties[i]);
}
if(path != null) {
try {
String fullpath = path + "word.utf8";
fc = (FileConnection)Connector.open(fullpath);
...

Nokiaソニエリ端末ではこういう方法が有効らしいが、他のメーカーは未調査。