Обнаружение падения и нажатие кнопки BLE не работают отдельно - PullRequest
0 голосов
/ 28 ноября 2018

Я создаю приложение BLE для Android. Приложение будет подавать сигнал тревоги, когда кнопка устройства BLE нажата или опущена (обнаружение падения). Все работало до тех пор, пока я не добавил обнаружение падения вместе с нажатием кнопки. Теперь проблема возникает, когда приложениезапускается, если я нажму кнопку, я получу alrm. После этого он не будет работать для обнаружения падения. Снова, если я уронил кнопку при запуске приложения, то я получу сигнал тревоги, после этого нет сигнала тревоги для нажатия кнопки.

Вот мои onServicesDiscovered в BluetoothLEservice.java

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 я перенаправлю два из этих событий в свою активность оповещения в соответствии со значением ключа.Любая помощь оценена. Пожалуйста, спросите, нужно ли дальнейшее объяснение.

1 Ответ

0 голосов
/ 29 ноября 2018

Я допустил ошибку в своем классе Гатконстант.Для нажатия кнопки необходимо написать

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...