com.docomostar.io
クラス IrClientObexConnection

Object
  拡張com.docomostar.io.IrClientObexConnection
すべての実装インタフェース:
ClientObexConnection, javax.microedition.io.Connection, javax.microedition.io.InputConnection, ObexConnection, javax.microedition.io.OutputConnection, javax.microedition.io.StreamConnection

public class IrClientObexConnection
extends Object
implements ClientObexConnection

OBEX クライアントとして赤外線通信を行う場合の接続を定義します。

IrDA 通信のコード例については ClientObexConnection のクラス説明を参照してください。

端末によっては、IrDA 通信に加え IrSimple 片方向通信と IrSimple 双方向通信をサポートします。 IrSimple 通信機能では、connect(int) によって通信モードを指定できます。 接続確立後、getCommMode()を呼び出すことで通信モードを確認することができます。 なお、IrDA 通信のみサポートしているサーバに対して、IrSimple 双方向通信を試みた場合には、 IrSimple 通信機能の IrDA 通信互換により IrDA 通信で接続が確立されます。

IrSimple 片方向通信と IrSimple 双方向通信においては、 オペレーションとして PUT のみをサポートしています。

以下に IrSimple 片方向通信を行う場合のコード例を示します。
 try {
     IrClientObexConnection coc;
     coc = (IrClientObexConnection)Connector.open("obex:/irclient");
     coc.connect(ClientObexConnection.COMM_MODE_IRSIMPLE_UNILATERALLY); // この時点でデバイスに通電して
                                                   // CONNECT オペレーションを発行します。
                                                   // Server側からの接続要求応答がない為、
                                                   // 接続要求応答の受信が完了するまで待ちません。
     while (true) { // 複数のオペレーションを行う場合のループ。
                    // ループの中で PUT のみ指定できます。
         coc.setOperation(ObexConnection.PUT);
         coc.setName("foo");
         OutputStream out = coc.openOutputStream();
         // 書き込み処理
         out.close();
         coc.sendRequest(); // この時点で PUT オペレーションを送信します。
                            // Server側からのレスポンスがない為、レスポンスは受け取りません。
         int response = coc.getResponseCode(); // 必ずレスポンスコード「ObexConnection.SUCCESS」が返ります。
     }
     coc.close(); // IrSimple の場合、この時点で DISCONNECT オペレーションを
                  // 発行して、デバイスをオフにします。
 } catch (IOException e) {
 }
 
以下に IrSimple 双方向通信を行う場合のコード例を示します。
 try {
     IrClientObexConnection coc;
     coc = (IrClientObexConnection)Connector.open("obex:/irclient");
     coc.connect(ClientObexConnection.COMM_MODE_IRSIMPLE_INTERACTIVE); // この時点でデバイスに通電して
                                                  //  CONNECT オペレーションを発行します。
                                                  // Server側からの接続要求応答の受信が完了するまで待ちます。
     while (true) { // 複数のオペレーションを行う場合のループ。
                    // ループの中で PUT のみ指定できます。
         coc.setOperation(ObexConnection.PUT);
         coc.setName("foo");
         OutputStream out = coc.openOutputStream();
         // 書き込み処理
         out.close();
         coc.sendRequest(); // この時点で PUT オペレーションを送信して、レスポンスを受け取ります。
         int response = coc.getResponseCode();
     }
     coc.close(); // IrSimple の場合、この時点で DISCONNECT オペレーションを
                  // 発行して、デバイスをオフにします。
 } catch (IOException e) {
 }
 

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

フィールドの概要
 
