com.docomostar.opt.device
クラス CameraFinder

Object
  上位を拡張 com.docomostar.opt.device.CameraFinder

public class CameraFinder
extends Object

カメラファインダ制御機能を提供するクラスです。 カメラ機能、コード認識機能および動作認識機能と同じカメラデバイスを使用します。

はじめに、カメラファインダ制御機能の用語を定義します。

カメラファインダデータ(ファインダデータ)
カメラデバイスからの出力をリアルタイムにディスプレイへ映しだすデータです。
カメラファインダ表示面(ファインダ表示面)
カレントフレームよりも一階層奥にあるカメラファインダデータを描画する面です。

次に、カメラファインダ制御機能の状態を定義します。

状態 説明
START カメラデバイス起動中であり、ファインダ表示面にファインダデータが描画されている状態
STOP カメラデバイス停止中であり、ファインダ表示面が未描画である状態

getCameraFinder(int) メソッドによるインスタンス生成時のカメラファインダ制御機能の初期状態は、 STOP 状態です。

start() メソッドを呼び出しにより、 ネイティブ側で必要なカメラのデバイスリソース獲得および初期化が行われ、 カメラファインダ制御機能は START 状態に遷移します。

START 状態においては以下の振る舞いをします。

stop() メソッドを呼び出しにより、カメラファインダ制御機能は STOP 状態に遷移します。 また、START 状態で Star アプリがサスペンドした場合も、STOP 状態に遷移します。

STOP 状態においてのみ以下の設定が可能です。 START 状態で設定を行った場合は設定自体が無視されます。

カメラファインダ制御機能の設定が、 Camera オブジェクトまたは CodeReader オブジェクトが保持する設定状態及びデータに対して、 影響を与えることはありません。 カメラデバイスを利用するネイティブ機能にも影響を与えることもありません。 また、Camera 機能または CodeReader 機能の設定はこのクラスのオブジェクトの設定に影響を与えません。

カメラファインダ制御機能が START 状態であっても、 Camera 機能を起動し撮影した場合、 Camera オブジェクトから撮影画像を取り出せることを保証します。 同様に、CodeReader 機能でコード認識を行った場合も、 CodeReader オブジェクトからコード認識結果を取り出せることを保証します。

ネイティブのカメラ機能またはネイティブのコード認識機能が起動している状態で、 マルチタスクにより Star アプリに処理を移しても、 カメラファインダ制御機能を利用することはできません。 また、カメラファインダ制御機能においては、複数のカメラデバイスを同時に起動する事はできません。 このような場合は start() を呼び出した時に例外が発生します。

ネイティブのカメラ機能またはネイティブのコード認識機能が停止している状態においては、 カメラファインダ制御機能を利用することができます。 ネイティブのカメラ機能で撮影したデータを保存せずに、 マルチタスクにより Star アプリに処理が移った場合もカメラファインダ制御機能を利用することができます。 その場合、再びネイティブのカメラ機能に戻ることでデータを保存可能ことができます。 ネイティブのコード認識機能の読み込みでデータ保存していない場合も同様です。

カメラファインダ機能は、 GestureReader 機能または RawImageCapture 機能と同時に起動することはできません。 これらの機能を起動中に start() を呼び出すと、 例外 DeviceException(BUSY_RESOURCE) が発生します。

導入されたバージョン:
Star-1.5

コンストラクタの概要
protected CameraFinder()
          アプリケーションが直接このコンストラクタを呼び出して オブジェクトを生成することはできません。
 
メソッドの概要
 int[] getAvailableFocusModes()
           端末で設定できるフォーカスの種類のリストを取得します。
 int[][] getAvailableViewFinderSizes()
           設定可能なカメラファインダのサイズを取得します。
