Почему BLE отключается от приложения NRF connect? - PullRequest
0 голосов
/ 01 сентября 2018
private final BluetoothGattServerCallback mGattServerCallback = new BluetoothGattServerCallback() {
@Override
public void onConnectionStateChange(BluetoothDevice device, final int status, int newState) {
  super.onConnectionStateChange(device, status, newState);
  if (status == BluetoothGatt.GATT_SUCCESS) {
    if (newState == BluetoothGatt.STATE_CONNECTED) {
      mBluetoothDevices.add(device);
      updateConnectedDevicesStatus();
      String macAddress = android.provider.Settings.Secure.getString(getApplication().getContentResolver(), "bluetooth_address");
      Log.v(TAG, "Connected to device: " + device.getAddress());
      Log.d("/bleUUID","uuid is " +macAddress);
      Log.d("/bleUUID","uuid is " +CHARACTERISTIC_USER_DESCRIPTION_UUID);
    } else if (newState == BluetoothGatt.STATE_DISCONNECTED) {
      mBluetoothDevices.remove(device);
      updateConnectedDevicesStatus();
      Log.v(TAG, "Disconnected from device");
    }
  } else {
    mBluetoothDevices.remove(device);
    updateConnectedDevicesStatus();
    // There are too many gatt errors (some of them not even in the documentation) so we just
    // show the error to the user.
    final String errorMessage = getString(com.efftronics.android.bleperipheral.R.string.status_errorWhenConnecting) + ": " + status;
    runOnUiThread(new Runnable() {
      @Override
      public void run() {
        Toast.makeText(Peripheral.this, errorMessage, Toast.LENGTH_LONG).show();
      }
    });
    Log.e(TAG, "Error when connecting: " + status);
  }
}
}

При отключении от nrf connect, onConnectionStateChange не вызывает. Почему?

Я внедряю BLE Peripheral App. Мое приложение - реклама (периферийный режим). и NRF connect (центральный режим) сканирует рекламные устройства.

Когда другое приложение подключается к моему периферийному приложению, адрес моего периферийного приложения отображается в соединении NRF. Этот адрес исходит из этой строки.

частный статический окончательный UUID CHARACTERISTIC_USER_DESCRIPTION_UUID = UUID .fromString ( "00002901-0000-1000-8000-00805f9b34fb");

Но каждый раз при подключении к NRF-соединению этот адрес меняется. Почему?

Если мне нужно один и тот же адрес каждый раз. Как я могу это сделать?

Через некоторое время приложение my ble периферийное устройство автоматически отключается с ошибкой тайм-аута. Почему?

Пожалуйста, помогите мне. Любая помощь будет оценена. this is my ble peripheral app which is advertising.

This is other app which is  scanning for the devices and connected to my peripheral app(installed in lenovo tab). And here showing some address like 58:31:8F:FF:56:AB. If I disconnect my peripheral app and again reconnected then this address is changing every time

This error is coming in the nrFConect app(central). Why it is coming?

...