Android BLE:readCharacteristic无法正常工作

问题描述

我在RaspBerry Pi上运行BLE外围设备,并且正在尝试通过Android与之通信。

目标是读取特征,该特征应该触发外围设备上的过程。

我的代码如下:

public class MainActivity extends AppCompatActivity
{
    static final String PERIPHERAL_NAME = "Gobbledego";
    static final String WIFI_SERVICE_UUID             = "B87CF566-7A73-4347-B711-BB20F8A23D08";
    static final String WIFI_SCAN_CHaraCTERISTIC_UUID = "891FDFB1-3E77-4597-8483-4AB24ADC18CB";

    private BluetoothLeScanner scanner;
    private BluetoothGatt bluetoothGatt;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        scanner = BluetoothAdapter.getDefaultAdapter().getBluetoothLeScanner();
        scanner.startScan(scanCallback);
    }

    private ScanCallback scanCallback = new ScanCallback()
    {
        @Override
        public void onScanResult(int callbackType,ScanResult result)
        {
            super.onScanResult(callbackType,result);

            String name = result.getDevice().getName();
            if (name != null && name.equals(PERIPHERAL_NAME))
            {
                scanner.stopScan(scanCallback);
                bluetoothGatt = result.getDevice().connectGatt(MainActivity.this,false,gattCallback);
            }
        }
    };

    private final BluetoothGattCallback gattCallback = new BluetoothGattCallback()
    {
        @Override
        public void onConnectionStateChange(BluetoothGatt gatt,int status,int newState)
        {
            if (newState == BluetoothProfile.STATE_CONNECTED)
            {
                bluetoothGatt.discoverServices();
            }
        }

        @Override
        public void onServicesdiscovered(BluetoothGatt gatt,int status)
        {
            if (status == BluetoothGatt.GATT_SUCCESS)
            {
                BluetoothGattService service = gatt.getService(UUID.fromString(WIFI_SERVICE_UUID));

                BluetoothGattCharacteristic wifiScanCharacteristic = service.getCharacteristic(UUID.fromString(WIFI_SCAN_CHaraCTERISTIC_UUID));
                bluetoothGatt.readCharacteristic(wifiScanCharacteristic); // returns true
            }
        }
    };

扫描部分和连接部分正在工作。问题是外围设备永远不会确认读取。我知道外围设备还可以,因为我有一个可以按预期工作的基于iOS的解决方案。

我想知道可能是什么问题吗?

编辑:在装有Android 6.0.1的Nexus 5上进行了测试

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...