インタフェース com.docomostar.io.ObexConnection から継承したフィールド
ACCEPTED, BAD_GATEWAY, BAD_REQUEST, COMM_MODE_IRDA, COMM_MODE_IRSIMPLE_INTERACTIVE, COMM_MODE_IRSIMPLE_UNILATERALLY, CONFLICT, CONTINUE, CREATED, DATABASE_FULL, DATABASE_LOCKED, DISCONNECT, FORBIDDEN, GATEWAY_TIMEOUT, GET, GONE, HTTP_VERSION_NOT_SUPPORTED, INTERNAL_SERVER_ERROR, LENGTH_REQUIRED, METHOD_NOT_ALLOWED, MOVED_PERMANENTLY, MOVED_TEMPORARILY, MULTIPLE_CHOICES, NO_CONTENT, NON_AUTHORITATIVE_INFORMATION, NOT_ACCEPTABLE, NOT_FOUND, NOT_IMPLEMENTED, NOT_MODIFIED, PARTIAL_CONTENT, PAYMENT_REQUIRED, PRECONDITION_FAILED, PROXY_AUTHENTICATION_REQUIRED, PUT, REQUEST_ENTITY_TOO_LARGE, REQUEST_TIME_OUT, REQUEST_URL_TOO_LARGE, RESET_CONTENT, SEE_OTHER, SERVICE_UNAVAILABLE, SUCCESS, UNAUTHORIZED, UNSUPPORTED_MEDIA_TYPE, USE_PROXY
 
メソッドの概要
 void close()
          CLDC の仕様に従ってこの接続をクローズする処理を実装します。
 void connect()
          接続を確立します。
 void connect(int mode) [iアプリオプションAPI]
          通信モードに対応した接続を確立します。
 int getCommMode() [iアプリオプションAPI]
          接続確立後の通信モードを取得します。
 int getContentLength()
          コンテンツの長さを取得します。
 String getName()
          NAME ヘッダを取得します。
 int getResponseCode()
           レスポンスコードを取得します。
 long getTime()
          TIME ヘッダを取得します。
 String getType()
          TYPE ヘッダを取得します。
 java.io.DataInputStream openDataInputStream()
          CLDC の仕様に従って DataInputStream オブジェクトを返す処理を実装します。
 java.io.DataOutputStream openDataOutputStream()
          CLDC の仕様に従って DataOutputStream オブジェクトを返す処理を実装します。
 java.io.InputStream openInputStream()
          CLDC の仕様に従って InputStream オブジェクトを返す処理を実装します。
 java.io.OutputStream openOutputStream()
          CLDC の仕様に従って OutputStream オブジェクトを返す処理を実装します。
 void sendRequest()
          リクエストを送信して、レスポンスの受信を完了するまで待ちます。
 void setName(String name)
          NAME ヘッダを設定します。
 void setOperation(int operation)
          オペレーションコードを設定します。
 void setTime(long time)
          TIME ヘッダを設定します。
 void setType(String type)
          TYPE ヘッダを設定します。
 
クラス Object から継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

メソッドの詳細

connect

public void connect()
             throws java.io.IOException
接続を確立します。

定義:
インタフェース ClientObexConnection 内の connect
例外:
RuntimeException -
呼び出してはならない状態の時に呼び出された場合に発生します。
ConnectionException -
(BUSY_RESOURCE)
既に接続要求発行中の別スレッドが存在するか、別オブジェクトにより既に通信リソースが使用されている場合に発生します。
ConnectionException -
(SELF_MODE)
端末がセルフモードの場合に発生します。
java.io.InterruptedIOException -
別スレッドからの中断要求発生により、 通信が中断された場合に発生します。
IllegalStateException -
音声・テレビ電話通話中に呼び出された場合に発生します。
ConnectionException -
(BUSY_RESOURCE)
赤外線リモコンが通信中である場合に発生します。
ConnectionException -
(BUSY_RESOURCE)
アドホック通信中の場合に発生します。
ConnectionException -
(BUSY_RESOURCE)
バックグラウンドで動作しているネイティブ機能が、 パケット通信中の場合に発生します。 以下の場合にも発生します。
  • ミュージックチャネルダウンローダが起動中の場合
  • ソフトウェア更新のダウンロード通知機能が起動中の場合
  • [Star-1.1 まで] PTT 呼通信中、PTT 設定中の場合
