0
我成功連接到BLE設備。我試圖獲得所有的服務並將它們添加到數組中。但是,當我在uiAvailableServices中遍歷它們時,它顯示爲空。調用可用的服務在uiAvailableServices中顯示null的BLE設備服務
代碼
@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位於blewrapper中,它只是返回服務。我認爲uiAvaiableServices是發現它們的東西,但我現在看到這是沒有意義的。你知道什麼功能通常收集ble應用程序中的所有服務? – BrittB
我一直在關注一個教程,它說它會在連接時自動添加服務:https://www.safaribooksonline.com/library/view/getting-started-with/9781491900550/ch08.html#_communicating_with_a_remote_device – BrittB