com.nttdocomo.device
クラス Bluetooth

Object
  拡張com.nttdocomo.device.Bluetooth

public class Bluetooth
extends Object
 [iアプリオプションAPI]

端末のBluetooth 機能を表すクラスを定義します。

このクラスでは、端末の Bluetooth 機能を呼び出して、 外部機器の検索、機器選択、機器登録、各種設定などを行います。 外部機器が選択されると、その外部機器に対応したRemoteDeviceクラスのオブジェクトを取得します。

導入されたバージョン:
DoJa-5.0 (903i)
関連項目:
RemoteDevice, BTStateListener, BTConnection, SPPConnection

フィールドの概要
static int SPP
          シリアルポートプロファイルを表します(=0)。
 
メソッドの概要
 int getDiscoveredDevice()
          ネイティブの接続機器リストに保持されている外部機器の数を取得します。
 int getInquiryTimeout()
          Inquiryの実行時間を取得します。
static Bluetooth getInstance()
          端末の Bluetooth 機能を表すインスタンスを取得します。
 boolean isConnectable(int type)
          引数に指定したプロファイルで外部機器とiアプリが接続可能であるか否かを取得します。
 boolean isDetachmentMode()
          機器登録処理後に接続(ACLリンク)を切断するかどうかを返します。
 RemoteDevice scan()
          外部機器からの接続要求を待ち、 ユーザが外部機器との接続を選択した場合にRemoteDeviceオブジェクトが生成されます。
 RemoteDevice searchAndSelectDevice()
          外部機器探索を行い、ユーザによる外部機器の選択を行います。
 RemoteDevice selectDevice()
          ユーザによる外部機器の選択を行います。
 void setDetachmentMode(boolean flag)
          機器登録処理後に接続(ACLリンク)を切断するかどうかを設定します。
 void setInquiryTimeout(int time)
          Inquiryの実行時間を設定します。
 void turnOff()
          Bluetooth電源をオフにします。
 
クラス Object から継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

SPP

public static final int SPP
シリアルポートプロファイルを表します(=0)。

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

getInstance

public static Bluetooth getInstance()
端末の Bluetooth 機能を表すインスタンスを取得します。

パーミッションとしてBluetooth APIの利用が許可されているトラステッドiアプリのみ、 このメソッドを呼び出すことができます。

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

戻り値:
Bluetooth 機能を表すインスタンスを返します。
例外:
UnsupportedOperationException - 端末が Bluetooth 機能をサポートしていない場合に発生します。
SecurityException - パーミッションとしてFeliCaオンライン機能の利用、FeliCaオフライン機能の利用、FeliCaリーダ/ライタ機能の利用の、いずれかが許可されている、または、ADFのFeliCaCPIDキー、ADFのFeliCaPINキーのいずれかが指定されている場合に発生します。

scan

public RemoteDevice scan()
                  throws InterruptedOperationException
外部機器からの接続要求を待ち、 ユーザが外部機器との接続を選択した場合にRemoteDeviceオブジェクトが生成されます。

メソッドを呼び出すとiアプリはサスペンドし、 ネイティブでInquiry ScanとPage Scanが同時に実行されます。 外部機器が未登録である場合には、接続選択後、 ペアリング処理や登録処理がネイティブ側で行われます。 処理終了後、iアプリはレジュームします。

戻り値:
RemoteDeviceオブジェクトを返します。 ユーザが処理をキャンセルした場合には null を返します。
例外:
IllegalStateException - 待ち受け実行時の非活性化状態で呼び出された場合に発生します。
SecurityException - ロック機能などのネイティブ独自のセキュリティ設定により、Bluetoothが利用できない場合に発生します。
DeviceException - FeliCaがオープンされている場合に発生します(RACE_CONDITION)。
DeviceException - サーバー側としてアドホック通信中(Propose Ad-hoc Modeコマンドを受信してからアドホック通信終了まで)に発生します(RACE_CONDITION)。
BluetoothException -
Inquiry Scan または Page Scan がタイムアウトである場合に発生します(TIMEOUT)。 また、以下の場合も含みます。
  • パスキー入力待ちで何も入力されない場合のタイムアウト
