如何正确断开与Marshmallow设备上的BLE应用程序的连接?

时间:2017-09-25 11:47:32

标签: java android bluetooth bluetooth-lowenergy

我最近正在开发一个BLE应用程序来控制LED灯。我能够从Android 7.1.1(Nougat)连接并发送字符串到BLE设备。我也可以多次连接和断开连接,但是当我从运行Android 6(marshmallow)的设备断开连接时,BLE设备要么正在睡眠,要么没有正确断开连接。 我运行以下代码断开连接: -

private void Disconnect() {
    Toast.makeText(mBTLE_Service, "Service Disconnected", Toast.LENGTH_SHORT).show();

    mBTLE_Service.disconnect();
    mBTLE_Service.close();

    finish();
}

我正在从服务运行以下代码以断开连接并关闭。

/**
 * Disconnects an existing connection or cancel a pending connection. The disconnection result
 * is reported asynchronously through the
 * {@code BluetoothGattCallback#onConnectionStateChange(android.bluetooth.BluetoothGatt, int, int)}
 * callback.
 */
public void disconnect() {
    if (mBluetoothAdapter == null || mBluetoothGatt == null) {
        Log.w(TAG, "BluetoothAdapter not initialized");
        return;
    }

    mBluetoothGatt.disconnect();
}

/**
 * After using a given BLE device, the app must call this method to ensure resources are
 * released properly.
 */
public void close() {

    if (mBluetoothGatt == null) {
        return;
    }

    mBluetoothGatt.close();
    mBluetoothGatt = null;
} 

此外,我的应用程序无法在Android 5以下的任何设备上运行,在Android 5上我能够连接但无法将任何数据发送到BLE设备。我正在使用BM70_BLE设备。 我需要对我的应用进行哪些​​更改才能为Android 4.4以上的所有设备提供支持?与BLE Scanner一样,它可以连接并向Android 4.4以上的设备发送数据。用于BLE扫描仪的链接https://play.google.com/store/apps/details?id=com.macdom.ble.blescanner&hl=en

感谢任何帮助或支持。谢谢。

0 个答案:

没有答案