com.nttdocomo.ui
クラス MediaManager

Object
  拡張com.nttdocomo.ui.MediaManager

public final class MediaManager
extends Object

メディアリソースデータの管理オブジェクトを定義します。
リソースの取得と利用時の振舞は以下のようになります。

[DoJa-5.0 (903i) 以降]
MediaResource.use() メソッド、 MediaResource.unuse() メソッド呼び出しによる、 メモリ確保・解放に関する振る舞いをモデル化するために、 以下の2つの領域を定義します。

オリジナルデータ領域:
内部表現形式に変換される前のデータイメージを保存しておく領域です。 例えば、 GIF 画像の場合は、GIF フォーマットのデータそのものを保存しておく領域がこれにあたります。
内部データ領域:
メディアリソースに対して use メソッドを呼び出すと、 内部表現形式への変換を行いますが、 その変換後のデータを保存しておく領域です。

use()、unuse() 時のメモリ確保・解放に関する振る舞いは、 getImage()、getSound()、getAvatarData() メソッドの引数に、何を指定するかによって、下記のように異なります。

URL 指定により取得したメディアリソース:
1回目の use 時:
  • 新しく「オリジナルデータ領域」を確保する。 URLで指定されたロケーションよりデータを読み込み、 そのデータを「オリジナルデータ領域」に保存する。
  • 新しく「内部データ領域」を確保する。 「オリジナルデータ領域」内のデータを内部形式に変換して 「内部データ領域」に保持する。
unuse 時:
「内部データ領域」のみを解放する。
2回目以降の use 時:
新しく「内部データ領域」を確保する。 URLで指定されたロケーションからのデータ読み込みは行わず、 「オリジナルデータ領域」 内のデータを内部形式に変換して「内部データ領域」に保持する。
バイト配列指定により取得したメディアリソース:
1回目の use 時:
  • 新しく「オリジナルデータ領域」を確保する。 参照しているバイト配列の内容を 「オリジナルデータ領域」へコピーし、保存する。
  • 新しく「内部データ領域」を確保する。 「オリジナルデータ領域」内のデータを内部形式に変換して 「内部データ領域」に保持する
unuse 時:
「内部データ領域」のみを解放する。
2回目以降の use 時:
新しく「内部データ領域」を確保する。 「オリジナルデータ領域」 内のデータを内部形式に変換して「内部データ領域」に保持する。
ストリーム指定により取得したメディアリソース:
1回目の use 時:
  • 新しく「オリジナルデータ領域」を確保する。 データ1つ分をストリームより読み込み、 そのデータを「オリジナルデータ領域」に保存する。
  • 新しく「内部データ領域」を確保する。 「オリジナルデータ領域」内のデータを内部形式に 変換して「内部データ領域」に保持する。
unuse 時:
「オリジナルデータ領域」、「内部データ領域」を解放する。
2回目以降の use 時:
「1回目の use 時」と同様の振る舞いをする。

ミニマムスペック:
ミニマムスペックでは、getDataメソッドは、nullを返します。

関連項目:
MediaResource, MediaData, MediaImage, MediaSound, MediaPresenter, AudioPresenter, VisualPresenter

メソッドの概要
static MediaImage createMediaImage(int width, int height)
           画像の幅・高さを指定して、 空のメディアイメージを生成します。
static MediaSound createMediaSound(int bytes)
           サウンドのデータサイズ [bytes] を指定して、 空のメディアサウンドを生成します。
static AvatarData getAvatarData(byte[] data) [iアプリオプションAPI]
           バイト配列を指定してアバターデータオブジェクトを取り出します。
static AvatarData getAvatarData(java.io.InputStream in) [iアプリオプションAPI]
           ストリームを指定してアバターデータオブジェクトを取り出します。
static AvatarData getAvatarData(String location) [iアプリオプションAPI]
           場所を指定してアバターデータオブジェクトを取り出します。
static MediaData getData(byte[] data) [iアプリオプションAPI]
           バイト配列を指定してメディアデータオブジェクトを取り出します。
static MediaData getData(java.io.InputStream in) [iアプリオプションAPI]
           ストリームを指定してメディアデータオブジェクトを取り出します。