BluetoothException - 端末がセルフモードの場合に発生します(SELF_MODE)。
BluetoothException - 外部機器との接続でリンクキーが不一致である場合(パスキー誤りを含む)に発生します(LINKKEY_ERROR)。
BluetoothException - その他の原因で、接続に失敗した場合に発生します(UNDEFINED)。
InterruptedOperationException - 競合条件などにより、ネイティブ機能が異常終了した場合に発生します。

selectDevice

public RemoteDevice selectDevice()
                          throws InterruptedOperationException
ユーザによる外部機器の選択を行います。

このメソッドを呼び出すとiアプリはサスペンドし、 ネイティブに処理が切り替わります。 機器登録済みの外部機器の一覧が表示され、 ユーザが一覧から機器を選択することでRemoteDeviceオブジェクトが生成されます。 なお、一覧に選択できる機器がなかった場合には、ユーザのキャンセルでiアプリに戻ります。

このメソッドを呼び出すことにより得られた RemoteDevice オブジェクトを dispose しない限り、 複数回このメソッドの呼び出しにより同一機器が選択されても、 同一の有効な RemoteDevice オブジェクトへの参照が返されます。 得られた RemoteDevice オブジェクトを dispose してから、 このメソッドの呼び出しにより同一機器が選択されると、 新しく有効な RemoteDevice オブジェクトが生成されて返されます。

戻り値:
RemoteDeviceオブジェクトを返します。 ユーザが機器選択をキャンセルした場合には null を返します。
例外:
IllegalStateException - 待ち受け実行時の非活性化状態で呼び出された場合に発生します。
SecurityException - ロック機能などのネイティブ独自のセキュリティ設定により、Bluetoothが利用できない場合に発生します。
DeviceException - FeliCa がオープンされている場合に発生します(RACE_CONDITION)。
DeviceException - サーバー側としてアドホック通信中(Propose Ad-hoc Modeコマンドを受信してからアドホック通信終了まで)に発生します(RACE_CONDITION)。
BluetoothException - 端末がセルフモードの場合に発生します(SELF_MODE)。
InterruptedOperationException - 競合条件などにより、ネイティブ機能が異常終了した場合に発生します。

searchAndSelectDevice

public RemoteDevice searchAndSelectDevice()
                                   throws InterruptedOperationException
外部機器探索を行い、ユーザによる外部機器の選択を行います。

このメソッドを呼び出すとiアプリはサスペンドし、 ネイティブに処理が切り替わります。 ネイティブで DeviceDiscovery処理が実行され周辺の外部機器情報を取得します。 その後、接続可能な外部機器の一覧が表示され、 ユーザが一覧から機器を選択することでRemoteDeviceオブジェクトが生成されます。

このメソッドを呼び出すことにより得られた RemoteDevice オブジェクトを dispose しない限り、 複数回このメソッドの呼び出しにより同一機器が選択されても、 同一の有効な RemoteDevice オブジェクトへの参照が返されます。 得られた RemoteDevice オブジェクトを dispose してから、 このメソッドの呼び出しにより同一機器が選択されると、 新しく有効な RemoteDevice オブジェクトが生成されて返されます。

外部機器が未登録の場合には、選択後、ペアリングや登録処理がネイティブで行われます。 ネイティブ機能が終了後、iアプリはレジュームします。

外部機器探索と機器登録を行わず、登録済み機器を選択する場合には、selectDevice()を利用します。

