android – 在BLE的connectGatt中哪个正确的autoConnect标志?

android – 在BLE的connectGatt中哪个正确的autoConnect标志?,第1张

概述我的目标是在蓝牙低功耗设备和手机之间建立自动连接.我按照示例代码找到了该行 // We want to directly connect to the device, so we are setting the autoConnect parameter to false.mBluetoothGatt = device.connectGatt(this, false, mGattCallback 我的目标是在蓝牙低功耗设备和手机之间建立自动连接.我按照示例代码找到了该行
// We want to directly connect to the device,so we are setting the autoConnect parameter to false.mBluetoothGatt = device.connectGatt(this,false,mGattCallback);

上面的代码表示虚假用于自动连接.但是,我在here发现了API,它说

BluetoothGatt connectGatt(Context context,boolean autoConnect,BluetoothGattCallback callback,int transport)@H_419_8@ Connect to GATT Server hosted by this device.

我还尝试了两个标志:真和假,只有真的是工作.我使用的是版本> = 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;}
解决方法 “直接连接”与“自动连接”相反,因此如果将autoConnect参数设置为false,则会获得“直接连接”.请注意,执行“mBluetoothGatt.connect()”也将使用自动连接.

请注意0​​7000,这是一个影响旧版AndroID的错误,可能会使您的自动连接成为直接连接.这可以用反射来解决.

直接和自动连接之间存在一些未记录的差异:

直接连接是30秒超时的连接尝试.当直接连接正在进行时,它将暂停所有当前的自动连接.如果已经存在直接连接挂起,则最后一次直接连接将不会立即执行,而是排队并在上一次完成时启动.

使用自动连接,您可以同时拥有多个待处理的连接,并且它们永远不会超时(直到明确中止或蓝牙关闭之前).

如果通过自动连接建立连接,AndroID将在断开连接时自动尝试重新连接到远程设备,直到您手动调用disconnect()或close().通过直接连接建立连接后,不会尝试重新连接到远程设备.

直接连接具有不同的扫描间隔和扫描窗口,其占空比高于自动连接,这意味着它将专用更多的无线电时间来监听远程设备的可连接广告,即连接将更快地建立.

总结

以上是内存溢出为你收集整理的android – 在BLE的connectGatt中哪个正确的autoConnect标志?全部内容,希望文章能够帮你解决android – 在BLE的connectGatt中哪个正确的autoConnect标志?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1138850.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存