ConnectionException -
(BUSY_RESOURCE)
Bluetooth と赤外線通信の同時使用をサポートしていない端末において、 Bluetooth 通信中の場合に発生します。
ConnectionException -
(TIMEOUT)
ネイティブのOBEXレイヤでタイムアウトが発生した場合に発生します。
ConnectionException -
(USER_ABORT)
ユーザが通信開始を許可しなかった場合や、 ユーザ操作により通信を中断された場合に発生します。
java.io.IOException -
対向機器からDisconnect要求が通知された場合に発生します。
java.io.IOException -
IrDA コネクションが確立できない(できなくなった)場合に発生します。
java.io.IOException -
I/O エラーが発生した場合に発生します。

connect

public void connect(int mode)
             throws java.io.IOException [iアプリオプションAPI]
通信モードに対応した接続を確立します。

以下の通信モードを指定できます。

ObexConnection.COMM_MODE_IRDA を指定した場合は、IrDA 通信を試みます。 connect() の振る舞いと同じになります。

ObexConnection.COMM_MODE_IRSIMPLE_INTERACTIVE を指定した場合は、IrSimple 双方向通信を試みます。 サーバが IrDA 通信のみサポートしている場合、 IrSimple 通信機能の IrDA 通信互換により IrDA 通信で接続が確立されます。

ObexConnection.COMM_MODE_IRSIMPLE_UNILATERALLY を指定した場合は、IrSimple 片方向通信を試みます。 IrSimple 片方向通信においては、サーバからレスポンスが送信されないため、 サーバとの接続の確立を待たずにこのメソッドから戻ります。 このため、このメソッドで ConnectionException(TIMEOUT) が発生することはありません。

接続確立後、getCommMode() を呼び出すことで実際の通信モードを確認することができます。

端末によっては、IrSimple 通信機能をサポートしていない場合があります。 その場合には、例外 UnsupportedOperationException が発生します。

パラメータ:
mode - 通信モード
例外:
UnsupportedOperationException -
端末が IrSimple 通信機能をサポートしていない場合に発生します。
IllegalArgumentException -
引数 mode に不正な値が指定された場合に発生します。
RuntimeException -
呼び出してはならない状態の時に呼び出された場合に発生します。
ConnectionException -
(BUSY_RESOURCE)
既に接続要求発行中の別スレッドが存在するか、別オブジェクトにより既に通信リソースが使用されている場合に発生します。
ConnectionException -
(SELF_MODE)
端末がセルフモードの場合に発生します。
java.io.InterruptedIOException -
別スレッドからの中断要求発生により、 通信が中断された場合に発生します。
IllegalStateException -
音声・テレビ電話通話中に呼び出された場合に発生します。
ConnectionException -
(BUSY_RESOURCE)
赤外線リモコンが通信中である場合に発生します。
ConnectionException -
(BUSY_RESOURCE)
アドホック通信中の場合に発生します。
ConnectionException -
(BUSY_RESOURCE)
バックグラウンドで動作しているネイティブ機能が、 パケット通信中の場合に発生します。 以下の場合にも発生します。
  • ミュージックチャネルダウンローダが起動中の場合
  • ソフトウェア更新のダウンロード通知機能が起動中の場合
  • [Star-1.1 まで] PTT 呼通信中、PTT 設定中の場合
ConnectionException -
(BUSY_RESOURCE)
Bluetooth と赤外線通信の同時使用をサポートしていない端末において、 Bluetooth 通信中の場合に発生します。
ConnectionException -
(TIMEOUT)
ネイティブのOBEXレイヤでタイムアウトが発生した場合に発生します。 ただし、IrSimple 通信の場合には発生しません。
ConnectionException -
(USER_ABORT)
ユーザが通信開始を許可しなかった場合や、 ユーザ操作により通信を中断された場合に発生します。
java.io.IOException -
対向機器からDisconnect要求が通知された場合に発生します。 ただし、IrSimple 片方向通信の場合には発生しません。
java.io.IOException -
IrDA コネクションが確立できない(できなくなった)場合に発生します。 IrSimple コネクションも含みます。 ただし、IrSimple 片方向通信の場合には発生しません。
java.io.IOException -
I/O エラーが発生した場合に発生します。