戻り値:
RemoteDeviceオブジェクトを返します。 ユーザが周辺機器探索や機器選択をキャンセルした場合には null を返します。
例外:
IllegalStateException - 待ち受け実行時の非活性化状態で呼び出された場合に発生します。
SecurityException - ロック機能などのネイティブ独自のセキュリティ設定により、Bluetoothが利用できない場合に発生します。
DeviceException - FeliCa がオープンされている場合に発生します(RACE_CONDITION)。
DeviceException - サーバー側としてアドホック通信中(Propose Ad-hoc Modeコマンドを受信してからアドホック通信終了まで)に発生します(RACE_CONDITION)。
BluetoothException -
Inquiry または Page がタイムアウトである場合に発生します(TIMEOUT)。 また、以下の場合も含みます。
  • パスキー入力待ちで何も入力されない場合のタイムアウト
BluetoothException - 端末がセルフモードの場合に発生します(SELF_MODE)。
BluetoothException - 外部機器との接続でリンクキーが不一致である場合(パスキー誤りを含む)に発生します(LINKKEY_ERROR)。
BluetoothException - その他の原因で、接続に失敗した場合に発生します(UNDEFINED)。
InterruptedOperationException - 競合条件などにより、ネイティブ機能が異常終了した場合に発生します。

getDiscoveredDevice

public int getDiscoveredDevice()
ネイティブの接続機器リストに保持されている外部機器の数を取得します。

このメソッドでは登録済みの外部機器の数を返します。

戻り値:
ネイティブの接続機器リストに保持されている登録済みの外部機器の数を返します。

setInquiryTimeout

public void setInquiryTimeout(int time)
Inquiryの実行時間を設定します。

周辺機器探索処理において、何秒間 Inquiry を行うかを設定します。 設定可能な探索時間は 1 〜 20 秒までです。設定した値はiアプリ終了後も有効です。

ミニマムスペック:
ミニマムスペックでは 5 秒、10 秒をサポートしています。 なお、1.28秒の倍数が設定値の近似値として実行されます。

パラメータ:
time - 探索時間(秒)を指定します。
例外:
IllegalArgumentException - 引数 time に 0 以下の値、または 21 以上の値が指定された場合に発生します。

getInquiryTimeout

public int getInquiryTimeout()
Inquiryの実行時間を取得します。

周辺機器探索処理における Inquiry の実行時間を取得します。setInquiryTimeout()で値を設定していない場合は、ネイティブで設定されている値を返します。

戻り値:
探索時間(秒)を返します。

isConnectable

public boolean isConnectable(int type)
引数に指定したプロファイルで外部機器とiアプリが接続可能であるか否かを取得します。

接続の可否は、iアプリが接続しようとしているものとは異なる外部機器と端末がすでにBluetoothで接続している場合、 どのプロファイルを利用して接続しているかに依存します。

なお、このメソッドで接続可能を取得した場合でも、その後に端末の接続状態が変わると、 RemoteDevice.accept(int)RemoteDevice.connect(int) で、 例外 DeviceException(BUSY_RESOURCE) が発生することがあります。

パラメータ:
type - プロファイルを指定します。
戻り値:
引数で指定したプロファイルで接続可能な場合にはtrueを、接続不可能な場合にはfalseを返します。

turnOff

public void turnOff()
Bluetooth電源をオフにします。

isConnectable() が false を返したときに、このメソッドを呼ぶことで、 i アプリを終了することなくネイティブで使われている Bluetooth 接続を切断することができます。 なお、Bluetooth の電源オンは、通信や接続時にネイティブ側で自動的に行われます。

例外:
BluetoothException - 通信中などにより、電源をオフできない場合に発生します(UNDEFINED)。

setDetachmentMode

public void setDetachmentMode(boolean flag)
機器登録処理後に接続(ACLリンク)を切断するかどうかを設定します。

searchAndSelectDevice()/scan() に対して、 機器登録処理後に接続を切断するか継続するかを操作します。 接続を切断する場合は 引数 flag に true、 接続を継続する場合は 引数 flag に false を指定します。

このオブジェクトが生成された直後では、デフォルト値として true が設定されます。

パラメータ:
flag - 切断する場合は true、継続する場合は false を指定します。
導入されたバージョン:
DoJa-5.1 (906i)

isDetachment。梧凾髢薙r蜿門セ励@縺セ縺吶