static MediaData getData(String location) [iアプリオプションAPI]
          場所を指定してメディアデータオブジェクトを取り出します。
static MediaImage getImage(byte[] data)
           バイト配列を指定してメディアイメージオブジェクトを取り出します。
static MediaImage getImage(java.io.InputStream in)
           ストリームを指定してメディアイメージオブジェクトを取り出します。
static MediaImage getImage(String location)
          場所を指定してメディアイメージオブジェクトを取り出します。
static MediaSound getSound(byte[] data)
           バイト配列を指定してメディアサウンドオブジェクトを取り出します。
static MediaSound getSound(java.io.InputStream in)
           ストリームを指定してメディアサウンドオブジェクトを取り出します。
static MediaSound getSound(String location)
           場所を指定してメディアサウンドオブジェクトを取り出します。
static MediaImage getStreamingImage(String location, String mimetype) [iアプリオプションAPI]
           擬似ストリーミング再生用として場所と MIME Type を指定してメディアイメージオブジェクトを取り出します。
static void use(MediaImage[] images, boolean useOnce)
           指定されたイメージを、 まとめて利用可能にします。
static void use(MediaSound[] sounds, boolean useOnce)
           指定されたサウンドを、 まとめて利用可能にします。
 
クラス Object から継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

メソッドの詳細

getData

public static final MediaData getData(String location) [iアプリオプションAPI]
場所を指定してメディアデータオブジェクトを取り出します。 location指定のフォーマット形式が正しくない場合 、引数指定誤りになります。

端末によってはサポートされない場合があります。 サポートされない場合、戻り値はnullとなります。

パラメータ:
location - 場所を指定します。
戻り値:
メディアデータオブジェクトを返します。
例外:
NullPointerException - 引数 location が null の場合に発生します。
IllegalArgumentException - 引数 location に指定された文字列が "comm:"、"obex:" で開始する場合に発生します。
IllegalArgumentException - 引数 location に不正な場所が指定された場合に発生します。
SecurityException - セキュリティ上の制約に触れた場合に発生します。
UIException - システムリソースの不足などでオブジェクトが生成できなかった場合に発生します(NO_RESOURCES)

getImage

public static final MediaImage getImage(String location)
場所を指定してメディアイメージオブジェクトを取り出します。 location指定のフォーマット形式が正しくない場合 、引数指定誤りになります。

パラメータ:
location - 場所を指定します。
戻り値:
メディアイメージオブジェクトを返します。
例外:
NullPointerException - 引数 location が null の場合に発生します。
IllegalArgumentException - 引数 location に指定された文字列が "comm:"、"obex:" で開始する場合に発生します。
IllegalArgumentException - 引数 location に不正な場所が指定された場合に発生します。
SecurityException - セキュリティ上の制約に触れた場合に発生します。
UIException - システムリソースの不足などでオブジェクトが生成できなかった場合に発生します(NO_RESOURCES)

getSound

public static final MediaSound getSound(String location)

場所を指定してメディアサウンドオブジェクトを取り出します。 location 指定のフォーマット形式が正しくない場合、 引数指定誤りになります。

パラメータ:
location - 場所を指定します。
戻り値:
メディアサウンドオブジェクトを返します。
例外:
NullPointerException - 引数 location が null の場合に発生します。
IllegalArgumentException - 引数 location に指定された文字列が "comm:"、"obex:" で開始する場合に発生します。
IllegalArgumentException - 引数 location に不正な場所が指定された場合に発生します。
SecurityException - セキュリティ上の制約に触れた場合に発生します。
UIException - システムリソースの不足などでオブジェクトが生成できなかった場合に発生します(NO_RESOURCES)

getAvatarData

public static final AvatarData getAvatarData(String location) [iアプリオプションAPI]

場所を指定してアバターデータオブジェクトを取り出します。 location指定のフォーマット形式が正しくない場合 、引数指定誤りになります。

端末によっては、このメソッドをサポートしていない場合があります。 その場合には、例外 UnsupportedOperationException が発生します。

