我正在创建一个使用BLE与MCU通信的Android应用程序,目前我能够使用我的应用程序连接到MCU,但是当我尝试发现并获取设备服务时,我是返回一个null数组,我不确定原因。Java BLE不返回服务
//Code used to connect to the device
private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback() {
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState){
String intentAction;
if (newState == BluetoothProfile.STATE_CONNECTED) {
intentAction = ACTION_GATT_CONNECTED;
mConnectionState = STATE_CONNECTED;
broadcastUpdate(intentAction);
Log.i("TAG", "Connected to GATT server.");
// Attempts to discover services after successful connection.
Log.i("TAG", "Attempting to start service discovery:" + mGatt.discoverServices());
services = mGatt.getServices();
System.out.println("Service 1 is : " + services.get(0));
} else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
intentAction = ACTION_GATT_DISCONNECTED;
mConnectionState = STATE_DISCONNECTED;
Log.i("TAG", "Disconnected from GATT server.");
broadcastUpdate(intentAction);
}
}
输出:
09-26 16:33:09.648 10917-10931/bamboomobile.medhead I/TAG:连接到GATT服务器。
09-26 16:33:09.648 10917-10931/bamboomobile.medhead d/BluetoothGatt:discoverServices() - 设备:DC:1B:A3:10:B9:D5
09-26 16时33分:09.658 10917-10931/bamboomobile.medhead I/TAG:试图启动服务发现:真正的
09-26 16:33:09.668 10917-10931/bamboomobile.medhead W/BluetoothGatt:未处理的异常回调 的Java。 lang.IndexOutOfBoundsException:索引0无效,大小为0 at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255) at java.util.ArrayList.get(A rrayList.java:308) at bamboomobile.medhead.MainMenu $ 1.onConnectionStateChange(MainMenu.java:86) at android.bluetooth.BluetoothGatt $ 1.onClientConnectionState(BluetoothGatt.java:186) at android.bluetooth.IBluetoothGattCallback $ Stub。 onTransact(IBluetoothGattCallback.java:70) 在android.os.Binder.execTransact(Binder.java:446)
09-26 16:33:09.688 10917-10931/bamboomobile.medhead d/BluetoothGatt:onSearchComplete() =设备= DC:1B:A3:10:B9:D5状态= 0