com.nttdocomo.device
クラス CodeReader

Object
  拡張com.nttdocomo.device.CodeReader

public class CodeReader
extends Object

コード認識機能を定義します。 携帯電話のネイティブのコード認識機能を呼び出してバーコードや二次元コードの読み取りを行ったり、 OCR 機能を使ったりすることができます。

コード認識機能は、カメラ機能と同じカメラデバイスを使用します。 そのため、同じカメラIDを持つCameraオブジェクトとCodeReaderオブジェクトは互いに状態に影響を与えます。 カメラ機能を用いて撮影を行った後にコード認識を行った場合は、 Cameraオブジェクトから撮影画像を取り出せる保証はありません。 同様に、コード認識を行った後にカメラ機能を用いて撮影を行った場合は、 CodeReaderオブジェクトからコード認識の結果を取り出せる保証はありません。

導入されたバージョン:
DoJa-3.5 (900i)
関連項目:
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
 

フィールドの詳細

CODE_AUTO

public static final int CODE_AUTO [iアプリオプションAPI]

コード種別の一つで、自動でコード種別の識別を行うことを表します(=0)。

関連項目:
定数フィールド値

CODE_JAN8

public static final int CODE_JAN8

コード種別の一つで、JAN8 規格のコードを表します(=1)。

コード認識に成功した場合、 getResultType() メソッドは常に TYPE_NUMBER を返します。 また、getBytes() メソッドは、 数字の0〜9に対してそれぞれ0x30〜0x39を格納した長さ8のバイト配列を返します。

関連項目:
定数フィールド値

CODE_JAN13

public static final int CODE_JAN13

コード種別の一つで、JAN13 規格のコードを表します(=2)。

コード認識に成功した場合、 getResultType() メソッドは常に TYPE_NUMBER を返します。 また、getBytes() メソッドは、 数字の0〜9に対してそれぞれ0x30〜0x39を格納した長さ13のバイト配列を返します。

関連項目:
定数フィールド値

CODE_QR

public static final int CODE_QR

コード種別の一つで、QRコードを表します(=3)。

コード認識に成功した場合、 getResultType() メソッドはQRコードに含まれるモードの組み合わせによって以下の表の値を返します。

数字英数字漢字バイナリメソッドの戻り値
ありなしなしなし TYPE_NUMBER
あり/なしありなしなし TYPE_ASCII
あり/なしあり/なしありなし TYPE_STRING
あり/なしあり/なしあり/なしあり TYPE_BINARY
ただし、QRコードのサポートされていないバージョンであった場合は TYPE_UNKNOWN を返します。

また、getBytes() メソッドは、 数字モードの文字については0〜9に対してそれぞれ0x30〜0x39を、 英数字モードの文字についてはそれぞれの文字に対応するASCIIコードを、 漢字モードの文字についてはそれぞれの文字のShift-JISコード(2バイト)を、 バイナリモードのデータについてはデータのそのままの値を格納したバイト配列を返します。

関連項目:
定数フィールド値

CODE_OCR

public static final int CODE_OCR [iアプリオプションAPI]

コード種別の一つで、OCR によって文字認識を行うことを表します(=4)。

関連項目:
定数フィールド値

CODE_MICRO_QR

public static final int CODE_MICRO_QR [iアプリオプションAPI]

コード種別の一つで、マイクロ QR コード を表します(=6)。

コード認識に成功した場合、 getResultType() メソッドと getBytes() メソッドの振る舞いは、 CODE_QR と同じです。
端末によっては、 このコード種別による認識をサポートしていない場合があります。

導入されたバージョン:
DoJa-4.1 (902iS)
関連項目:
定数フィールド値

CODE_NW7

public static final int CODE_NW7 [iアプリオプションAPI]
コード種別の一つで、 NW-7 コードを表します(=7)。

コード認識に成功した場合、 getResultType() メソッドは、 常に TYPE_ASCII を返します。 また、getBytes() メソッドは、 それぞれの文字に対応する ASCII コードを格納したバイト配列を返します。

文字ASCIIコード
数字0〜90x30〜0x39
特殊記号-0x2d
$0x24
:0x3a
/0x2f
.0x2e
+0x2b
スタート/ストップキャラクタA〜D0x41〜0x44

チェックデジットは無しとみなします。

認識を行うコードの種別に CODE_AUTO を指定した場合、このコードが自動識別されるかどうかは機種依存です。

端末によっては、このコード種別による認識をサポートしていない場合があります。

導入されたバージョン:
DoJa-4.1 (902iS)
関連項目:
setCode(int), 定数フィールド値

