Objectcom.nttdocomo.ui.ExifData
Exif 属性を表すクラスです。
Exif 属性は、複数のタグの集合体です。 各タグには、 そのタグを識別するためのタグ番号が規定されており、 タグ番号と、そのタグが所属するグループ(TIFF Tag, EXIF Private Tag, GPS Info Tag, Interoperability Tag)を指定すれば、 タグの種類は一意に定まります。 さらに、タグの種類ごとに、以下の項目が規定されています。
タグに格納されている値の取得・設定をするためのメソッドは、 そのタグのタイプによって異なります。 以下に、それぞれのタイプごとに利用するメソッド、 ならびに値の解釈方法を示します。
| タイプ | 設定メソッド | 取得メソッド | 値の解釈 |
|---|---|---|---|
| BYTE (8ビット符号無し整数) |
setIntegerTag() |
getIntegerTag() |
「カウント」個の long 型の値として表します。 各 long 値が取り得る値の範囲は 0〜255 です。 |
| SHORT (16ビット符号無し整数) |
setIntegerTag() |
getIntegerTag() |
「カウント」個の long 型の値として表します。 各 long 値が取り得る値の範囲は 0〜65535 です。 |
| LONG (32ビット符号無し整数) |
setIntegerTag() |
getIntegerTag() |
「カウント」個の long 型の値として表します。 各 long 値が取る値の範囲は 0〜232-1 です。 |
| SLONG (32ビット符号付き整数) |
setIntegerTag() |
getIntegerTag() |
「カウント」個の long 型の値として表します。 各 long 値が取り得る値の範囲は -231〜231-1 です。 |
| RATIONAL (符号無し有理数) |
setRationalTag() |
getRationalTag() |
「カウント」個の long[] 型の値として表します。 long[i] (0 ≤ i < カウント) には、 長さ2の long 配列が格納されています。 long[i][0] には i 番目の値の分子が、 long[i][1] には i 番目の値の分母が、 それぞれ格納されています。 各 long 値が取り得る値の範囲は 0〜232-1 です。 |
| SRATIONAL (符号付き有理数) |
setRationalTag() |
getRationalTag() |
「カウント」個の long[] 型の値として表します。 long[i] (0 ≤ i < 「カウント」) には、 長さ2の long 配列が格納されています。 long[i][0] には i 番目の値の分子が、 long[i][1] には i 番目の値の分母が、 それぞれ格納されています。 各 long 値が取り得る値の範囲は -231〜231-1 です。 |
| ASCII | setAsciiTag() |
getAsciiTag() |
長さ (「カウント」 - 1) の文字列として表します。 NUL 終端は含みません。 各文字は ASCII の範囲内です。 |
| UNDEFINED | setUndefinedTag() |
getUndefinedTag() |
「カウント」の長さを持つバイト列として表します。 |
このクラスに定義されているメソッドでは、 明示的な記載が無い限り、 引数に指定された配列は全体がコピーされてメソッドに渡され、 戻り値の型が配列の場合は、内部で保持している配列のコピーが返されます。
タグの種類や、タグが所属するグループ、それぞれのタグにおけるタグ番号・ フィールド名・タイプ・カウントなどの詳細については、 「ディジタルスチルカメラ用画像ファイルフォーマット規格 Exif 2.2 (JEITA CP-3451)」を参照してください。
| 入れ子クラスの概要 | |
class |
ExifData.TagInfo
enumerateTags()
メソッドの戻り値に含まれるタグ情報を表す内部クラスです。 |
| フィールドの概要 | |
static int |
GPS_INFO_TAG
タグが所属するグループを表す定数値で、 0th IFD GPS Info Tag であることを表します(=34853)。 |
static int |
SUPPORT_GET
タグのサポート状況を表す定数値で、 取得可能であることを表します(=1)。 |
static int |
SUPPORT_SET
タグのサポート状況を表す定数値で、 設定可能であることを表します(=2)。 |
| コンストラクタの概要 | |
ExifData()
Exif 属性のオブジェクトを生成します。 |
|
| メソッドの概要 | |
java.util.Enumeration |
enumerateTags()
このオブジェクトに格納されている全ての Exif タグを列挙します。 |
String |
getAsciiTag(int tagGroup,
int tagID)
ASCII 型の Exif タグについて、 指定されたタグに格納されている値を取得します。 |
long[] |
getIntegerTag(int tagGroup,
int tagID)
整数(BYTE, SHORT, LONG, SLONG)型の Exif タグについて、 指定されたタグに格納されている値を取得します。 |
long[][] |
getRationalTag(int tagGroup,
int tagID)
有理数(RATIONAL, SRATIONAL)型の Exif タグについて、 指定されたタグに格納されている値を取得します。 |
static int |
getSupportStatus(int tagGroup,
int tagID)
指定されたタグのサポート状況を取得します。 |
byte[] |
getUndefinedTag(int tagGroup,
int tagID)
UNDEFINED 型の Exif タグについて、 指定されたタグに格納されている値を取得します。 |
void |
setAsciiTag(int tagGroup,
int tagID,
String value)
ASCII 型の Exif タグについて、 指定されたタグに格納する値を設定します。 |
void |
setIntegerTag(int tagGroup,
int tagID,
long[] values)
整数(BYTE, SHORT, LONG, SLONG)型の Exif タグについて、 指定されたタグに格納する値を設定します。 |
void |
setRationalTag(int tagGroup,
int tagID,
long[][] rational)
有理数(RATIONAL, SRATIONAL)型の Exif タグについて 指定されたタグに格納する値を設定します。 |
void |
setUndefinedTag(int tagGroup,
int tagID,
byte[] value)
UNDEFINED 型の Exif タグについて、 指定されたタグに格納する値を設定します。 |
Location |
toLocation()
この Exif 属性にもとづいた位置情報オブジェクトを生成します。 |
void |
update(Location location)
指定された位置情報を、この Exif 属性に反映させます。 |
| クラス Object から継承したメソッド |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| フィールドの詳細 |
public static final int GPS_INFO_TAG
public static final int SUPPORT_GET
getSupportStatus(int, int),
定数フィールド値public static final int SUPPORT_SET
getSupportStatus(int, int),
定数フィールド値| コンストラクタの詳細 |
public ExifData()
Exif 属性のオブジェクトを生成します。
現実装では、生成直後には下記のタグのみが格納されています。
| グループ | タグ番号(フィールド名) | タイプ | カウント | 初期値 | サポート |
|---|---|---|---|---|---|
GPS_INFO_TAG |
0 (GPSVersionID) | BYTE | 4 | {2, 2, 0, 0} | 更新不可・取得のみ可 |
オブジェクト生成時に格納されるタグの種類は、 将来の実装で変更される可能性があります。
| メソッドの詳細 |
public static int getSupportStatus(int tagGroup,
int tagID)
引数 tagGroup に GPS_INFO_TAG 以外の値が指定された場合や、
引数 tagID に Exif で規定されていないタグ番号を指定した場合には、
このメソッドは 0 を返します。
tagGroup - サポート状況を取得したいタグのグループを指定します。
現在の実装では GPS_INFO_TAG のみが指定可能です。tagID - サポート状況を取得したいタグのタグ番号を指定します。
SUPPORT_GET を、
設定・取得がサポートされている場合は
(SUPPORT_GET | SUPPORT_SET) を、
いずれもサポートされていない場合は 0 を、それぞれ返します。
public void setIntegerTag(int tagGroup,
int tagID,
long[] values)
整数(BYTE, SHORT, LONG, SLONG)型の Exif タグについて、 指定されたタグに格納する値を設定します。 指定されたタグについて、値の設定をサポートしていない場合、何もしません。
tagGroup - 設定したいタグのグループを指定します。
現在の実装では GPS_INFO_TAG のみが指定可能です。tagID - 設定したいタグのタグ番号を指定します。values - 設定したいタグの値の配列を指定します。
配列の長さは、
そのタグの「カウント」の数と一致していなければなりません。
引数で指定したタグを削除するには null を指定します。
IllegalArgumentException -
指定されたタグが整数型でない場合に発生します。
IllegalArgumentException - 引数 values の長さが、指定されたタグの「カウント」
の数と一致していない場合に発生します。
IllegalArgumentException - 引数 values に格納されている値のいずれかが、指定されたタグのタイプ
(BYTE, SHORT, LONG, SLONG)
に収まらない場合に発生します。
public long[] getIntegerTag(int tagGroup,
int tagID)
tagGroup - 値を取得したいタグのグループを指定します。
現在の実装では GPS_INFO_TAG のみが指定可能です。tagID - 値を取得したいタグのタグ番号を指定します。
IllegalArgumentException -
指定されたタグが整数型でない場合に発生します。
public void setRationalTag(int tagGroup,
int tagID,
long[][] rational)
有理数(RATIONAL, SRATIONAL)型の Exif タグについて 指定されたタグに格納する値を設定します。 指定されたタグについて、値の設定をサポートしていない場合、何もしません。
引数 rational には、設定したい値(有理数)を、 long[2] で表した分数の配列で指定します。 i 番目の値の分子を rational[i][0] に、 分母を rational[i][1] に、それぞれ格納します。 rational[i] の長さは、任意の i において、 2以上でなければなりません。 rational[i] の第2要素以降の値は無視されます。
tagGroup - 設定したいタグのグループを指定します。
現在の実装では GPS_INFO_TAG のみが指定可能です。tagID - 設定したいタグのタグ番号を指定します。rational - 設定したいタグの値を、分数の配列で指定します。
rational の長さは、そのタグの「カウント」
の数と一致していなければなりません。
引数で指定したタグを削除するには null を指定します。
NullPointerException - 引数 rational について、
rational[i] が null となるような整数 i
が存在する場合に発生します。
IllegalArgumentException -
指定されたタグが有理数型でない場合に発生します。
IllegalArgumentException - 引数 rational の長さが、指定されたタグの「カウント」
の数と一致していない場合に発生します。
IllegalArgumentException - 引数 rational について、
rational[i] の長さが 2 未満であるような整数
i が存在する場合に発生します。
IllegalArgumentException - 引数 rational の配列中で、
分母が格納されている要素のいずれかに
0 が指定されている場合に発生します。
IllegalArgumentException - 引数 rational の各要素に格納されている long 値について
指定されたタグのタイプ (RATIONAL, SRATIONAL)
に収まらない場合に発生します。
public long[][] getRationalTag(int tagGroup,
int tagID)
tagGroup - 値を取得したいタグのグループを指定します。
現在の実装では GPS_INFO_TAG のみが指定可能です。tagID - 値を取得したいタグのタグ番号を指定します。
IllegalArgumentException - 指定されたタグが有理数型でない場合に発生します。
public void setAsciiTag(int tagGroup,
int tagID,
String value)
ASCII 型の Exif タグについて、 指定されたタグに格納する値を設定します。 指定されたタグについて、値の設定をサポートしていない場合、何もしません。
tagGroup - 設定したいタグのグループを指定します。
現在の実装では GPS_INFO_TAG のみが指定可能です。tagID - 設定したいタグのタグ番号を指定します。value - 設定したいタグの値を指定します。
NUL 終端は含めてはいけません。
また、文字列の長さは、そのタグの(「カウント」 - 1)
の値と一致していなければなりません。
引数で指定したタグを削除するには null を指定します。
IllegalArgumentException -
指定されたタグが ASCII 型でない場合に発生します。
IllegalArgumentException - 引数 value の長さが、指定されたタグの(「カウント」 - 1)
の値と一致していない場合に発生します。
IllegalArgumentException - 引数 value に、非 ASCII コードが含まれていた場合に発生します。
public String getAsciiTag(int tagGroup,
int tagID)
tagGroup - 値を取得したいタグのグループを指定します。
現在の実装では GPS_INFO_TAG のみが指定可能です。tagID - 値を取得したいタグのタグ番号を指定します。
IllegalArgumentException -
指定されたタグが ASCII 型でない場合に発生します。
public void setUndefinedTag(int tagGroup,
int tagID,
byte[] value)
UNDEFINED 型の Exif タグについて、 指定されたタグに格納する値を設定します。 指定されたタグについて、値の設定をサポートしていない場合、何もしません。
tagGroup - 設定したいタグのグループを指定します。
現在の実装では GPS_INFO_TAG のみが指定可能です。tagID - 設定したいタグのタグ番号を指定します。value - 設定したいタグの値を指定します。
配列の長さは、
そのタグの「カウント」の数と一致していなければなりません。
引数で指定したタグを削除するには null を指定します。
IllegalArgumentException -
指定されたタグが UNDEFINED 型でない場合に発生します。
IllegalArgumentException - 引数 value の長さが、指定されたタグの「カウント」
の数と一致していない場合に発生します。
public byte[] getUndefinedTag(int tagGroup,
int tagID)
tagGroup - 値を取得したいタグのグループを指定します。
現在の実装では GPS_INFO_TAG のみが指定可能です。tagID - 値を取得したいタグのタグ番号を指定します。
IllegalArgumentException -
指定されたタグが UNDEFINED 型でない場合に発生します。
public java.util.Enumeration enumerateTags()
このオブジェクトに格納されている全ての Exif タグを列挙します。
サポートされているタグであれば、
取得のみ可能か、取得・設定が可能かにかかわらず、
有効な値が設定されているタグは全て返されます。
戻り値として返される Enumeration の中には
ExifData.TagInfo クラスのインスタンスが格納されています。
戻り値の Enumeration を取得した後に、
格納されている Exif タグに変更・削除があった場合には、
その変更は即座に Enumeration にも反映されます。
追加があった場合も同様ですが、
その場合に Enumeration のどの部分に追加されるかは機種依存です。
なお、同期は取られていません。
Enumeration
の操作とこのオブジェクトの操作を並行に実施する時には、
明示的に同期を取る必要があります。
ExifData.TagInfo インスタンスとしてアクセスできます。public Location toLocation()
この Exif 属性にもとづいた位置情報オブジェクトを生成します。 このメソッドが呼び出される度に、 新しい Location オブジェクトを生成して返します。
このオブジェクトには、 少なくとも下記の情報が設定されていなければなりません。 これらの情報のうち 1 つでも欠けているものが有る場合には null が返されます。
生成される Location オブジェクト内の各情報は、 このオブジェクトの下記情報に従って設定されています。
緯度:経度:測地系:測位時刻:高度:Location.ALTITUDE_UNKNOWN が設定されます。水平方向の精度:Location.ACCURACY_UNKNOWN が設定されます。
仮に GPSDOP タグが設定されていても、その内容は無視されます。
public void update(Location location)
指定された位置情報を、この Exif 属性に反映させます。
引数に指定された位置情報の、 緯度、経度、高度、測地系、測位日時にもとづいて、 下記のタグが更新(存在していない場合は追加)されます。
高度に Location.ALTITUDE_UNKNOWN が設定されている場合は、
GPSAltitude、GPSAltitudeRef の2つのタグが消去されます。
また、水平方向の精度の情報は無視されます。
この Exif 属性中の GPSDOP タグ(タグ番号: 11)が変更されることもありません。
location - この Exif 属性に反映させたい位置情報を指定します。
NullPointerException - 引数 location に null が指定された場合に発生します。