static CameraFinder getCameraFinder(int id)
           CameraFinder オブジェクトを取得します。
 int getFocusMode()
           フォーカスの設定状態を取得します。
 int getTransparentColor()
           この端末に設定されているカメラファインダ機能使用時の透過色を取得します。
 float[] getViewAngleSize(int width, int height)
          カメラファインダのサイズに対する画角を取得します。
 int[] getViewFinderArea()
           カメラファインダの表示領域の設定状態を取得します。
 void setFocusMode(int mode)
          フォーカスを設定します。
 void setViewFinderArea(int width, int height, int sx, int sy)
           カメラファインダの表示領域を設定します。
 void start()
           カメラデバイスを起動して START 状態にします。
 void stop()
           カメラデバイスを停止して STOP 状態にします。
 
クラス Object から継承されたメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

CameraFinder

protected CameraFinder()
アプリケーションが直接このコンストラクタを呼び出して オブジェクトを生成することはできません。

メソッドの詳細

getCameraFinder

public static CameraFinder getCameraFinder(int id)

CameraFinder オブジェクトを取得します。

カメラIDに対してこのメソッドが初めて呼ばれた場合はオブジェクトを生成して返します。 以後、同じカメラ ID に対しては、常に同じオブジェクトへの参照を返します。

Star アプリから制御可能なカメラデバイスの台数、及びカメラ ID とカメラデバイスの対応関係は機種依存です。

Star アプリから制御可能なカメラデバイスのうち、カメラファインダ機能をサポートしないカメラ ID が存在することがあります。 このカメラ ID を指定した場合、例外 UnsupportedOperationException が発生します。

パラメータ:
id - カメラ ID を指定します。カメラIDについては Camera.getCamera(int) メソッドを参照してください。
戻り値:
CameraFinder オブジェクトを返します。
例外:
com.docomostar.lang.UnsupportedOperationException -
引数 id に、カメラファインダ機能をサポートしていないカメラ ID が指定された場合に発生します。
IllegalArgumentException -
引数 id に負の値が指定された場合、または Star アプリから制御可能なカメラデバイスの台数以上の値が指定された場合に発生します。
com.docomostar.device.DeviceException -
(NO_RESOURCES)
カメラデバイスを確保できない場合に発生します。

getAvailableFocusModes

public int[] getAvailableFocusModes()

端末で設定できるフォーカスの種類のリストを取得します。

リストの値は、Camera クラスで定義されているフォーカスの種類の定数になります。

フォーカス切替が未サポートである場合には、このメソッドは Camera.FOCUS_NORMAL_MODE を返します。

フォーカス切替がハードウェアによる機構である場合には、このメソッドは Camera.FOCUS_HARDWARE_SWITCH を返します。この場合、Star アプリからフォーカス制御をすることはできません。

リストの取得は START/STOP 状態に関わらず可能です。

戻り値:
端末で設定できるフォーカスの種類をリストで返します。

setFocusMode

public void setFocusMode(int mode)
フォーカスを設定します。

getAvailableFocusModes() で取得したリストから任意の値を設定します。

引数 mode に指定する値は、Camera クラスで定義されているフォーカスの種類の定数になります。 getAvailableFocusModes() で取得したリストにない値を指定した場合には例外が発生します。

フォーカス切替がハードウェアによる機構である場合には、引数 mode に Camera.FOCUS_HARDWARE_SWITCH が指定されても何も行わずに無視されます。

START 状態時にこのメソッドが呼び出された場合、設定は行われずに無視されます。

パラメータ:
mode - フォーカスの種類の値を指定します。
例外:
IllegalArgumentException -
引数 mode に不正な値が指定された場合に発生します。

getFocusMode

public int getFocusMode()

フォーカスの設定状態を取得します。

取得した値は、Camera クラスで定義されているフォーカスの種類の定数になります。

最後に setFocusMode(int) で設定した値を返します。 一度も setFocusMode(int) を呼び出していない状態でこのメソッドを呼び出した場合に、 どのような値が取得されるかは機種依存です。