CODE_39

public static final int CODE_39 [iアプリオプションAPI]
コード種別の一つで、 CODE-39 を表します(=8)。

コード認識に成功した場合、 getResultType() メソッドは、 常に TYPE_ASCII を返します。 また、getBytes() メソッドは、 それぞれの文字に対応する ASCII コードを格納したバイト配列を返します。

文字ASCIIコード
英数字0〜9, A〜Z0x30〜0x39, 0x41〜0x5a
特殊記号-0x2d
.0x2e
スペース0x20
$0x24
/0x2f
+0x2b
%0x25
スタート/ストップキャラクタ*0x2a

Full ASCII ではない、基本的な CODE-39 です。 チェックデジットは無しとみなします。

認識を行うコードの種別に CODE_AUTO を指定した場合、このコードが自動識別されるかどうかは機種依存です。

端末によっては、このコード種別による認識をサポートしていない場合があります。

導入されたバージョン:
DoJa-4.1 (902iS)
関連項目:
setCode(int), 定数フィールド値

CODE_UNKNOWN

public static final int CODE_UNKNOWN

コード種別の一つで、コード種別が不明であることを表します(=-1)。
このコード種別を setCode(int) メソッドに指定することはできません。 コード認識に失敗した場合(何かしらのコードであることも認識できない場合)や、 コード認識機能が中断した場合に getResultCode() メソッドから返されます。

コード認識の結果、コード種別が不明だった場合、 getResultType() メソッドは常に TYPE_UNKNOWN を返します。

関連項目:
定数フィールド値

CODE_UNSUPPORTED

public static final int CODE_UNSUPPORTED [iアプリオプションAPI]

コード種別の一つで、サポートされていないコードであることを表します(=-2)。
このコード種別を setCode(int) メソッドに指定することはできません。 何かしらのコードであることは認識できるけど、 そのコードからデータを取り出すことはできない場合に getResultCode() メソッドから返されます。

コード認識の結果、サポートされていないコードだった場合、 getResultType() メソッドは常に TYPE_UNKNOWN を返します。

関連項目:
定数フィールド値

TYPE_BINARY

public static final int TYPE_BINARY
コードの内容の型の一つで、バイナリであることを表します(=0)。 エンコードとしてバイナリであるコードを読み取った場合に返されます。

関連項目:
定数フィールド値

TYPE_NUMBER

public static final int TYPE_NUMBER
コードの内容の型の一つで、数字のみの文字列であることを表します(=1)。 エンコードとして数字のみであるコードを読み取った場合に返されます。

関連項目:
定数フィールド値

TYPE_ASCII

public static final int TYPE_ASCII
コードの内容の型の一つで、ASCII 文字列であることを表します(=2)。 エンコードとして ASCII 文字(英数字と記号)のみであるコードを読み取った場合に返されます。

関連項目:
定数フィールド値

TYPE_STRING

public static final int TYPE_STRING
コードの内容の型の一つで、文字列であることを表します(=3)。 エンコードとして TYPE_NUMBERTYPE_ASCII ではない文字(例えば漢字など)を含むコードを読み取った場合に返されます。

関連項目:
定数フィールド値

TYPE_UNKNOWN

public static final int TYPE_UNKNOWN
コードの内容の型の一つで、型が不明であることを表します(=-1)。

関連項目:
定数フィールド値
コンストラクタの詳細

CodeReader

protected CodeReader()
アプリケーションが直接このクラスのインスタンスを生成することはできません。

メソッドの詳細

getCodeReader

public static CodeReader getCodeReader(int id)

コード認識オブジェクトを取得します。

カメラIDに対してこのメソッドが初めて呼ばれた場合はオブジェクトを生成して返します。 生成直後のコード認識オブジェクトは認識結果を保持していない状態になっています。 以後、同じカメラIDに対しては、常に同じオブジェクトへの参照を返します。

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

getAvailableCodes

public int[] getAvailableCodes()
認識可能なコードの種別を取得します。

戻り値:
認識可能なコード種別の配列を返します。

setCode

public void setCode(int code)
認識を行うコードの種別を設定します。 デフォルトのコード種別は機種依存です。

パラメータ:
code - 認識を行うコードの種別を設定します。
例外:
IllegalArgumentException - 引数 code に不正な値が指定された場合に発生します。 CODE_UNKNOWNCODE_UNSUPPORTED が指定された場合も含まれます。
IllegalArgumentException - 引数codeにサポートしていないコード種別が指定された場合に発生します。

read

public void read()
          throws InterruptedOperationException

