2017-02-01 50 views
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 
+0

爲什麼要有任何緩存服務?您創建一個新的mBleWrapper對象,初始化它並連接到遠程設備。就這樣。怎麼可能有任何服務? getCachedServices做什麼? – Nebr

+0

getCachedServices位於blewrapper中,它只是返回服務。我認爲uiAvaiableServices是發現它們的東西,但我現在看到這是沒有意義的。你知道什麼功能通常收集ble應用程序中的所有服務? – BrittB

+0

我一直在關注一個教程,它說它會在連接時自動添加服務:https://www.safaribooksonline.com/library/view/getting-started-with/9781491900550/ch08.html#_communicating_with_a_remote_device – BrittB

回答

0

原來我並不需要行

uiAvailableServices(mBleWrapper.getGatt(), mBleWrapper.getDevice(), mBleWrapper.getCachedServices()); 

該行部分用於從服務中檢索特徵。

相關問題