パラメータ:
location - 場所を指定します。
戻り値:
アバターデータオブジェクトを返します。
例外:
UnsupportedOperationException - 端末がこのメソッドをサポートしていない場合に発生します。
NullPointerException - 引数 location が null の場合に発生します。
IllegalArgumentException - 引数 location に指定された文字列が "comm:"、"obex:" で開始する場合に発生します。
IllegalArgumentException - 引数 location に不正な場所が指定された場合に発生します。
SecurityException - セキュリティ上の制約に触れた場合に発生します。
UIException - システムリソースの不足などでオブジェクトが生成できなかった場合に発生します(NO_RESOURCES)。
導入されたバージョン:
DoJa-4.1 (902i)

getStreamingImage

public static final MediaImage getStreamingImage(String location,
                                                 String mimetype) [iアプリオプションAPI]

擬似ストリーミング再生用として場所と MIME Type を指定してメディアイメージオブジェクトを取り出します。 location指定のフォーマット形式が正しくない場合 、 引数指定誤りになります。
このメソッドでは、MIME Type の Type が "image" および "video" のものをサポートしています。 MIME Type の Subtype としてどのようなコンテンツをサポートしているかは機種依存です。 なお、例えば "text/plain" という MIME Type の場合、Type が "text"、Subtype が "plain" となります。

MIME Type のType として "image" が指定された場合は、 getImage(String) を呼び出した場合と同様に通常のメディアイメージオブジェクトを返します。
MIME Type のType として "video" が指定された場合は、 擬似ストリーミング再生用のメディアイメージオブジェクトを返します。

[DoJa-4.1 (902iS) 以前]
擬似ストリーミング再生用のメディアイメージオブジェクトに対してメディアリソースの使用開始を宣言した場合にどのような処理が行われるかは機種依存です。
[DoJa-5.0 (903i) 以降]
擬似ストリーミング再生用のメディアイメージオブジェクトは、 メディアリソースの使用開始を宣言してもコンテンツの取得を行いません。 再生開始時点で初めてデータの取得を開始します。

使用開始を宣言した後に VisualPresenter コンポーネントにセットして再生を開始すると、メディアイメージをロードしながら 擬似ストリーミング再生を開始します。 なお、使用開始の宣言時あるいは再生開始後に擬似ストリーミング再生ができないようなメディアイメージであることが判明した場合は、 メディアイメージのロードが完了してから通常の再生を開始します。

端末によっては、 動画の擬似ストリーミング再生をサポートしていない場合があります。 そのような端末では、このメソッドを呼び出すと getImage(String) と同様に振る舞います。 未サポートであることを理由に例外が発生することはありません。

パラメータ:
location - 場所を指定します。
mimetype - MIME Type を指定します。
戻り値:
擬似ストリーミング再生用のメディアイメージオブジェクトを返します。
例外:
NullPointerException - 引数 location または mimetype が null の場合に発生します。
UIException - 引数 mimetype にサポートしていない MIME Type が指定された場合に発生します(UNSUPPORTED_FORMAT)。
IllegalArgumentException - 引数 location に指定された文字列が "comm:"、"obex:" で開始する場合に発生します。
IllegalArgumentException - 引数 location に不正な場所が指定された場合に発生します。
SecurityException - セキュリティ上の制約に触れた場合に発生します。
UIException - システムリソースの不足などでオブジェクトが生成できなかった場合に発生します(NO_RESOURCES)。
導入されたバージョン:
DoJa-3.5 (900i)

getData

public static final MediaData getData(java.io.InputStream in) [iアプリオプションAPI]
ストリームを指定してメディアデータオブジェクトを取り出します。 ストリームからは、メディアデータのファイルイメージを取り出せる必要があります。

端末によってはサポートされない場合があります。 サポートされない場合、戻り値はnullとなります。

パラメータ:
in - 入力ストリームを指定します。
戻り値:
メディアデータオブジェクトを返します。
例外:
NullPointerException - 引数 in が null の場合に発生します。
UIException - システムリソースの不足などでオブジェクトが生成できなかった場合に発生します(NO_RESOURCES)。
導入されたバージョン:
DoJa-3.0 (505i)

getImage

