「iアプリ開発Tips」の編集履歴(バックアップ)一覧に戻る
iアプリ開発Tips - (2008/12/27 (土) 20:23:42) の編集履歴(バックアップ)
iアプリ開発Tips
アプリ全般
DoJaアプリからStarアプリへの移行
- importの置換
- com.nttdocomoをcom.docomostarに置換
- Eclipseの場合は次の手順でも可
- importを全て削除
- 波線の出ているクラス名の右にカーソルを移動
- Ctrl+Space(import自動挿入)
- 波線がなくなるまで繰り返す
import com.nttdocomo.ui.*; ↓ import com.docomostar.ui.*;
- 起動クラスの書き換え
- IApplicationをStarApplicationに置換
- void start()をvoid started(int launchType)に置換
public class TestApp extends IApplication { public void start() { } } ↓ public class TestApp extends StarApplication { public void started(int launchType) { } }
- フォント取得部分の変更
Font.getFont(Font.FACE_SYSTEM | Font.SIZE_TINY) Font.getFont(Font.FACE_SYSTEM | Font.SIZE_SMALL) Font.getFont(Font.FACE_SYSTEM | Font.SIZE_MEDIUM) Font.getFont(Font.FACE_SYSTEM | Font.SIZE_LARGE) ↓ Font.getFont(Font.FACE_SYSTEM, 12) Font.getFont(Font.FACE_SYSTEM, 16) Font.getFont(Font.FACE_SYSTEM, 24) Font.getFont(Font.FACE_SYSTEM, 30)
ImageReferenceの使用
- Imageの代わりに画像の描画に使用できるクラス
- MediaImage経由で使用する場合に比べてヒープの消費量を抑えられる
- ヒープの少ないミニアプリに向いた機構
- MediaImageはオリジナルデータと内部データを保持し続ける必要がある
- ImageReferenceは必要に応じて内部データへの展開や開放などを行う
- 描画のたびに画像データの展開を行うため処理速度は遅くなる
- ただしキャッシュ指定すると次回からは展開データのキャッシュを使用するため高速になる(約512KB)
- 内部的にMediaImage#use()とMediaImage#unuse()を自動で行っている?
- MediaImage経由で使用する場合に比べてヒープの消費量を抑えられる
/* MediaImageを使う場合 */ //画像のロード MediaImage mi = MediaManager.getImage("resource:///screen.gif"); mi.use(); Image iScreen = mi.getImage(); //画像の描画 g.drawImage(iScreen, 0, 0); /* ImageReferenceを使う場合 */ //画像のロード ImageReference irScreen = ImageReference.createImageReference("resource:///screen.gif"); //画像の描画 g.drawImageReference(irScreen, 0, 0, false); //キャッシュしない場合は最期をtrueにする
フルアプリ関連
フルアプリのプロジェクト作成(Eclipse)
- ファイル→新規→Star-1.0プロジェクトを選択
- プロジェクト名とロケーションを設定
- 「アプリケーション種別」から「フルアプリ」を選択して「終了」
- アプリを起動すると通常のエミュレータが起動する
描画エリア(ADFのDrawArea)の仕様
- 何も指定しなかった場合は480x480になる
- 全ての機種で整数倍に拡大表示されるのは240x240、240x320、320x240のみ
- 設定可能な値は幅が96以上画面の幅以下、高さが72以上画面の高さ以下
ソフトキーのラベル設定
- ラベルはソフトキー1~4、決定キーに設定可能
- ソフトキー1~4は全角4文字まで
- 決定キーは全角2文字まで
ミニアプリ関連
ミニアプリのプロジェクト作成(Eclipse)
- ファイル→新規→Star-1.0プロジェクトを選択
- プロジェクト名とロケーションを設定
- 「アプリケーション種別」から「ミニアプリ」を選択して「終了」
- アプリを起動するとWidgetViewが起動する
アプリサイズの制限
- JARファイルのサイズは50KB以下
- スクラッチパッドは200KB以下
- 先頭のブロック(scratchpad:///0)のみ使用可能
- 上記領域はフル+ミニアプリ(ミニ+フルアプリ)の場合はフルアプリからもアクセス可能(共有される)
描画エリア(ADFのPallet)の仕様
- 「:」で区切って5つの値を指定する
- 指定しない場合は空文字とする(:が連続する)
パレット幅xパレット高さ:描画領域幅x描画領域高さ:描画領域オフセットX:描画領域オフセットY:フェイス画像
- 描画はパレット、フェイス画像、描画領域の3つが順に重なるようにして行われる
- パレットはミニアプリの最大描画サイズを示す透明な領域
- 大きさは「パレット幅xパレット高さ」の部分で指定する
- 指定可能な値は「160x160」「240x320」「320x240」「440x80」の4つのみ
- 省略すると160x160になる
- フェイス画像はパレットの上に描画される画像
- 透過GIFを使用することも可能
- パレットが透明なので、画像で透過にした部分はWidgetViewでも透明になる
- これによってウィンドウの形を長方形以外にできる
- 画像は「フェイス画像」の部分にファイル名を指定する
- 省略するとフェイス画像は使用されない
- 透過GIFを使用することも可能
- 描画領域は実際にGraphicsクラスで描画する領域
- 大きさは「描画領域幅x描画領域高さ」で指定する
- パレットの大きさ以下なら任意の値が可能
- 省略するとパレットと同じ大きさになる
- この領域外には(パレット内あっても)描画はできない
- 位置(パレット左上からのオフセット)は「描画領域オフセットX」「描画領域オフセットY」で指定する
- 省略するとそれぞれ0になる
- この領域は
透過しない
ので注意が必要
- フェイス画像で透過にした領域に重ねると透過ではなくなってしまう
- 大きさは「描画領域幅x描画領域高さ」で指定する
複数のミニアプリを同時に起動してテストする
- Eclipseの場合は「構成および実行」の起動種別で「WidgetView起動」を選択し実行する
- iαppliTool for Star-1.0(C:\iDKStar1.0\bin\star.exe)を実行し「起動」ボタンの下の「iWV」を押す
- 現在のワークスペースのミニアプリが起動可能になる(実機と同じ表示)
ソフトキーのラベル設定
- ラベルはソフトキー1、ソフトキー2、決定キーに設定可能
- ソフトキー1とソフトキー2は全角4文字まで
- 決定キーは全角2文字まで
取得できないキー
- ソフトキー3、ソフトキー4、クリアキーは取得できない(WidgetViewが使用する)
フル+ミニアプリ(ミニ+フルアプリ)関連
フルアプリのプロジェクト作成(Eclipse)
- あらかじめフルアプリとミニアプリのプロジェクトを作成しておく
- ファイル→新規→Star-1.0プロジェクトを選択
- プロジェクト名とロケーションを設定
- 「アプリケーション種別」から「ミニ+フルアプリ」を「選択」
- 「フルアプリを選択してください」の「参照」でプロジェクトを選択
- 「ミニアプリを選択してください」の「参照」でプロジェクトを選択して「終了」
- このプロジェクトで起動しないとフルアプリ⇔ミニアプリの連携起動はできない
ADFの設定について
- フル+ミニアプリでのADFは「フル+ミニアプリ」プロジェクトのものが使用される
- フルアプリとミニアプリのADFは使用されない
- 両アプリのADFの内容を全て(ORで)設定する必要がある
- フルでアプリ起動、ミニでブラウザ起動するならLaunchAppとUseBrowserの両方にチェックが必要
- 描画領域はフルの場合DrawAreaで、ミニの場合はPalletで指定する
- 通常の起動でフルとミニのどちらを起動するかはAppTypeで指定
フルアプリ⇔ミニアプリの連携起動
- StarApplication#changeAppType()を使用する
- 第1引数に起動するアプリのタイプを指定する
- フルアプリ:STAR_TYPE_FULLAPPLI
- ミニアプリ:STAR_TYPE_MINIAPPLI
- 第2引数でアプリにパラメータを渡すことができる
- 渡さない場合はnull
- 渡す場合は制限付きのHashtableを使う
- キーと値はString
- キーは16個以内
- キーと値はデフォルトエンコーディングで20480バイト以内
//ミニアプリからフルアプリを起動 StarApplication.getThisStarApplication().changeAppType( StarApplication.STAR_TYPE_FULLAPPLI, null);
ミニアプリからフルアプリを連携起動するとDrawArea不正で落ちる場合の対処
- iαppliTool for Star-1.0(C:\iDKStar1.0\bin\star.exe)を実行し設定を変更
- メニューの「端末」から、現在のDrawAreaにあったものを選択する
- 上記の端末が480x854の時に、フル+ミニアプリのADFが480x864かつ起動端末も480x864でEclipseから実行すると、
フルからミニは問題なく起動できるが、ミニからフルを起動するとDrawAreaがあわないので落ちてしまう