getCommMode

public int getCommMode() [iアプリオプションAPI]
接続確立後の通信モードを取得します。 このメソッドにより、 ObexConnection.COMM_MODE_IRDA、 ObexConnection.COMM_MODE_IRSIMPLE_UNILATERALLY、 ObexConnection.COMM_MODE_IRSIMPLE_INTERACTIVE のいずれかの通信モードが取得できます。 接続が確立されていない場合は RuntimeException またはそのサブクラスの例外が発生します。

端末によっては、IrSimple 通信機能をサポートしていない場合があります。 その場合には、例外 UnsupportedOperationException が発生します。

戻り値:
通信モードを返します。
例外:
UnsupportedOperationException -
端末が IrSimple 通信機能をサポートしていない場合に発生します。
RuntimeException -
呼び出してはならない状態の時に呼び出された場合に発生します。

getResponseCode

public int getResponseCode()

レスポンスコードを取得します。 直前に実行した sendRequest メソッドにおいて受信した レスポンスのレスポンスコードを返します。

1つのデータを複数のパケットに分割して受信した場合、 一番最後に受信したパケットのレスポンスコードを返します。

IrSimple 片方向通信の場合、戻り値として常に ObexConnection.SUCCESS を返します。 ただし、IrSimple 片方向通信においては、サーバからレスポンスが送信されないため、 ObexConnection.SUCCESS は実際のレスポンスコードではありません。

ミニマムスペックでは、 以下のレスポンスコードについて取得できることが保証されています。

  1. ObexConnection.CONTINUE
  2. ObexConnection.SUCCESS
  3. ObexConnection.NON_AUTHORITATIVE_INFORMATION
  4. ObexConnection.UNAUTHORIZED
  5. ObexConnection.FORBIDDEN
  6. ObexConnection.NOT_FOUND
  7. ObexConnection.REQUEST_TIME_OUT
  8. ObexConnection.CONFLICT
  9. ObexConnection.NOT_IMPLEMENTED
  10. ObexConnection.BAD_REQUEST
  11. ObexConnection.DATABASE_FULL
  12. ObexConnection.DATABASE_LOCKED

定義:
インタフェース ClientObexConnection 内の getResponseCode
戻り値:
レスポンスコードを返します。
例外:
RuntimeException -
呼び出してはならない状態の時に呼び出された場合に発生します。

sendRequest

public void sendRequest()
                 throws java.io.IOException
リクエストを送信して、レスポンスの受信を完了するまで待ちます。 このメソッドを呼び出すとリクエストを送信して、 レスポンスが到着するまでブロックします。 レスポンスを全て受信し終わったらこのメソッドから戻ります。

このメソッドを呼び出すことによって、それより前にこの接続オブジェクトから 取り出した InputStream, DataInputStream, OutputStream, DataOutputStream が無効になります。 次に InputStream, DataInputStream を取り出した時は、 このオペレーションで受信したデータを読み出す入力ストリームを返します。 また、次に OutputStream, DataOutputStream を取り出した時は、 次のオペレーションで送信するデータを書き込む出力ストリームを返します。

IrSimple 片方向通信の場合、リクエストを全て送信し終わったらこのメソッドから戻ります。 IrSimple 片方向通信においては、サーバからレスポンスが送信されないため、 レスポンスの受信を待つことはありません。 このため、このメソッドで ConnectionException(TIMEOUT)、ConnectionException(OBEX_ERROR)が発生することはありません。