public static final MediaImage getImage(java.io.InputStream in)
ストリームを指定してメディアイメージオブジェクトを取り出します。 ストリームからは、メディアイメージのファイルイメージを取り出せる必要があります。

パラメータ:
in - 入力ストリームを指定します。
戻り値:
メディアイメージオブジェクトを返します。
例外:
NullPointerException - 引数 in が null の場合に発生します。
UIException - システムリソースの不足などでオブジェクトが生成できなかった場合に発生します(NO_RESOURCES)。
導入されたバージョン:
DoJa-3.0 (505i)

getSound

public static final MediaSound getSound(java.io.InputStream in)

ストリームを指定してメディアサウンドオブジェクトを取り出します。 ストリームからは、メディアサウンドのファイルイメージを取り出せる必要があります。

パラメータ:
in - 入力ストリームを指定します。
戻り値:
メディアサウンドオブジェクトを返します。
例外:
NullPointerException - 引数 in が null の場合に発生します。
UIException - システムリソースの不足などでオブジェクトが生成できなかった場合に発生します(NO_RESOURCES)。
導入されたバージョン:
DoJa-3.0 (505i)

getAvatarData

public static final AvatarData getAvatarData(java.io.InputStream in) [iアプリオプションAPI]

ストリームを指定してアバターデータオブジェクトを取り出します。 ストリームからは、アバターデータのファイルイメージを取り出せる必要があります。

端末によっては、このメソッドをサポートしていない場合があります。 その場合には、例外 UnsupportedOperationException が発生します。

パラメータ:
in - 入力ストリームを指定します。
戻り値:
アバターデータオブジェクトを返します。
例外:
UnsupportedOperationException - 端末がこのメソッドをサポートしていない場合に発生します。
NullPointerException - 引数 in が null の場合に発生します。
UIException - システムリソースの不足などでオブジェクトが生成できなかった場合に発生します(NO_RESOURCES)。
導入されたバージョン:
DoJa-4.1 (902i)

getData

public static final MediaData getData(byte[] data) [iアプリオプションAPI]
バイト配列を指定してメディアデータオブジェクトを取り出します。 バイト配列には、メディアデータのファイルイメージが格納されている必要があります。

端末によってはサポートされない場合があります。 サポートされない場合、戻り値はnullとなります。

パラメータ:
data - 入力バイト配列を指定します。
戻り値:
メディアデータオブジェクトを返します。
例外:
NullPointerException - 引数 data が null の場合に発生します。
UIException - システムリソースの不足などでオブジェクトが生成できなかった場合に発生します(NO_RESOURCES)。
導入されたバージョン:
DoJa-3.0 (505i)

getImage

public static final MediaImage getImage(byte[] data)
バイト配列を指定してメディアイメージオブジェクトを取り出します。 バイト配列には、メディアイメージのファイルイメージが格納されている必要があります。

パラメータ:
data - 入力バイト配列を指定します。
戻り値:
メディアイメージオブジェクトを返します。
例外:
NullPointerException - 引数 data が null の場合に発生します。
UIException - システムリソースの不足などでオブジェクトが生成できなかった場合に発生します(NO_RESOURCES)。
導入されたバージョン:
DoJa-3.0 (505i)

getSound

public static final MediaSound getSound(byte[] data)

バイト配列を指定してメディアサウンドオブジェクトを取り出します。 バイト配列には、メディアサウンドのファイルイメージが格納されている必要があります。

パラメータ:
data - 入力バイト配列を指定します。
戻り値:
メディアサウンドオブジェクトを返します。
例外:
NullPointerException - 引数 data が null の場合に発生します。
UIException - システムリソースの不足などでオブジェクトが生成できなかった場合に発生します(NO_RESOURCES)。
導入されたバージョン:
DoJa-3.0 (505i)

getAvatarData

public static final AvatarData getAvatarData(byte[] data) [iアプリオプションAPI]

バイト配列を指定してアバターデータオブジェクトを取り出します。 バイト配列には、アバターデータのファイルイメージが格納されている必要があります。

端末によっては、このメソッドをサポートしていない場合があります。 その場合には、例外 UnsupportedOperationException が発生します。

