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);
}
}
出力:
9月26日16:33:09.648 10917から10931/bamboomobile.medhead I/TAG:ガットサーバに接続されました。
9月26日16:33:09.648 10917から10931/bamboomobile.medheadのD/BluetoothGatt:discoverServices() - デバイス:DC:1B:A3:10:B9:D5
9月26日午後04時33分:09.658 10917から10931/bamboomobile.medhead I/TAG:真
9月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 (mainMenu.java:86) (android.bluetooth.BluetoothGatt $ 1.onClientConnectionState(BluetoothGatt.java:186) )は、 android.os.Binder.execTransactでonTransact(IBluetoothGattCallback.java:70) (Binder.java:446)
9月26日16:33:09.688 10917から10931/bamboomobile.medheadのD/BluetoothGatt:onSearchComplete() =デバイス= DC:1B:A3:10:B9:D5ステータス= 0