私の目標は、Bluetooth Low Energy デバイスと電話を自動接続することです。サンプルコードをたどったところ、次の行が見つかりました
// We want to directly connect to the device, so we are setting the autoConnect parameter to false.
mBluetoothGatt = device.connectGatt(this, false, mGattCallback);
上記のコードは、自動接続をfalse
使用することを意味します。しかし、私はここでAPIを見つけました、それは言った
BluetoothGatt connectGatt(Context context, boolean autoConnect, BluetoothGattCallback callback, int transport) このデバイスがホストする GATT サーバーに接続します。
そして、私は 2 つのフラグも試しました: true
and false
, and のみがtrue
機能します。バージョン >= Android 5.0 を使用しています。コードと API の間に矛盾がありますか? どのフラグが正しいですか? 自動接続したいのですが何か注意が必要ですか?
これは私のコードです
public boolean connect(final String address) {
if (mBluetoothAdapter == null || address == null) {
Log.w(TAG, "BluetoothAdapter not initialized or unspecified address.");
return false;
}
// Previously connected device. Try to reconnect.
if (mBluetoothDeviceAddress != null && address.equals(mBluetoothDeviceAddress)
&& mBluetoothGatt != null) {
Log.d(TAG, "Trying to use an existing mBluetoothGatt for connection.");
if (mBluetoothGatt.connect()) {
mConnectionState = STATE_CONNECTING;
return true;
} else {
return false;
}
}
final BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);
if (device == null) {
Log.w(TAG, "Device not found. Unable to connect.");
return false;
}
// We want to directly connect to the device, so we are setting the autoConnect
// parameter to false.
mBluetoothGatt = device.connectGatt(this, true, mGattCallback);
Log.d(TAG, "Trying to create a new connection.");
mBluetoothDeviceAddress = address;
mConnectionState = STATE_CONNECTING;
return true;
}