0
Я успешно подключаюсь к устройству BLE. Я пытаюсь получить все его службы и добавить их в массив. Однако, когда я перехожу к ним через uiAvailableServices, он показывает значение null.Службы устройств BLE, отображающие нуль в uiAvailableУслуги
код, который вызывает доступные услуги
@Override
protected void onResume() {
super.onResume();
if(mBleWrapper == null) mBleWrapper = new BleWrapper(this, this);
if(!mBleWrapper.initialize()) {
finish();
}
// start automatically connecting to the device
mBleWrapper.connect(mDeviceAddress);
uiAvailableServices(mBleWrapper.getGatt(), mBleWrapper.getDevice(), mBleWrapper.getCachedServices());
}
Функция availableservices:
//add each service to the services array
public void uiAvailableServices(final BluetoothGatt gatt,
final BluetoothDevice device,
final List<BluetoothGattService> services)
{
//services aren't showing up here
for (BluetoothGattService service : services)
{
String uuid = service.getUuid().toString().toLowerCase(Locale.getDefault());
Log.d(TAG, uuid);
}
}
Ошибка:
java.lang.NullPointerException: Attempt to invoke interface method 'java.util.Iterator java.util.List.iterator()' on a null object reference
Зачем нужны кэшированные службы? Вы создаете новый объект mBleWrapper, инициализируете его и подключаетесь к удаленному устройству. Это все. Как могут быть какие-то услуги уже? Что делает getCachedServices? – Nebr
getCachedServices находится в пакете, он просто возвращает службы. Я думал, что uiAvaiableServices - это то, что находит их, но теперь я вижу, как это не имеет смысла. Вы знаете, какая функция обычно собирает все службы в приложениях? – BrittB
Я слежу за учебным пособием, в котором говорится, что он автоматически добавляет службы при подключении: https://www.safaribooksonline.com/library/view/getting-started-with/9781491900550/ch08.html#_communicating_with_a_remote_device – BrittB