フォーカス切り替えが未サポートである場合には、フォーカスの設定状態として Camera.FOCUS_NORMAL_MODE を 返します。

フォーカス切り替えがハードウェアによる機構である場合には、このメソッドは Camera.FOCUS_HARDWARE_SWITCH を返します。この場合、Star アプリからフォーカス制御することはできません。

フォーカス設定状態の取得は START/STOP 状態に関わらず可能です。

戻り値:
フォーカスの設定状態を返します。

getAvailableViewFinderSizes

public int[][] getAvailableViewFinderSizes()

設定可能なカメラファインダのサイズを取得します。戻り値は、幅、高さの順でピクセル数が指定される二次元配列です。 例えば、240×320、240×400の2つのサイズが設定可能な場合、戻り値の内容は次のようになります。

{{240, 320}, {240, 400}}

このメソッドは、縦画面と横画面の区別無くサポートしているカメラファインダのサイズを返します。 そのため縦画面時(横画面時)のみの使用を想定しているサイズを、横画面時(縦画面時)に設定することができない場合があります。

設定可能なカメラファインダのサイズの取得は START/STOP 状態に関わらず可能です。

戻り値:
設定可能なカメラファインダサイズを二次元配列で返します。返される配列は、このオブジェクトが内部で 保持している配列のコピーです。

setViewFinderArea

public void setViewFinderArea(int width,
                              int height,
                              int sx,
                              int sy)

カメラファインダの表示領域を設定します。 カメラファインダの表示領域として、矩形領域のサイズと左上座標を指定します。

引数 width、height に指定する値は、getAvailableViewFinderSizes() で取得できる幅、高さの組になります。 これ以外の値を指定した場合は例外が発生します。

引数 sx、sy に指定した値は、Graphics.setOrigin(int, int)で設定されたオフセット値の影響を受けません。 引数 sx、sy には座標原点 (0, 0) を基準とした座標を指定します。

カメラファインダの表示領域が ADF の DrawArea キーに設定されている Star アプリの描画領域に収まらないようなサイズおよび左上座標を指定した場合、 例外が発生します。

START 状態時にこのメソッドが呼び出された場合、設定は行われずに無視されます。

パラメータ:
width - 表示領域のサイズの幅を指定します。
height - 表示領域のサイズの高さを指定します。
sx - 表示領域の左上の X 座標を指定します。
sy - 表示領域の左上の Y 座標を指定します。
例外:
IllegalArgumentException -
引数 width, height に設定可能ではないカメラファインダのサイズを指定した場合に発生します。
IllegalArgumentException -
引数に指定した表示領域が表示面に収まらない場合に発生します。

getViewFinderArea

public int[] getViewFinderArea()

カメラファインダの表示領域の設定状態を取得します。戻り値は幅、高さ、左上の X 座標、左上の Y 座標の順で値が格納された配列です。

最後に setViewFinderArea(int, int, int, int) で設定した値を返します。 一度も setViewFinderArea(int, int, int, int) を呼び出していない状態でこのメソッドを呼び出した場合は、 デフォルト値を返します。 カメラファインダの表示領域の幅、高さのデフォルト値は機種依存ですが、 左上の X 座標、左上の Y 座標のデフォルト値は座標(0, 0)です。

カメラファインダのサイズの設定状態の取得は START/STOP 状態に関わらず可能です。

戻り値:
設定されているカメラファインダの表示領域の幅、高さ、左上の X 座標、左上の Y 座標を返します。

getViewAngleSize

public float[] getViewAngleSize(int width,
                                int height)
カメラファインダのサイズに対する画角を取得します。

引数 width、height に指定する値は、getAvailableViewFinderSizes() で取得できる幅、高さの組になります。 これ以外の値を指定した場合は例外が発生します。

画角の取得は、START/STOP 状態に関わらず可能です。

