iアプリメモ
久しぶりにiアプリを書いたのでメモ。DoJa 5.1プロファイル。
Java(c)2 Standard Editionが見つかりませんとエラーがでる。
JDKが入っているにもかかわらず、DoJaから見つけられなくなっていた。
起動時どころかアンインストーラも同エラー
そんなときは、J2SDKを入れなおすのがいいみたい。
たまたま、Jdk1.4.2_16しか入っていなかったので、1.4.2_19のインストーラを実行して追加インストールしたら、DoJaも正常に見つけられるようになった。どうも、Java_Homeとか環境変数ではない何かをみているきがする。
DrawArea
DoJa 3.0からデフォルトの描画領域はどんなに画面が大きくても240x240になるらしい。
これを大きくするにはADFでDrawArea = 480x854とか書いてあげればよい。
ここ参照
ビルドするときは、エミュレータの端末サイズを元にチェックするので、設定→エミュレータ環境設定→端末ウィンドウで、ビルドしたい画面サイズの端末設定を作ってあげる。
次に、端末→作成した端末設定を選択する。
これをしないとDrawAreaの値が不正です。とか怒られる。
Eclipseのときは、Window→Option→Dojaの設定で同様にエミュレータ設定をして、RunConfigurationで実行時の端末設定を変更すればOK
しかし、480x854とか、うちのディスプレイじゃ表示しきれないのでやめて欲しい。
カメラ
DoJa 3.0プロファイルから、カメラが標準で使えるようになった。デフォルトではJPEG圧縮っぽい。
CameraIdは0が外側のカメラ、1が自分撮り用のインカメラ
Camera#setImageSizeを呼ぶとカメラの画像サイズを変えられる。
で、Camera#takePicture()を呼ぶとNativeのカメラが起動される。
この画面ではなぜか、撮影サイズと画質を設定できない。あらかじめ上記のsetImageSizeで設定しておくこと。(他のやり方があったら教えてください。)
撮影した画像はgetImage(0)でMediaImageを取得して、use()して、いろいろいじったり、ImageStore.addEntryでマイピクチャに放り込んだりできます。
ついでにDoJa3.5から、CodeReader.getCodeReader(cameraId)でバーコードリーダーとして起動も可能。共通でQRとJANコードは読めるようだ。書棚サイトとか作るときに便利かもしれない。
HTTPがiアプリの取得元サイトにしか張れないので、ちょいと不便
ImageLabel
撮影した画像を表示するのにPanelベースの場合、ImageLabelを使う。
ImageLabelの最大サイズは、端末の描画領域に制限される。
デフォルトならば、240x240、DrawArea設定しているならばそのサイズ
このサイズはDisplay.getWidth()とDisplay.getHeight()で取得できる。
Panelの場合、描画領域をはみ出すとスクロールできるようになるが、Display.getXXXはもとのDrawAreaのサイズを常に返してくる。
例えば、240x240の状態で、他のコンポーネントのある画面の末尾にImageLabelで貼り付けると、240px分下にスクロールできるようになる。
なお、ImageLabelは、そのサイズ以上の画像を設定した場合、ImageLabelのサイズより大きい部分は切られてしまう。
ImageLabelのサイズに収めたい場合は、次のようにする。
Image img = Image.createImage(Display.getWidth(), Display.getHeight()); Graphics g = img.getGraphics(); g.drawScaledImage(元画像, 0, 0, Display.getWidth(), Display.getHeight(), 0, 0, 元画像.getWidth(), 元画像.getHeight()); imgLabel.setImage(img);
比率を保持して縮小とかは、適宜頑張れ!
自動更新機能
アプリの中からバージョンアップを呼び出せる。
DoJa開発ガイド 11.5 iアプリ更新機能連携起動がそれ
IApplication#launch(LAUNCH_VERSIONUP, null);を呼ぶと、バージョンアップしますか?というダイアログが表示され、Yesを押すとiアプリの機能メニューにあるバージョンアップが実行される。
Noを押すとそのまま処理継続される。
このメソッドは、バージョンアップの成功、失敗、キャンセルを返さない。
どうやら、バージョンアップ実行すると、アプリはいったん終了され、成功・失敗・更新無し問わずに再起動扱いとなる。
ダイアログでNoを押してキャンセルした場合のみ処理続行なので、launchの直後に、バージョンアップは必須ですとかダイアログをだして、強制終了することも可能。
アプリの起動直後にこのメソッドを書いてしまうと、サーバ側のJAMに変更がないにもかかわらず、必ずダイアログが表示されてしまい、かっこ悪いし現実的でないので、自前でバージョン管理(チェック)は必須となる。
ADFのAppVerはアプリ内から読めないらしいから、AppParamでパラメータとして渡すしかないかもしれない。
バージョンアップはADFのLastModifedDateの設定が、自分より新しいかをチェックしているだけ。アプリを変えたらADFのアップロードも忘れずに。
1 件のコメント:
A skinny fin of fabric which types on the parting line of the mold. Pins or protrusions in the tool would possibly be} inserted to provide critical dimensions or options. Robust shade map deliverable highlights potential problematic areas (out of tolerance conditions, part shrinkage, warpage, and tool/mold wear). Interrogate mating components to resolve assembly, type, fit and finish points. Parametric InspectionAll parts are traceable and the relationships between them Bike Helmets for Kids are identified.
コメントを投稿