カメラデバイスを使用してコード認識を行います。 このメソッドが呼び出されると、Javaアプリケーションはサスペンドし、 ネイティブアプリケーションのコード認識機能が起動します。 コード認識機能が終了するとJavaアプリケーションはレジュームします。

ユーザの操作によりコード認識機能が終了すると、 Javaアプリケーションがレジュームした時点でこのメソッドから復帰します。 ユーザがコード認識機能で認識行った場合は、コード認識オブジェクト内にその認識結果が保持されます。 ユーザがコード認識を中断したり、あるいはコード認識に失敗した場合は、 コード認識オブジェクト内にコード認識結果は保持されません。 なお、本メソッドを呼び出す前に保持していたコード認識結果は、 本メソッドを呼び出した時点ですべて破棄されます。

コード認識機能が競合などで中断した場合には、 Javaアプリケーションがレジューム復帰した時点で例外が発生します。 このとき、コード認識結果は保持されません。

例外:
IllegalStateException - 待ち受け実行時の非活性化状態で呼び出された場合に発生します。
SecurityException - [DoJa-4.0 (901i) 以降] ロック機能などのネイティブ独自のセキュリティ設定により、 コード認識機能が起動できない場合に発生します。
DeviceException - マルチタスク機能によってバックグラウンドで動作しているネイティブ機能が未保存のデータを保持している場合に、 ユーザ確認においてユーザが当該データの破棄を拒否すると発生します(BUSY_RESOURCE)。
InterruptedOperationException - コード認識機能が中断した場合に発生します。
DeviceException - リソース不足によりコード認識に失敗した場合に発生します(NO_RESOURCES)。
DeviceException - リソース不足以外の理由によりコード認識に失敗した場合に発生します(UNDEFINED)。

getResultCode

public int getResultCode()
認識を行ったコードの種別を取得します。 特定のコード種別を指定して認識を行った場合も、 CODE_AUTO を指定して自動でコード種別の識別を行った場合も、 認識に成功したコード種別を返します。

戻り値:
認識を行ったコードの種別を返します。 コード認識を行う前に呼び出された場合やコード認識に失敗した場合、コード認識機能が中断した場合は CODE_UNKNOWN を返します。

getResultType

public int getResultType()
認識を行ったコードの内容の型を取得します。 コード認識結果をアプリケーションで解析する際のヒントとして使用することができます。

戻り値:
認識を行ったコードの内容の型を返します。 コード認識を行う前に呼び出された場合やコード認識に失敗した場合、コード認識機能が中断した場合は TYPE_UNKNOWN を返します。

getBytes

public byte[] getBytes()
コード認識結果をバイト列として取得します。 このメソッドは、認識を行ったコードの内容の型にかかわらず、 コード認識の結果の生データをそのままバイト列として返します。

戻り値:
コード認識の結果をバイト列として返します。 コード認識を行う前に呼び出された場合やコード認識に失敗した場合、コード認識機能が中断した場合は null を返します。

getString

public String getString()
コード認識結果を文字列として取得します。 このメソッドは、認識を行ったコードの内容の型にかかわらず、 コード認識の結果のバイト列をプラットフォームのデフォルトの文字エンコーディングを使って文字列に変換したものを返します。 すなわち、new String(getBytes()) したのと同じ結果が返ります。

戻り値:
コード認識の結果を文字列として返します。 コード認識を行う前に呼び出された場合やコード認識に失敗した場合、コード認識機能が中断した場合は null を返します。

getAvailableFocusModes

public int[] getAvailableFocusModes()
端末で設定できるフォーカスの種類のリストを取得します。

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

接写モードの切り替えをサポートしていない実装では、 長さ 1 の配列が返されます。 その配列に格納されている値は以下の通りです。

戻り値:
端末で設定できるフォーカスの種類をリストで返します。
導入されたバージョン:
DoJa-5.0 (903i)

setFocusMode

public void setFocusMode(int mode) [iアプリオプションAPI]
フォーカスを設定します。

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

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

Camera クラスで定義されていない定数、 または、リストにない値を指定した場合には例外が発生します。

パラメータ:
mode - フォーカスの種類の値を指定します。
例外:
IllegalArgumentException - 引数 mode に不正な値が指定された場合に発生します。
導入されたバージョン:
DoJa-5.0 (903i)

getFocusMode

public int getFocusMode()
フォーカスの設定状態を取得します。

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

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

接写モードの切り替えをサポートしていない実装では、 以下の値が返されます。

戻り値:
フォーカスの設定状態を返します。
導入されたバージョン:
DoJa-5.0 (903i)