Objectcom.nttdocomo.device.CodeReader
コード認識機能を定義します。
携帯電話のネイティブのコード認識機能を呼び出してバーコードや二次元コードの読み取りを行ったり、
OCR 機能を使ったりすることができます。
コード認識機能は、カメラ機能と同じカメラデバイスを使用します。
そのため、同じカメラIDを持つCameraオブジェクトとCodeReaderオブジェクトは互いに状態に影響を与えます。
カメラ機能を用いて撮影を行った後にコード認識を行った場合は、
Cameraオブジェクトから撮影画像を取り出せる保証はありません。
同様に、コード認識を行った後にカメラ機能を用いて撮影を行った場合は、
CodeReaderオブジェクトからコード認識の結果を取り出せる保証はありません。
Camera| フィールドの概要 | |
static int |
CODE_39 [iアプリオプションAPI]
コード種別の一つで、 CODE-39 を表します(=8)。 |
static int |
CODE_AUTO [iアプリオプションAPI]
コード種別の一つで、自動でコード種別の識別を行うことを表します(=0)。 |
static int |
CODE_JAN13
コード種別の一つで、JAN13 規格のコードを表します(=2)。 |
static int |
CODE_JAN8
コード種別の一つで、JAN8 規格のコードを表します(=1)。 |
static int |
CODE_MICRO_QR [iアプリオプションAPI]
コード種別の一つで、マイクロ QR コード を表します(=6)。 |
static int |
CODE_NW7 [iアプリオプションAPI]
コード種別の一つで、 NW-7 コードを表します(=7)。 |
static int |
CODE_OCR [iアプリオプションAPI]
コード種別の一つで、OCR によって文字認識を行うことを表します(=4)。 |
static int |
CODE_QR
コード種別の一つで、QRコードを表します(=3)。 |
static int |
CODE_UNKNOWN
コード種別の一つで、コード種別が不明であることを表します(=-1)。 |
static int |
CODE_UNSUPPORTED [iアプリオプションAPI]
コード種別の一つで、サポートされていないコードであることを表します(=-2)。 |
static int |
TYPE_ASCII
コードの内容の型の一つで、ASCII 文字列であることを表します(=2)。 |
static int |
TYPE_BINARY
コードの内容の型の一つで、バイナリであることを表します(=0)。 |
static int |
TYPE_NUMBER
コードの内容の型の一つで、数字のみの文字列であることを表します(=1)。 |
static int |
TYPE_STRING
コードの内容の型の一つで、文字列であることを表します(=3)。 |
static int |
TYPE_UNKNOWN
コードの内容の型の一つで、型が不明であることを表します(=-1)。 |
| コンストラクタの概要 | |
protected |
CodeReader()
アプリケーションが直接このクラスのインスタンスを生成することはできません。 |
| メソッドの概要 | |
int[] |
getAvailableCodes()
認識可能なコードの種別を取得します。 |
int[] |
getAvailableFocusModes()
端末で設定できるフォーカスの種類のリストを取得します。 |
byte[] |
getBytes()
コード認識結果をバイト列として取得します。 |
static CodeReader |
getCodeReader(int id)
コード認識オブジェクトを取得します。 |
int |
getFocusMode()
フォーカスの設定状態を取得します。 |
int |
getResultCode()
認識を行ったコードの種別を取得します。 |
int |
getResultType()
認識を行ったコードの内容の型を取得します。 |
String |
getString()
コード認識結果を文字列として取得します。 |
void |
read()
カメラデバイスを使用してコード認識を行います。 |
void |
setCode(int code)
認識を行うコードの種別を設定します。 |
void |
setFocusMode(int mode) [iアプリオプションAPI]
フォーカスを設定します。 |
| クラス Object から継承したメソッド |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| フィールドの詳細 |
public static final int CODE_AUTO [iアプリオプションAPI]
コード種別の一つで、自動でコード種別の識別を行うことを表します(=0)。
public static final int CODE_JAN8
コード種別の一つで、JAN8 規格のコードを表します(=1)。
コード認識に成功した場合、
getResultType() メソッドは常に
TYPE_NUMBER を返します。
また、getBytes() メソッドは、
数字の0〜9に対してそれぞれ0x30〜0x39を格納した長さ8のバイト配列を返します。
public static final int CODE_JAN13
コード種別の一つで、JAN13 規格のコードを表します(=2)。
コード認識に成功した場合、
getResultType() メソッドは常に
TYPE_NUMBER を返します。
また、getBytes() メソッドは、
数字の0〜9に対してそれぞれ0x30〜0x39を格納した長さ13のバイト配列を返します。
public static final int CODE_QR
コード種別の一つで、QRコードを表します(=3)。
コード認識に成功した場合、
getResultType() メソッドはQRコードに含まれるモードの組み合わせによって以下の表の値を返します。
| 数字 | 英数字 | 漢字 | バイナリ | メソッドの戻り値 |
| あり | なし | なし | なし | TYPE_NUMBER |
| あり/なし | あり | なし | なし | TYPE_ASCII |
| あり/なし | あり/なし | あり | なし | TYPE_STRING |
| あり/なし | あり/なし | あり/なし | あり | TYPE_BINARY |
TYPE_UNKNOWN を返します。
また、getBytes() メソッドは、
数字モードの文字については0〜9に対してそれぞれ0x30〜0x39を、
英数字モードの文字についてはそれぞれの文字に対応するASCIIコードを、
漢字モードの文字についてはそれぞれの文字のShift-JISコード(2バイト)を、
バイナリモードのデータについてはデータのそのままの値を格納したバイト配列を返します。
public static final int CODE_OCR [iアプリオプションAPI]
コード種別の一つで、OCR によって文字認識を行うことを表します(=4)。
public static final int CODE_MICRO_QR [iアプリオプションAPI]
コード種別の一つで、マイクロ QR コード を表します(=6)。
コード認識に成功した場合、 getResultType() メソッドと getBytes() メソッドの振る舞いは、
CODE_QR と同じです。
端末によっては、
このコード種別による認識をサポートしていない場合があります。
public static final int CODE_NW7 [iアプリオプションAPI]
コード認識に成功した場合、
getResultType() メソッドは、
常に TYPE_ASCII を返します。
また、getBytes() メソッドは、
それぞれの文字に対応する ASCII コードを格納したバイト配列を返します。
| 文字 | ASCIIコード | |
| 数字 | 0〜9 | 0x30〜0x39 |
| 特殊記号 | - | 0x2d |
| $ | 0x24 | |
| : | 0x3a | |
| / | 0x2f | |
| . | 0x2e | |
| + | 0x2b | |
| スタート/ストップキャラクタ | A〜D | 0x41〜0x44 |
チェックデジットは無しとみなします。
認識を行うコードの種別に
CODE_AUTO
を指定した場合、このコードが自動識別されるかどうかは機種依存です。
端末によっては、このコード種別による認識をサポートしていない場合があります。
setCode(int),
定数フィールド値public static final int CODE_39 [iアプリオプションAPI]
コード認識に成功した場合、
getResultType() メソッドは、
常に TYPE_ASCII を返します。
また、getBytes() メソッドは、
それぞれの文字に対応する ASCII コードを格納したバイト配列を返します。
| 文字 | ASCIIコード | |
| 英数字 | 0〜9, A〜Z | 0x30〜0x39, 0x41〜0x5a |
| 特殊記号 | - | 0x2d |
| . | 0x2e | |
| スペース | 0x20 | |
| $ | 0x24 | |
| / | 0x2f | |
| + | 0x2b | |
| % | 0x25 | |
| スタート/ストップキャラクタ | * | 0x2a |
Full ASCII ではない、基本的な CODE-39 です。 チェックデジットは無しとみなします。
認識を行うコードの種別に
CODE_AUTO
を指定した場合、このコードが自動識別されるかどうかは機種依存です。
端末によっては、このコード種別による認識をサポートしていない場合があります。
setCode(int),
定数フィールド値public static final int CODE_UNKNOWN
コード種別の一つで、コード種別が不明であることを表します(=-1)。
このコード種別を setCode(int) メソッドに指定することはできません。
コード認識に失敗した場合(何かしらのコードであることも認識できない場合)や、
コード認識機能が中断した場合に
getResultCode() メソッドから返されます。
コード認識の結果、コード種別が不明だった場合、
getResultType() メソッドは常に
TYPE_UNKNOWN を返します。
public static final int CODE_UNSUPPORTED [iアプリオプションAPI]
コード種別の一つで、サポートされていないコードであることを表します(=-2)。
このコード種別を setCode(int) メソッドに指定することはできません。
何かしらのコードであることは認識できるけど、
そのコードからデータを取り出すことはできない場合に
getResultCode() メソッドから返されます。
コード認識の結果、サポートされていないコードだった場合、
getResultType() メソッドは常に
TYPE_UNKNOWN を返します。
public static final int TYPE_BINARY
public static final int TYPE_NUMBER
public static final int TYPE_ASCII
public static final int TYPE_STRING
TYPE_NUMBER や TYPE_ASCII ではない文字(例えば漢字など)を含むコードを読み取った場合に返されます。
public static final int TYPE_UNKNOWN
| コンストラクタの詳細 |
protected CodeReader()
| メソッドの詳細 |
public static CodeReader getCodeReader(int id)
コード認識オブジェクトを取得します。
カメラIDに対してこのメソッドが初めて呼ばれた場合はオブジェクトを生成して返します。 生成直後のコード認識オブジェクトは認識結果を保持していない状態になっています。 以後、同じカメラIDに対しては、常に同じオブジェクトへの参照を返します。
id - カメラIDを指定します。
カメラIDについては Camera.getCamera(int)
メソッドを参照してください。
UnsupportedOperationException - 引数 id に、
カメラ機能はサポートしているが、
コード認識機能はサポートしていないようなカメラ
ID が指定された場合に発生します。
IllegalArgumentException - 引数idに負の値が指定された場合、
またはJavaから制御可能なカメラデバイスの台数以上の値が指定された場合に発生します。
DeviceException - カメラデバイスを確保できない場合に発生します(NO_RESOURCES)。
public int[] getAvailableCodes()
public void setCode(int code)
code - 認識を行うコードの種別を設定します。
IllegalArgumentException -
引数 code に不正な値が指定された場合に発生します。
CODE_UNKNOWN や CODE_UNSUPPORTED
が指定された場合も含まれます。
IllegalArgumentException - 引数codeにサポートしていないコード種別が指定された場合に発生します。
public void read()
throws InterruptedOperationException
カメラデバイスを使用してコード認識を行います。 このメソッドが呼び出されると、Javaアプリケーションはサスペンドし、 ネイティブアプリケーションのコード認識機能が起動します。 コード認識機能が終了するとJavaアプリケーションはレジュームします。
ユーザの操作によりコード認識機能が終了すると、 Javaアプリケーションがレジュームした時点でこのメソッドから復帰します。 ユーザがコード認識機能で認識行った場合は、コード認識オブジェクト内にその認識結果が保持されます。 ユーザがコード認識を中断したり、あるいはコード認識に失敗した場合は、 コード認識オブジェクト内にコード認識結果は保持されません。 なお、本メソッドを呼び出す前に保持していたコード認識結果は、 本メソッドを呼び出した時点ですべて破棄されます。
コード認識機能が競合などで中断した場合には、 Javaアプリケーションがレジューム復帰した時点で例外が発生します。 このとき、コード認識結果は保持されません。
IllegalStateException - 待ち受け実行時の非活性化状態で呼び出された場合に発生します。
SecurityException - [DoJa-4.0 (901i) 以降]
ロック機能などのネイティブ独自のセキュリティ設定により、
コード認識機能が起動できない場合に発生します。
DeviceException -
マルチタスク機能によってバックグラウンドで動作しているネイティブ機能が未保存のデータを保持している場合に、
ユーザ確認においてユーザが当該データの破棄を拒否すると発生します(BUSY_RESOURCE)。
InterruptedOperationException - コード認識機能が中断した場合に発生します。
DeviceException - リソース不足によりコード認識に失敗した場合に発生します(NO_RESOURCES)。
DeviceException - リソース不足以外の理由によりコード認識に失敗した場合に発生します(UNDEFINED)。
public int getResultCode()
CODE_AUTO を指定して自動でコード種別の識別を行った場合も、
認識に成功したコード種別を返します。
CODE_UNKNOWN を返します。
public int getResultType()
TYPE_UNKNOWN を返します。
public byte[] getBytes()
public String getString()
new String(getBytes()) したのと同じ結果が返ります。
public int[] getAvailableFocusModes()
リストの値は、
Camera クラスで定義されているフォーカスの種類の定数になります。
接写モードの切り替えをサポートしていない実装では、 長さ 1 の配列が返されます。 その配列に格納されている値は以下の通りです。
Camera.FOCUS_MACRO_MODE
Camera.FOCUS_NORMAL_MODE
public void setFocusMode(int mode) [iアプリオプションAPI]
getAvailableFocusModes()で取得したリストから任意の値を設定します。
指定する値は、
Camera クラスで定義されているフォーカスの種類の定数になります。
Camera クラスで定義されていない定数、
または、リストにない値を指定した場合には例外が発生します。
mode - フォーカスの種類の値を指定します。
IllegalArgumentException - 引数 mode に不正な値が指定された場合に発生します。
public int getFocusMode()
取得した値は、
Camera クラスで定義されているフォーカスの種類の定数になります。
一度も setFocusMode(int) を呼び出していない状態で、
このメソッドを呼び出した場合に、どのような値が取得されるかは機種依存です。
接写モードの切り替えをサポートしていない実装では、 以下の値が返されます。
Camera.FOCUS_MACRO_MODE
Camera.FOCUS_NORMAL_MODE