定義:
インタフェース ClientObexConnection 内の sendRequest
例外:
RuntimeException -
呼び出してはならない状態の時に呼び出された場合に発生します。
ConnectionException -
(ILLEGAL_STATE)
オペレーションコードがセットされていない場合に発生します。
java.io.InterruptedIOException -
別スレッドからの中断要求発生により、 通信が中断された場合に発生します。
ConnectionException -
(TIMEOUT)
ネイティブのOBEXレイヤでタイムアウトが発生した場合に発生します。 ただし、IrSimple 通信の場合には発生しません。
ConnectionException -
(USER_ABORT)
ユーザ操作により通信を中断された場合や、ユーザ操作により通信を中断された直後に呼び出された場合 に発生します。
java.io.IOException -
対向機器からDisconnect要求が通知された場合に発生します。 ただし、IrSimple 片方向通信の場合には発生しません。
java.io.IOException -
IrDA コネクションが確立できない(できなくなった)場合に発生します。 IrSimple コネクションも含みます。 ただし、IrSimple 片方向通信の場合には発生しません。
java.io.IOException -
I/O エラーが発生した場合に発生します。
ConnectionException -
(OBEX_ERROR)
レスポンスコードが 0x20 番台 (generally ok 系の ステータスコード) 以外のコードだった場合に発生します。 ただし、IrSimple 片方向通信の場合には発生しません。

setOperation

public void setOperation(int operation)
オペレーションコードを設定します。 設定できるオペレーションは "PUT" と "GET" です。

IrSimple 片方向通信と IrSimple 双方向通信で設定できるオペレーションは "PUT" のみです。

定義:
インタフェース ClientObexConnection 内の setOperation
パラメータ:
operation - オペレーションコードを指定します。
例外:
RuntimeException -
呼び出してはならない状態の時に呼び出された場合に発生します。
IllegalArgumentException -
引数 operation にサポートしていないオペレーションコードが指定された場合に発生します。 IrSimple 通信においては、PUT オペレーション以外が指定された場合に発生します。
IllegalArgumentException -
WRITEモードでの接続に対してGETオペレーションが指定された場合やREADモードでの接続に対してPUTオペレーションが指定された場合に発生します。

getContentLength

public int getContentLength()
コンテンツの長さを取得します。 リクエストやレスポンスの BODY ヘッダ内のコンテンツの実際の長さを取得します。
コンテンツの長さが取得可能になる前に呼び出された場合は RuntimeException またはそのサブクラスの例外が発生します。

定義:
インタフェース ObexConnection 内の getContentLength
戻り値:
コンテンツの長さを返します。
例外:
RuntimeException -
呼び出してはならない状態の時に呼び出された場合に発生します。

getName

public String getName()
NAME ヘッダを取得します。
ヘッダが取得可能になる前に呼び出された場合は RuntimeException またはそのサブクラスの例外が発生します。

定義:
インタフェース ObexConnection 内の getName
戻り値:
NAME ヘッダの文字列を返します。 ヘッダが無い場合は、 null を返します。
例外:
RuntimeException -
呼び出してはならない状態の時に呼び出された場合に発生します。

getTime

public long getTime()
TIME ヘッダを取得します。 数値は1970年1月1日(GMT)から数えたミリ秒数です。 リクエストまたはレスポンスが複数パケットから構成され、 複数の TIME ヘッダがある場合は、最初に見つかった TIME ヘッダの値を返します。
ヘッダが取得可能になる前に呼び出された場合は RuntimeException またはそのサブクラスの例外が発生します。

定義:
インタフェース ObexConnection 内の getTime
戻り値:
日付を表す整数値を返します。 ヘッダが無い場合は、値0を返します。
例外:
RuntimeException -
呼び出してはならない状態の時に呼び出された場合に発生します。

getType

public String getType()
TYPE ヘッダを取得します。
ヘッダが取得可能になる前に呼び出された場合は RuntimeException またはそのサブクラスの例外が発生します。

定義:
インタフェース ObexConnection 内の getType
戻り値:
TYPE ヘッダの文字列を返します。 ヘッダが無い場合は、 null を返します。
例外:
RuntimeException -
呼び出してはならない状態の時に呼び出された場合に発生します。

setName

public void setName(String name)
NAME ヘッダを設定します。複数回呼出された場合は、最後に設定された値のみ有効となります。

