Android BLE APIが奇妙に思えるかもしれません。私がする必要があるのは、BLEデバイスに接続することです。一時的に接続が切断されている間は一時的に切断されますが、ユーザーが新しい何かをしたいときは、再接続します。最初に接続するにはAndroid BLE(Bluetooth Low Energy)接続/切断/再接続
は、私が呼ん:
Gatt1 = Device.ConnectGatt (Android.App.Application.Context, false, GattCallback);
その後、私は私が
Gatt1.Disconnect();
呼び出す私の一時的な切断を行うことを考えていると私は再接続したいときに、私はConnectGattを呼び出します()再び、私に新しいBluetoothGattオブジェクト与える:私はGatt1.Disconnect(と呼ばれてきましたので、一度
Gatt2 = Device.ConnectGatt (Android.App.Application.Context, false, GattCallback);
)を、私がすべきちょうどGatt1を捨てる?私が再接続すると新しいBluetoothGattオブジェクトが得られるので、これはもう役に立ちませんか? Gatt1をもう使用していないことをAPIに伝えるために関数を呼び出す必要がありますか?私は最終的に私が完全に終わりだことを決めた
(いいえ、私は実際に私がちょうど起こって2つの異なるオブジェクトがありますを示すために、それらの名前を使用している、二つの変数、Gatt1とGatt2を持っていないでしょう)
このBLEデバイスでは、私は再接続を予定していないので、Gatt.Close()(右)に電話する必要があります
多分このコードはもっと似ていますか?
BluetoothDevice Device = stuff();
BluetoothGatt Gatt = null;
if (connecting)
Gatt = Device.ConnectGatt(...);
else if (disconnecting temporarily)
Gatt.Disconnect();
else if (reconnecting after a temporary disconnection)
{
Gatt = null; // Yes? Do I need to specifically Dispose() this previous object?
Gatt = Device.ConnectGatt(...);
}
else if (disconnecting permanently)
{
Gatt.Close();
Gatt = null;
}
(再び、いや、私はこのような関数を記述しないだろう、それだけで、様々なBluetoothGattオブジェクトの寿命を説明するためにだ)
一度に1つのデバイスに接続する場合、なぜ2つのgattオブジェクトが必要か質問できますか? – Avinash4551
私はしません。最初はBluetoothGatt.Connect()関数が表示されませんでしたので、BluetoothDevice.ConnectGatt()を2回目に呼び出して2番目のBluetoothGattオブジェクトを生成する必要があると考えました。私は今それが必要でないことを見る。 –