相关疑难解决方法(0)

Android BLE,读写特性

我目前正在开发Android BLE,并遇到Android BLE堆栈的很多问题..

我的开发工具是三星Galaxy J和Android 4.3.

我想知道如何从BLE中读取特征并写入特征(就像我验证我收到的数据,然后我使用BLE发送另一个数据)

我有严重的问题了解Android BLE回调如何工作,我不明白这5个功能......而且手册不清楚,任何人都可以用简单的形式解释好的灵魂???

onCharacteristicWrite
onCharacteristicRead
onCharacteristicChanged
onDescriptorRead
onDescriptorWrite
Run Code Online (Sandbox Code Playgroud)

我目前的情况是,我设法读取onCharacteristicChanged()回调中的数据,然后我验证了收到的数据我试图通过使用发送数据

characteristics.setValue(data)
gatt.writeCharacteristic(characteristics)
Run Code Online (Sandbox Code Playgroud)

但是,Android BLE堆栈没有调用onCharacteristicsWrite(),事实上,Android只是挂在那里..

我尝试谷歌关于Android BLE,没有太多的信息,只有一堆抱怨BLE堆栈是多么不稳定......

android bluetooth-lowenergy android-bluetooth

28
推荐指数
1
解决办法
4万
查看次数

在Android中将数据写入蓝牙LE特性

虽然已经提出了类似的问题,但它略有不同.我知道如何将数据传递给连接的BLE设备,但我认为我做错了什么我需要帮助.下面的代码包含我的类中扩展BroadcastReceiver的所有方法.

  1. 我扫描并连接到'PEN_ADDRESS`指定的设备.
  2. 在`onServicesDiscovered`方法中,我寻找一个'UUID`包含`abcd`的服务.
  3. 然后我循环遍历这些服务的特性,并在其"UUID"中查找具有特定字符串的三个特征.
  4. 第三个特性是一个可写特性,我试图通过调用方法`writeCharac(mGatt,writeChar1,123)来写数据;`上面传递的数据`123`只是一个伪数据.

我在尝试写入此特性时调试了我的代码,但是在writeCharac方法中放置了断点,我发现status值为false,表明写入不成功.我在这里错过了什么吗?请帮忙!

public class BackgroundReceiverFire extends BroadcastReceiver {
Context context;
private BluetoothAdapter mBluetoothAdapter;
private BluetoothGatt mGatt;
private BluetoothLeService mBluetoothLeService;
private boolean mScanning;
private final String TAG = "READING: ";
private BluetoothDevice mDevice;
private Handler mHandler;
private static final int REQUEST_ENABLE_BT = 1;
private final String PEN_ADDRESS = "FB:23:AF:42:5C:56";
// Stops scanning after 10 seconds.
private static final long SCAN_PERIOD = 10000;

    public void onReceive(Context context, Intent intent) {
        this.context = context;
        Toast.makeText(context, …
Run Code Online (Sandbox Code Playgroud)

android bluetooth bluetooth-lowenergy

5
推荐指数
1
解决办法
1万
查看次数