com.nttdocomo.device.felica
インタフェース OnlineListener

すべてのスーパーインタフェース:
EventListener

public interface OnlineListener
extends EventListener
 [iアプリオプションAPI]

FeliCa 機能のオンライン処理に関するイベントのリスナを定義します。

導入されたバージョン:
DoJa-3.0 (506iC)、DoJa-3.5 (900iC)

フィールドの概要
static int TYPE_INTERRUPTED_ERROR
          音声・テレビ電話・PTT 呼発着信やサスペンドなどにより、 処理が中断されたことを表す終了タイプです。
static int TYPE_UNEXPECTED_ERROR
          予期せぬエラーが発生したことを表すフラグです。
 
メソッドの概要
 byte[] deviceOperationRequest(int deviceID, String param, byte[] data)
          DeviceOperationRequest イベントが発生した時に呼ばれます。
 void onlineError(int type, String message)
          オンライン処理が異常終了した時に呼ばれます。
 void onlineFinished(int status)
           オンライン処理が正常終了した時に呼ばれます。
 

フィールドの詳細

TYPE_UNEXPECTED_ERROR

public static final int TYPE_UNEXPECTED_ERROR
予期せぬエラーが発生したことを表すフラグです。 (=0x8000)

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

TYPE_INTERRUPTED_ERROR

public static final int TYPE_INTERRUPTED_ERROR
音声・テレビ電話・PTT 呼発着信やサスペンドなどにより、 処理が中断されたことを表す終了タイプです。 (= 0x8001)

関連項目:
定数フィールド値
メソッドの詳細

deviceOperationRequest

public byte[] deviceOperationRequest(int deviceID,
                                     String param,
                                     byte[] data)
DeviceOperationRequest イベントが発生した時に呼ばれます。

このメソッドが正常にリターンした場合、 サーバサイドには、このメソッドの戻り値と共に、 この処理結果が「成功」であったことが通知されます。 そうでない場合(例外がスローされた場合)、 サーバサイドには、この処理結果が「失敗」であったことが通知されます。

パラメータ:
deviceID - デバイスIDを示します。
param - パラメータを示します。
data - データを示します。
戻り値:
このイベントの処理結果を返します。 指定できるデータの配列長は 216- 17 バイトまでで、 216- 17 バイトを越える部分は無視されます。 nullが指定された場合は、 配列長0のデータが指定された場合と同等の扱いとします。 指定できるデータの配列長は、以下によっても制限されます。 このような場合、サーバサイドにはエラーが通知されます。
  • TCAP メッセージ列の全体サイズが、 TCAP ヘッダの Length に指定できる最大値 ( 216-1 バイト) を超える場合
  • TCAP パケット列の全体サイズが、HTTP 通信で送信可能なデータサイズを超える場合

onlineError

public void onlineError(int type,
                        String message)
オンライン処理が異常終了した時に呼ばれます。 このメソッドに渡される引数の意味は以下の通りです。
異常終了の原因終了タイプ詳細メッセージ
オンライン処理中に InterruptedIOException 発生
  • HTTP通信中に音声・テレビ電話・PTT 呼発着信以外によりサスペンドした場合
  • FeliCaカードアクセス中に音声・テレビ電話・PTT 呼発着信以外によりサスペンドした場合
TYPE_INTERRUPTED_ERROR 発生した例外の Throwable.getMessage() の値
オンライン処理中に OnlineFelica.stop()、または Felica.close() を呼び出した場合 TYPE_INTERRUPTED_ERROR Interrupted by user
オンライン処理中に 強制的にFelica.close() が呼ばれた場合
  • 音声・テレビ電話・PTT 呼発着信によりサスペンドした場合
  • 音声・テレビ電話・PTT 呼発着信以外によりサスペンドし、 サスペンド中に音声・テレビ電話・PTT 呼発着信があった場合
  • 待ち受け実行時に活性化状態から非活性化状態に遷移した場合
  • ネイティブのセキュリティ設定により FeliCa 機能がロックされた場合
TYPE_INTERRUPTED_ERROR なし(null)
オンライン処理中に ConnectionException 発生 発生した例外の ConnectionException.getStatus() の値 発生した例外の Throwable.getMessage() の値
オンライン処理中にその他の例外発生 TYPE_UNEXPECTED_ERROR 発生した例外の Throwable.toString() の値
オンライン処理中に例外発生以外のエラー発生 (TCAP エラーなど) TYPE_UNEXPECTED_ERROR エラーに対応したメッセージ

このインタフェースに定義されている終了タイプ定数は、 全て下位16ビット目が立っています。したがって、 引数 type と 0x8000 とのビット論理積を取ることによって、 ConnectionException が発生したか否かを判別することが出来る点に注意してください。

このメソッドが呼ばれる直前に、オンライン処理のために確保されていたリソースが解放されます。 また、カードがリセットされ、 サーバサイドから変更されたタイムアウト値とリトライ数、 及び追加されたデバイスリストがクリアされます。 カードがリセットされると、PINの解除情報もクリアされます。

パラメータ:
type - 上記終了タイプが渡されます。
message - 上記詳細メッセージが渡されます。

onlineFinished

public void onlineFinished(int status)

オンライン処理が正常終了した時に呼ばれます。

このメソッドが呼ばれる直前に、オンライン処理のために確保されていたリソースが解放されます。 また、カードがリセットされ、 サーバサイドから変更されたタイムアウト値とリトライ数、 及び追加されたデバイスリストがクリアされます。 カードがリセットされると、PINの解除情報もクリアされます。

パラメータ:
status - サーバサイドの終了コードが渡されます。
関連項目:
onlineError(int, String), OnlineFelica.stop()