2016-09-26 8 views
0

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

答えて

0

接続したら、に電話する必要があります。その後、onServicesDiscoveredコールバックでmGatt.getServices()を使用して処理を進めることができます。

関連する問題