实际上,我对与“ establishconnection()
”相关的其他问题和相关讨论中的答案感到困惑。由于我开始使用低能耗的BLE设备连接建立应用程序,因此我对应用程序和设备之间的物理通信建立有疑问。在我的程序中,我在读取特征之前调用establishconnection()
。但是在同步之后,我总是在应用程序和设备之间遇到一些连接问题。因此,我需要更深入地检查设备的连接过程。因此,您能否从上述实际上从应用程序建立到BLE设备的物理连接的点上给我一个确切的代码点。
答案 0 :(得分:0)
有几种方法可以确定确切的连接时刻。这可以在几个级别上完成:
通常,在连接到BLE外设时,在logcat
中可以看到特定的线路:
D / BluetoothGatt:onClientConnectionState()-status = 0 clientIf = 6 device = 00:00:00:00:00:00
RxAndroidBle
日志可以设置RxBleLog.setLogLevel(RxBleLog.VERBOSE)
,这将使库内部日志可见。系统通知库已建立连接的那一刻用日志标记:
D / RxBle#BluetoothGatt:onConnectionStateChange newState = 2 status = 0
建立低级别的蓝牙连接后,大多数Android操作系统都会广播信息。要访问它,必须注册BroadcastReceiver
:
Context context = /* your Context */;
IntentFilter intentFilter = new IntentFilter(BluetoothDevice.ACTION_ACL_CONNECTED);
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final BluetoothDevice bluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
Log.d("Connected", "BluetoothDevice[macAddress=" + bluetoothDevice.getAddress() + ']');
}
};
context.registerReceiver(broadcastReceiver, intentFilter);
这将触发以下日志:
D /已连接:BluetoothDevice [macAddress = 00:00:00:00:00:00]