パラメータ:
width - カメラファインダのサイズの幅を指定します。
height - カメラファインダのサイズの高さを指定します。
戻り値:
指定したカメラファインダのサイズに対する画角を、毎回新しい配列オブジェクトで返します。 戻り値の配列の第 0 要素には水平方向の画角、第 1 要素には垂直方向の画角が格納されています。 画角の単位は「度(degree)」です。
例外:
IllegalArgumentException -
引数 width, height に設定可能ではないカメラファインダのサイズを指定した場合に発生します。

getTransparentColor

public int getTransparentColor()

この端末に設定されているカメラファインダ機能使用時の透過色を取得します。

透過色の RGB 値は機種依存です。 このメソッドは、 RGB 値に対応するカラーを表す整数値を返します。

戻り値:
この端末に設定されている透過色を表す整数値を返します。 返される値は機種依存です。 負の値が返される可能性もあります。

start

public void start()

カメラデバイスを起動して START 状態にします。

このメソッドを実行すると、ネイティブのカメラデバイスリソースを獲得し、 設定されているフォーカスの種類に応じたカメラファインダの画像をカメラファインダの表示領域に表示します。

サスペンド発生時、STOP状態になるため、レジューム時に撮影を継続するにはこのメソッドを再度呼び出す必要があります。

START状態で呼び出された場合、後発の呼び出しは無視されます。

例外:
com.docomostar.device.DeviceException -
(BUSY_RESOURCE)
カメラデバイスが使用中により START 状態にできない場合に発生します。
com.docomostar.device.DeviceException -
(NO_RESOURCES)
リソース不足により START 状態にできない場合に発生します。
com.docomostar.device.DeviceException -
(INTERRUPTED)
Suspended 状態に遷移した場合に発生します。
com.docomostar.device.DeviceException -
(RACE_CONDITION)
以下のいずれかの状態でこのメソッドを呼び出した場合に発生します。
  • 音声通話中
  • テレビ電話通話中
com.docomostar.device.DeviceException -
(RACE_CONDITION)
音再生をするネイティブアプリの優先設定がONの状態で、 バックグラウンドで音再生が可能な機能(ネイティブのミュージックプレイヤー、ミュージックチャネル再生プレイヤー、デジタルテレビアプリケーション)実行中にこのメソッドを呼び出した場合に発生します。
SecurityException -
ロック機能などのネイティブ独自のセキュリティ設定によりSTART状態にできない場合に発生します。
com.docomostar.device.DeviceException -
(UNDEFINED)
上記以外の理由によりSTART状態にできない場合に発生します。

stop

public void stop()

カメラデバイスを停止して STOP 状態にします。

このメソッドを実行すると、起動しているカメラデバイスの停止とリソースの開放を行います。 処理が完了するまでこのメソッドはブロックされます。

再度カメラデバイスを起動するには、start()を呼び出す必要があります。

STOP 状態で呼び出された場合、後発の呼び出しは無視されます。



NTT DOCOMO,INC.

本製品または文書は著作権法により保護されており、その使用、複製、再頒布および逆コンパイルを制限するライセンスのもとにおいて頒布されます。NTTドコモ(その他に許諾者がある場合は当該許諾者も含めて)の書面による事前の許可なく、本製品および関連する文書のいかなる部分も、いかなる方法によっても複製することが禁じられます。フォントを含む第三者のソフトウェアは、著作権法により保護されており、その提供者からライセンスを受けているものです。

Sun、Sun Microsystems、Java、J2MEおよびJ2SEは、米国およびその他の国における米国 Sun Microsystems,Inc.の商標または登録商標です。サンのロゴマークは、米国 Sun Microsystems, Inc.の登録商標です。

FeliCaは、ソニー株式会社が開発した非接触ICカードの技術方式です。FeliCaは、ソニー株式会社の登録商標です。

「iモード」、「iアプリ/アイアプリ」、「i-αppli」ロゴ、「DoJa」はNTTドコモの商標または登録商標です。

その他記載された会社名、製品名などは該当する各社の商標または登録商標です。