パラメータ:
data - 入力バイト配列を指定します。
戻り値:
アバターデータオブジェクトを返します。
例外:
UnsupportedOperationException - 端末がこのメソッドをサポートしていない場合に発生します。
NullPointerException - 引数 data が null の場合に発生します。
UIException - システムリソースの不足などでオブジェクトが生成できなかった場合に発生します(NO_RESOURCES)。
導入されたバージョン:
DoJa-4.1 (902i)

use

public static final void use(MediaImage[] images,
                             boolean useOnce)
                      throws IterationAbortedException

指定されたイメージを、 まとめて利用可能にします。

第1引数で指定された全イメージについて「一度きりの利用」 とするかどうかを第2引数 useOnce で指定できます。 「一度きりの利用」についての詳細は MediaResource.use(MediaResource, boolean) の第2引数についての説明を参照してください。

メディアイメージの中には、 通信を行わないと利用可能に出来ないものも存在しますが、 引数の中にそのようなメディアイメージが指定されていても正しく動作します。

指定されたメディアイメージのうち、1つでも use に失敗した場合には、例外 IterationAbortedException が発生します。 その場合、IterationAbortedException.getAbortedIndex() によって、use に失敗したメディアイメージが格納されていた 配列のインデックス値が取得できます。 また、IterationAbortedException.getCause() によって、 use に失敗した原因となった例外オブジェクトを取得できます。 なお、以下の2点について注意してください。

  • IterationAbortedException.getCause() によって取得できる 「use に失敗した原因となった例外オブジェクト」には、 use に失敗したメディアイメージを単独で MediaResource.use() した場合に発生するであろう例外オブジェクトと同じものです。
  • 失敗するまでに use に成功したメディアイメージは、 利用可能状態のままとなっています。
  • 後述するように、 配列に格納されているメディアイメージが処理される順番は機種依存です。 したがって、IterationAbortedException.getAbortedIndex() で取得したインデックス値より小さい要素に格納されている全てのメディアイメージが利用可能状態になっているわけではありません。

このメソッド呼び出しにより、配列に格納されているメディアイメージが、 どのような順番で利用可能となるかは機種依存です。 このメソッド呼び出しからリターンした時点で、 全てのメディアイメージが利用可能状態になっていることのみが保証されています。

配列の中に、既に利用可能状態のメディアイメージが含まれている場合、 そのメディアイメージに対しては何も行われません。 また、配列中の null が指定された要素は単に無視され、 非 null の要素のみが処理対象となります。

パラメータ:
images - 利用可能にしたいメディアイメージの集合を格納した配列を指定します。
useOnce - 引数 images で指定した全イメージについて、 「一度きりの利用」としたい場合には true を、 そうでない場合には false を指定します。
例外:
NullPointerException - 引数 images に null が指定された}場合に発生します。
IterationAbortedException - 配列 images に格納されているメディアイメージのいずれかが、 use に失敗した場合に発生します。
導入されたバージョン:
DoJa-5.0 (903i)

use

public static final void use(MediaSound[] sounds,
                             boolean useOnce)
                      throws IterationAbortedException

指定されたサウンドを、 まとめて利用可能にします。

引数に指定できるのがメディアサウンドである事以外は、 use(MediaImage[], boolean) と同じです。

パラメータ:
sounds - 利用可能にしたいメディアサウンドの集合を格納した配列を指定します。
useOnce - 引数 sounds で指定した全サウンドについて、 「一度きりの利用」としたい場合には true を、 そうでない場合には false を指定します。
例外:
NullPointerException - 引数 sounds に null が指定された}場合に発生します。
IterationAbortedException - 配列 sounds に格納されているメディアサウンドのいずれかが、 use に失敗した場合に発生します。
導入されたバージョン:
DoJa-5.0 (903i)

createMediaImage

public static final MediaImage createMediaImage(int width,
                                                int height)

画像の幅・高さを指定して、 空のメディアイメージを生成します。

