我正在创建一个BLE android应用。当BLE设备按钮被按下或放下时,该应用将发出警报(坠落检测)。一切正常,直到我添加了坠落检测和按钮按下。现在问题出在应用如果我按下按钮将运行,我将得到警报。此后,它将不适用于跌倒检测。再次,如果我在应用启动时放下按钮,则会收到警报,此后按钮没有警报。
这是我在BluetoothLEservice.java中的 onServicesDiscovered
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
if (status == BluetoothGatt.GATT_SUCCESS) {
// broadcastUpdate(ACTION_GATT_CONNECTED, deviceAddress, status);
// Do APP verification as soon as service discovered.
try {
appVerification(gatt, getGattChar(gatt, Constants.SIMPLE_SERVICE,Constants.CHAR_APP_VERIFICATION),Constants.NEW_APP_VERIFICATION_VALUE);
} catch (Exception e)
{
// Log.e(,"exception with app verify:" + e.getMessage());
}
for (BluetoothGattService service : gatt.getServices()) {
if ((service == null) || (service.getUuid() == null)) {
continue;
}
if (Constants.SIMPLE_SERVICE.equals(service.getUuid())) {
//
// Write Emergency key press
enableForDetect(gatt,service.getCharacteristic(Constants.CHAR_DETECTION_CONFIG),Constants.ENABLE_KEY_LONGPRESS_DETECTION_VALUE);
// Set notification for emergency key press and fall detection
setCharacteristicNotification(gatt,service.getCharacteristic(Constants.CHAR_DETECTION_NOTIFY),true);
}
else if (Constants.SIMPLE_SERVICE.equals(service.getUuid())){
if (db.getValue(Common.FALL_DETECTION).equals(Common.TRUE)){
enableForDetect(gatt,service.getCharacteristic(Constants.CHAR_DETECTION_CONFIG),Constants.ENABLE_FALL_KEY_DETECTION_VALUE);
setCharacteristicNotification(gatt,service.getCharacteristic(Constants.CHAR_DETECTION_NOTIFY),true);
}
}
在我的 onCharacteristicChanged 中,我将根据键值将其中两个事件重定向到我的警报活动中。 如有任何帮助,请询问是否需要进一步的解释。
答案 0 :(得分:0)
我在Gattconstant课堂上犯了一个错误。对于按钮按下,需要输入
public static final byte[] ENABLE_KEY_DETECTION_VALUE = new byte[]{(byte) 2};
要检测跌倒情况,必须写出
public static final byte[] ENABLE_FALL_KEY_DETECTION_VALUE = new byte[]{(byte) 6};
我写的是4而不是6。