定義:
インタフェース ObexConnection 内の setName
パラメータ:
name - NAME ヘッダに設定する文字列を指定します。
例外:
RuntimeException -
呼び出してはならない状態の時に呼び出された場合に発生します。
IllegalArgumentException -
引数 name が 規定文字数(63文字)を超えた場合に発生します。

setTime

public void setTime(long time)
TIME ヘッダを設定します。複数回呼出された場合は、最後に設定された値のみ有効となります。 数値は1970年1月1日(GMT)から数えたミリ秒数です。

定義:
インタフェース ObexConnection 内の setTime
パラメータ:
time - 日付を表す整数値を指定します。
例外:
RuntimeException -
呼び出してはならない状態の時に呼び出された場合に発生します。

setType

public void setType(String type)
TYPE ヘッダを設定します。複数回呼出された場合は、最後に設定された値のみ有効となります。

定義:
インタフェース ObexConnection 内の setType
パラメータ:
type - TYPE ヘッダに設定する文字列を指定します。
例外:
RuntimeException -
呼び出してはならない状態の時に呼び出された場合に発生します。
IllegalArgumentException -
引数 type が 規定文字数(63文字)を超えた場合に発生します。

openDataInputStream

public java.io.DataInputStream openDataInputStream()
                                            throws java.io.IOException
CLDC の仕様に従って DataInputStream オブジェクトを返す処理を実装します。

定義:
インタフェース javax.microedition.io.InputConnection 内の openDataInputStream
例外:
RuntimeException -
呼び出してはならない状態の時に呼び出された場合に発生します。
ConnectionException -
(ILLEGAL_STATE)
WRITEモードの接続に対して呼び出された場合に発生します。
ConnectionException -
(USER_ABORT)
ユーザ操作により通信を中断されたことを検知した場合 に発生します。
java.io.IOException -
現在の実装では発生することは有りません。

openInputStream

public java.io.InputStream openInputStream()
                                    throws java.io.IOException
CLDC の仕様に従って InputStream オブジェクトを返す処理を実装します。

定義:
インタフェース javax.microedition.io.InputConnection 内の openInputStream
例外:
RuntimeException -
呼び出してはならない状態の時に呼び出された場合に発生します。
ConnectionException -
(ILLEGAL_STATE)
WRITEモードの接続に対して呼び出された場合に発生します。
ConnectionException -
(USER_ABORT)
ユーザ操作により通信を中断されたことを検知した場合 に発生します。
java.io.IOException -
現在の実装では発生することは有りません。

close

public void close()
           throws java.io.IOException
CLDC の仕様に従ってこの接続をクローズする処理を実装します。

定義:
インタフェース javax.microedition.io.Connection 内の close
例外:
java.io.IOException -
現在の実装では発生することは有りません。

openDataOutputStream

public java.io.DataOutputStream openDataOutputStream()
                                              throws java.io.IOException
CLDC の仕様に従って DataOutputStream オブジェクトを返す処理を実装します。

定義:
インタフェース javax.microedition.io.OutputConnection 内の openDataOutputStream
例外:
RuntimeException -
呼び出してはならない状態の時に呼び出された場合に発生します。
ConnectionException -
(ILLEGAL_STATE)
READモードの接続に対して呼び出された場合に発生します。
ConnectionException -
(USER_ABORT)
ユーザ操作により通信を中断されたことを検知した場合 に発生します。
java.io.IOException -
現在の実装では発生することは有りません。

openOutputStream

public java.io.OutputStream openOutputStream()
                                      throws java.io.IOException
CLDC の仕様に従って OutputStream オブジェクトを返す処理を実装します。

定義:
インタフェース javax.microedition.io.OutputConnection 内の openOutputStream
例外:
RuntimeException -
呼び出してはならない状態の時に呼び出された場合に発生します。
ConnectionException -
(ILLEGAL_STATE)
READモードの接続に対して呼び出された場合に発生します。
ConnectionException -
(USER_ABORT)
ユーザ操作により通信を中断されたことを検知した場合 に発生します。
java.io.IOException -
現在の実装では発生することは有りません。


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ドコモの商標または登録商標です。

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