これによって生成されたメディアイメージの振る舞いは以下の通りです。

  • 生成されたメディアイメージは、 既に利用可能状態になっており、 指定された幅・高さを持つ内部データ領域のみを保持しています。
  • 生成されたメディアイメージは、 「一度きり」の利用しかできません。 すなわち、一度 MediaResource.unuse() してしまうと、 再度 use() した時点で例外が発生します。
  • 生成されたメディアイメージの各画素は、全て黒色で初期化されています。
  • 生成されたメディアイメージは、 便宜上常に再配布不可として扱われます。
  • 生成されたメディアイメージに対するプロパティの設定や取得はできません。 すなわち、MediaResource.setProperty(String, String) 呼び出しは常に(例外が発生しない条件であれば)無視され、 MediaResource.getProperty(String) は、引数に何を指定して呼び出しても(例外が発生しない条件であれば) null を返します。

このメソッドは、まだどの画像を使うかは決まっていないが、 必要な内部データ領域の最大サイズが分かっている場合に有用です。 例えば、ひとつのメディアイメージで、 画像 a, b, c を使い回す場合を考えます。 画像は a, b, c の順番で利用するが、 縦・横サイズの一番大きな画像は b である場合に、 以下のようなコードを書くことで、 サイズオーバになることなく、a, b, c 全ての画像を使い回すことが出来ます。

 // 画像 b の縦・横サイズで内部データ領域を確保
 MediaImage empty = MediaManager.createMediaImage(画像 b の縦・横サイズ);
 MediaImage a = MediaManager.getImage(画像 a のデータ);
 a.use(empty, true); // emptyで確保した内部データ領域を画像 a で上書き
 // ここで画像 a を利用する
 MediaImage b = MediaManager.getImage(画像 b のデータ);
 b.use(a, true); // a で使っていた内部データ領域を画像 b で利用
 // ここで画像 b を利用する
 MediaImage c = MediaManager.getImage(画像 c のデータ);
 c.use(b, true); // b で使っていた内部データ領域を画像 c で利用
 // ここで画像 c を利用する

パラメータ:
width - 生成したい空のメディアイメージの幅を指定します。
height - 生成したい空のメディアイメージの高さを指定します。
戻り値:
空のメディアイメージを生成して返します。
例外:
IllegalArgumentException - 引数 width、height のいずれかに 0 または 負の値が指定された場合に発生します。
UIException - 必要なリソースが確保できなかった場合に発生します(NO_RESOURCES)。
導入されたバージョン:
DoJa-5.0 (903i)

createMediaSound

public static final MediaSound createMediaSound(int bytes)

サウンドのデータサイズ [bytes] を指定して、 空のメディアサウンドを生成します。

これによって生成されたメディアサウンドの振る舞いは以下の通りです。

  • 生成されたメディアサウンドは、 既に利用可能状態になっており、 指定されたデータサイズ [bytes] のメディアサウンドを格納するのに必要十分な内部データ領域のみを保持しています。
  • 生成されたメディアサウンドは 「一度きり」の利用しかできません。 すなわち、一度 MediaResource.unuse() してしまうと、 再度 use() した時点で例外が発生します。
  • 生成された直後のメディアサウンドを AudioPresenter で再生しても音は鳴りませんが、再生自体は可能です。 その場合、 例外は発生せず、再生開始・停止・完了イベントも通常通り発生しますが、 再生時間は機種依存です。
  • 生成されたメディアサウンドは、 便宜上常に再配布不可として扱われます。
  • 生成されたメディアサウンドに対するプロパティの設定や取得はできません。 すなわち、MediaResource.setProperty(String, String) 呼び出しは常に(例外が発生しない条件であれば)無視され、 MediaResource.getProperty(String) は、引数に何を指定して呼び出しても(例外が発生しない条件であれば) null を返します。

このメソッドは、まだどのサウンドを使うかは決まっていないが、 必要な内部データ領域の最大サイズが分かっている場合に有用です。 具体的な使用例については createMediaImage(int, int) を参考にしてください。

パラメータ:
bytes - 生成したい空のメディアサウンドのデータサイズ [bytes] を指定します。
戻り値:
空のメディアサウンドを生成して返します。
例外:
IllegalArgumentException - 引数 bytes に 0 または 負の値が指定された場合に発生します。
UIException - 必要なリソースが確保できなかった場合に発生します(NO_RESOURCES)。
導入されたバージョン:
DoJa-5.0 (903i)