簡體   English   中英

無法從Android讀取BLE字符

[英]Cannot read BLE Characterstic from Android

請注意,我正在使用Xamarin開發跨平台應用程序。 對於藍牙,我必須開發特定於平台的軟件,因此以下代碼是android庫的一部分,但均使用C#編碼,因為這是xamarin的語言。 即使您不了解C#或Xamarin,也相對容易理解。

我的問題與非常相似,不同之處在於,我可以完全確定自己具有閱讀權限,因為它確實可以在iOS上運行。

我使用BLE心率監測器。 我連接到它,然后設置有關心率特征的通知,然后閱讀它。 在iOS上,此功能完全正常。 從android但是它告訴我我沒有閱讀特征的權限。 這顯然是錯誤的,因為它可以在iOS上運行。 這可能是什么原因? 連接到設備后是否可能需要重新加載權限? 我沒有為此找到功能。

這是我用來連接設備的代碼。

bleGatt = device.ConnectGatt(Android.App.Application.Context, false, new MyGattCallback(this));

然后在連接狀態更改后,我開始服務發現。 handleConnectionSuccess()handleDisconnect()返回到UI,以向用戶顯示進度。

public override void OnConnectionStateChange(BluetoothGatt gatt, 
            [GeneratedEnum] GattStatus status, [GeneratedEnum] ProfileState newState)
{
    switch(newState)
    {
    case ProfileState.Connected:
        reference.handleConnectionSuccess();
        gatt.DiscoverServices();
        break;
    case ProfileState.Disconnected:
        reference.handleDisconnect();
        break;
    }
}

public override void OnServicesDiscovered(BluetoothGatt gatt, [GeneratedEnum] GattStatus status)
{
    if (status == GattStatus.Success) {
        BluetoothGattService service = bleGatt.GetService(UUID.FromString("CDEACB80-5235-4C07-8846-93A37EE6B86D"));
        if (service == null)
            return;
        BluetoothGattCharacteristic characteristic = service.GetCharacteristic(UUID.FromString("CDEACB80-5235-4C07-8846-93A37EE6B86D"));
        bleGatt.SetCharacteristicNotification(characteristic, true);
        bool readable = ((characteristic.Permissions & GattPermission.Read) != 0);
        Debug.WriteLine("Characteristic is readable: " + readable + " Permissions: " + characteristic.Permissions);
    } else 
        Debug.WriteLine("Service Discovery ended with not success status: " + status);
    }
}

在這里,我總是得到輸出: Characteristic is readable: False Permissions: 0稍后在gatt.ReadCharacteristic()返回false,根據android的消息來源,這是因為我沒有讀取權限。 (請參閱所引用的問題

原來,甚至以為我不允許從特征讀取值,而無需調用readCharacteristics()即可自動更新值,而我只需調用getValue()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM