第 9 章 待ち受けアプリケーション
11.10 画像データ管理機能の呼び出し
DoJa-3.0 プロファイル以降に対応した携帯電話は、マイピクチャと呼ばれるネイティブの画像管理
領域を持っています。画像データ管理機能の呼び出しでは、iアプリから携帯電話のネイティブの 画像データ管理機能を呼び出し、マイピクチャ領域からの画像の入出力を行うことができます。画 像データ管理機能の呼び出しには、 com.nttdocomo.system.ImageStore クラスを使用します。
なお、これらの機能を使用するiアプリは、ADF の AccessUserInfo キーにてこれらの機能を 使用することを宣言(値"yes"を設定)する必要があります。また、iアプリはブラウザを使用し てダウンロードおよび保存された画像にはアクセスすることはできません。iアプリからアクセス 可能な画像は以下に限定されます。
・ その携帯電話のカメラ機能により撮影・保存された画像
・ iアプリにより保存された画像(他のiアプリから保存された画像を含みます。ただしそのiアプリが 画像を保存する際に、他のiアプリからその画像にアクセスすることを禁じている(*1)場合を除きます。)
・ ネイティブの赤外線通信ツールにより、その携帯電話の外部から取り込まれた画像
・ 携帯電話出荷時にプレインストールされている画像
・ メモリカードなどの外部メモリを搭載している携帯電話では、外部メモリからマイピクチャ領域に移さ れた画像
・ ブラウザからダウンロード・保存された画像のうちコンテンツプロバイダにより再配布可能と設定され ているもの
(*1) DoJa-4.0プロファイルより、iアプリからネイティブの画像管理領域に画像を保存する際に、他のiアプ
リからその画像にアクセスすることを禁止することができるAPIが追加されています。詳細は11.10.1項 を参照してください。
注意事項:
● ネイティブの画像データ管理機能で映像データ(iモーション形式データ)を保存、管理できるものがあり ますが、iアプリから本機能を使用してiモーション形式データを取り扱うことはできません。本機能では、
静止画像のみが取り扱い対象となります。
11.10.1 画像データの新規登録
画像データを新規登録するには、ImageStore クラスの static メソッド addEntry()を使用しま す。このメソッドの引数には、登録したい画像を表す MediaImage オブジェクトを指定します。
画像データの新規登録を行うと、携帯電話は以下のような動作を行います。
(1) アプリケーションプログラムからImageStore.addEntry()メソッドを呼び出します。このメソッドが呼 び出されるとiアプリはサスペンドします。
(2) 画像データの登録を行うためのネイティブのユーザーインタフェース画面が起動します。この画面では、ユ ーザーはiアプリからの画像データの新規登録を許可、キャンセルすることができます。また、iアプリが どのような画像データを登録しようとしているかを確認することもできます。
(3) ユーザーが画像データの新規登録を許可すると画像データの新規登録が行われ、iアプリはレジュームして addEntry()メソッドはアプリケーションプログラムに復帰します。その際このメソッドは、新規登録され た画像データにその携帯電話内で1対1に対応するエントリIDを返します。エントリIDは、後述する画像 データのID指定読み込みにおいて、ユーザー操作なしに画像データを読み込むために使用することができま す。
ユーザーが画像データの新規登録をキャンセルしても例外は発生せず、このメソッドは-1を返します。
Copyright Ⓒ 2008-2012 NTT DOCOMO, Inc. All Rights Reserved.
【DoJa-4.0】
DoJa-4.0プロファイル以降、iアプリからネイティブの画像管理領域に画像を保存する際に、他のiアプリか
らのその画像へのアクセスを禁止するAPI(ImageStore.addEntry(MediaImage, boolean)メソッド)
が追加されています。このメソッドを使用して画像を保存した場合、他のiアプリからその画像にアクセスし たり、携帯電話ネイティブの機能を使用してその画像を携帯電話外部に持ち出すことが禁止されます。
また、DoJa-4.0プロファイルでは、複数の画像を一度の操作(ユーザー確認等)で保存するための
ImageStore.addEntry()メソッドのバリエーション(ImageStore.addEntry(MediaImage[]))が追 加されました。ただしImageStore.addEntry(MediaImage[])はiアプリオプションAPIに属するメソッ ドであり、メーカーによってはサポートされない場合があります。
【DoJa-4.1】
DoJa-4.1プロファイル以降、メーカーによってはFlashコンテンツをネイティブの画像管理領域に保存するこ
とをサポートする場合があります。このような機種では、MediaManager.getImage()メソッドの引数に
Flashコンテンツのデータを指定して呼び出すことでMediaImageオブジェクトを取得し、そのMediaImage
オブジェクトをImageStore.addEntry()メソッドの引数に指定することでFlashコンテンツを保存します。
なお、Flashコンテンツのネイティブ画像管理領域への保存をサポートする機種であっても、Flashコンテンツ
から生成したMediaImageオブジェクトを上記以外の目的(例えばVisualPresenterで再生するなど)で 使用することはできません。また、以下に解説する画像データの選択読み込みや画像データのID指定読み込 みで、ネイティブ画像管理領域に保存されているFlashコンテンツを取り扱うことはできません(*1)。
(*1) DoJa-5.1プロファイル以降では、メーカーの実装選択によっては、ネイティブ画像管理領域に保存され
ているFlashコンテンツを画像データの選択読み込みや画像データのID指定読み込みで取り出すことが
できるようになりました。ただし、取り出されたFlashコンテンツを再生することは、従来同様サポー トされません。
【DoJa-5.0】
903iシリーズ以降の携帯電話では、デコメールに対して小さな画像(20x20ドットのJPEG画像またはGIF画 像)をiモード絵文字風にインライン埋め込みするデコメ絵文字の機能が搭載されています。メーカーによっ ては、iアプリから以下の両方の条件を満たす画像を新規登録しようとした場合、その画像はデコメ絵文字用 の画像フォルダに格納されることがあります。
- 20x20ドットのGIF画像(アニメ-ションGIFを含む)もしくはJPEG画像である。
- 再配布可能である(再配布不可の設定が行われていない)。
注意事項:
● ダウンロード即起動iアプリ、および非活性化状態の待ち受けアプリケーションからは画像データの新規登 録を行うことはできません。
● addEntry()メソッドに指定するMediaImageオブジェクトは、使用可能な状態(use()メソッドが呼び出 された状態)でなければなりません。
● ImageStore.addEntry(MediaImage)メソッドを使用して登録した画像データは、携帯電話ネイティブの 機能(赤外線通信やiショットメール送信など)により携帯電話の外部に保存することができます。携帯電 話の外部に保存されることが好ましくない画像データは、以下のいずれかの方法で保存することを検討して ください。
- 画像データを、マイピクチャ領域ではなくScratchPadに保存する。
- 画像データを、DoJa-4.0プロファイルにて新設されたImageStore.addEntry(MediaImage, boolean)メソッドを使用してマイピクチャ領域に保存する。
Copyright Ⓒ 2008-2012 NTT DOCOMO, Inc. All Rights Reserved.
- 画像データに対応するMediaImageオブジェクトを、DoJa-4.0プロファイルにて新設された MediaResource.setRedistributable()メソッドにより明示的に再配布不可と設定した上で、
ImageStore.addEntry(MediaImage)メソッドを使用してマイピクチャ領域に保存する。
11.10.2 画像データの選択読み込み
画像データの選択読み込みとは、アプリケーションプログラムからの画像データ要求(メソッド呼 び出し)に対し、その都度画面に表示される画像一覧などからユーザーが選択操作した画像データ を与える機能です。画像データの選択読み込みを行うには、 ImageStore クラスの static メソッド selectEntry()を使用します。
画像データの選択読み込みを行うと、携帯電話は以下のような動作を行います。
(1) アプリケーションプログラムからImageStore.selectEntry()メソッドを呼び出します。このメソッド が呼び出されるとiアプリはサスペンドします。
(2) 画像データの選択を行うためのネイティブのユーザーインタフェース画面が起動します。この画面を使用し て、ユーザーはiアプリにアクセスを行わせる画像データを選択します。また、操作をキャンセルして処理 を中止することもできます。
(3) ユーザーが選択する画像データを決定すると、iアプリはレジュームしてselectEntry()メソッドはアプ リケーションプログラムに復帰します。その際このメソッドは、選択された画像データに対応する
ImageStoreオブジェクトを返します。
ユーザーが画像データの選択操作をキャンセルしても例外は発生せず、このメソッドはnullを返します。
selectEntry()メソッドが返した ImageStore オブジェクトからは、選択された画像のバイト イメージや MediaImage オブジェクトを取得することができます。
また、この ImageStore オブジェクトからは画像データのエントリ ID を取得することもでき、後 述する画像データの ID 指定読み込みにおいて、ユーザー操作なしに再度その画像データを読み込 むために使用することができます。
注意事項:
● ダウンロード即起動iアプリ、および非活性化状態の待ち受けアプリケーションからは画像データの選択読 み込みを行うことはできません。