Mobile:NEWS 2003年9月19日 05:35 PM 更新

エンタメiアプリを作ろう
第6回 505i用にパワーアップ(2)

505i版待ち受けカメラiアプリを更にパワーアップする。

 エンタメアプリを作ろうの最終回となりました。前回作成した505i版の待ち受けカメラアプリに新機能を盛り込み、さらにパワーアップしていきましょう。

 505iでは前回説明した以外にも機能が増えています。カメラで使えそうな機能を実装して、さらに便利なアプリにしていきます。

スクラッチパッドの分割

 現在の待ち受けカメラアプリは1枚の写真しか保存できない仕組みで、せっかくの大容量スクラッチパッドがもったいない気がします。複数の写真を保存する機能も実装してみましょう。504iSでも工夫すれば複数保存機能は実現できますが、505iシリーズではスクラッチパッドを分割する機能が実装されています。これを使って実装してみましょう。

 従来のスクラッチパッドの保存では、

try {
OutputStream out =
Connector.openOutputStream("scratchpad:///0;pos=<書き込みポジション>");
 ※書き込み
out.close();
} catch (Exception e) {
 ※エラー処理
}

 となりましたが、505iシリーズではjamのSPSizeにカンマ区切りでスクラッチパッドサイズを指定することで最大16まで分割することができ、

try {
OutputStream out =
Connector.openOutputStream
("scratchpad:///<スクラッチパッド番号>;pos=<書き込みポジション>");
 ※書き込み
out.close();
} catch (Exception e) {
 ※エラー処理
}

 とすることで、あらかじめ定義し分割したスクラッチパッドの番号にデータを保存することができます。

マイピクチャーに保存する

 撮った写真をずっと保存しておきたいと考えると、スクラッチパッドに保存するだけでは不便な気がします。例えばアプリで撮った写真をメールで送ること想定してみましょう。

 この場合、今までのアプリではアプリ側とサーバ側で写真のデータを送受信する仕組みを考えないと無理でしたが、505iにはiアプリからデータをマイピクチャーに保存したり、読み込んだりする機能が実装されています。マイピクチャーに保存されていればメール添付も可能で便利な機能です。

 マイピクチャーに保存する機能は「com.nttdocomo.system.ImageStore」クラスに用意されており、これを使用するにはjam定義の「AccessUserInfo」がYesになっている必要があります。

(1)マイピクチャーに保存

 撮った画像をマイピクチャーに保存するにはImageStoreクラスのaddEntry()メソッドを使用することで新規保存することができます。

try {
media=camCamera.getImage(0);
media.use();
ImageStore isPicture.addEntry(media);
} catch (Exception e) {
 ※エラー処理
}

(2)マイピクチャーから画像選択読込

 マイピクチャーに保存されている画像をアプリに読み込む場合、ImageStoreクラスのselectEntry()メソッドを使うとマイピクチャーの画像を選択して取得することができます。

try {
ImageStore isPicture=ImageStore.selectEntry();
media = isPicture.getImage();
media.use();
imgCamera=media.getImage();
} catch (Exception e) {
※エラー処理
}

(3)マイピクチャーから画像ID指定読込

 マイピクチャーから画像を読み込む際、一回選択したものを再度選択せずに、getEntry()メソッドを使用することで画像データのエントリIDを指定して読み込むこともできます。

try {
ImageStore isPicture=ImageStore.getEntry(<画像データのエントリID>);
media = isPicture.getImage();
media.use();
imgCamera=media.getImage();
} catch (Exception e) {
※エラー処理
}

※画像データのエントリIDはマイピクチャー選択読込の際にgetId()メソッドを使用することで取得できます

状況によって表示する画像を変更してみる

 今回待ち受けカメラアプリではスクラッチパッドに10枚の画像を保存できる仕組みにしてみました。505iでは未読メールやセンターにメール状態の取得以外に電波状態や電池残量・充電中などの状態も取得できます。これを利用して条件によって表示する画像を変更してみると楽しい待ち受けにアプリになりそうです。

  • 電池残量がフル

PhoneSystem.getAttribute(PhoneSystem.DEV_BATTERY)の値が
ATTR_BATTERY_FULL(=1)の場合

  • 充電中

PhoneSystem.getAttribute(PhoneSystem. DEV_BATTERY)の値が
ATTR_BATTERY_CHARGING(=2)の場合

  • 本体を開いた

processSystemEvent()にてFOLD_CHANGED_EVENTで本体が開かれた場合

  • 未読メールまたはセンターにメールがあり

PhoneSystem.getAttribute(PhoneSystem.DEV_MAILBOX)の値が ATTR_MAIL_RECEIVED(=1)またはATTR_MAIL_AT_CENTER(=2)の場合

  • 電波が圏外の状態

PhoneSystem.getAttribute(PhoneSystem.DEV_SERVICEAREA)の値が ATTR_SERVICEAREA_OUTSIDE(=0)の場合

  • マナーモードの場合

PhoneSystem.getAttribute(PhoneSystem.DEV_MANNER)の値が ATTR_MANNER_ON(=1)の場合

 全6回、一部をピックアップした説明でしたが、ほかにも楽しくできる要素はたくさんあります。今後楽しい待ち受けアプリが登場するのが楽しみです。今回の講座がそのお手伝いになれば幸いです。

 すべての機能を詰め込んだ待受けカメラアプリのソースをご用意しました。待ち受けカメラアプリのソースはこちらです。

 
著者紹介
寺田雄一:携帯電話向けアプリの開発を行うRapl(らっぷる)の代表。ゲームなどエンタメ系アプリが主体だがビジネス系アプリの開発も行っており、現在は公式サイトのアプリ開発に携わっている。



関連記事
▼ 第1回 カメラを使ってみよう!
504iSから505iまで、ドコモの携帯電話で動作するiアプリの開発方法を全6回の連載でお届けする。第1回は、iアプリからカメラを操作する方法を学ぶ。

▼ 第2回 写真を保存してみよう
前回作成したiアプリ版カメラソフトに保存機能を実装する方法を説明する。

▼ 第3回 飾りをつけてみよう
iアプリ版カメラにエンタメらしい機能を考え実装してみる。

▼ 第4回 待ち受けiアプリにしてみよう
iアプリ版カメラを待受けアプリにしてみる。

▼ 第5回 505i用にパワーアップ(1)
待ち受けiアプリ版カメラを、505iシリーズで動作するアプリにする。

▼ ドコモ四国、第2回iアプリコンテスト
ドコモ四国はiアプリおよび、505iで動作するFlashコンテンツのコンテストを開催する。


関連リンク
▼ 第2回ドコモ四国iアプリコンテスト
▼ NTTドコモ四国
▼ アプリ★ゲット

[Rapl 寺田雄一, ITmedia]

Copyright © ITmedia, Inc. All Rights Reserved.



モバイルショップ

最新スペック搭載ゲームパソコン
高性能でゲームが快適なのは
ドスパラゲームパソコンガレリア!

最新CPU搭載パソコンはドスパラで!!
第3世代インテルCoreプロセッサー搭載PC ドスパラはスピード出荷でお届けします!!