2016-11-10 7 views
0

私のアプリでBluetoothに問題があります。私は多くの特性を持っており、2だけ読むことができます。私がもっと読むことを試みるとき、私はコールバックを得ていません。私はキューを作成する必要があるが、それを行う方法を知らないことを読んだ。助けてください。ここでBluetoothがすべての特性を読み取っていない

は私の特性です:

private void registerParametersCharacteristics(List<BluetoothGattCharacteristic> characteristics) { 
     for (BluetoothGattCharacteristic characteristic : characteristics) { 
      UUID characteristicUuid = characteristic.getUuid(); 
      if (Characteristics.EON_PARAMS_EDDYSTONE_UID_CHAR.equals(characteristicUuid)) { 
       euidCharacteristic = characteristic; 
       Log.e(TAG, "registerParametersCharacteristics: EUID"); 
      } 
      else if (Characteristics.EON_PARAMS_EDDYSTONE_EID_CHAR.equals(characteristicUuid)) { 
       eeidCharacteristic = characteristic;} 
      else if (Characteristics.EON_PARAMS_EDDYSTONE_URL_CHAR.equals(characteristicUuid)) { 
       eurlCharacteristic = characteristic;} 
      else if (Characteristics.EON_PARAMS_EDDYSTONE_TLM_CHAR.equals(characteristicUuid)) { 
       etlmCharacteristic = characteristic;} 
      else if (Characteristics.EON_PARAMS_EDDYSTONE_UID_UUID.equals(characteristicUuid)) { 
       eUidUUidCharacteristic = characteristic;} 
      else if (Characteristics.EON_PARAMS_EDDYSTONE_URL_UUID.equals(characteristicUuid)) { 
       eUrlUuidCharacteristic = characteristic; 
       Log.e(TAG, "registerParametersCharacteristics: EurlUUID"); 
      } 
      else if (Characteristics.MINOR_CHARACTERISTIC_UUID.equals(characteristicUuid)) { 
       minorCharacteristic = characteristic;} 
      else if (Characteristics.MAJOR_CHARACTERISTIC_UUID.equals(characteristicUuid)) { 
       majorCharacteristic = characteristic; 
      } 
      else if (Characteristics.UUID_CHARACTERISTIC_UUID.equals(characteristicUuid)){ 
       uuidCharacteristic = characteristic; 
      } 
      else if (Characteristics.INTERVAL_CHARACTERISTIC_UUID.equals(characteristicUuid)) { 
       intervalCharacteristic = characteristic; 
      } 
      else if (Characteristics.TX_CHARACTERISTIC_UUID.equals(characteristicUuid)) { 
       txCharacteristic = characteristic; 
      } 
      else if (Characteristics.BATTERY_CHARACTERISTIC_UUID.equals(characteristicUuid)) { 
       batteryCharacteristic = characteristic; 
       Log.e(TAG, "registerParametersCharacteristics: BAT"); 
      } 
      Log.e(TAG, "registerParametersCharacteristics: " + characteristic.getUuid().toString()); 
     } 
    } 

、これが私のonServicediscovered方法である:私はこのキューを書くために二日失い、それを行うことはできません

@Override 
     public void onServicesDiscovered(BluetoothGatt gatt, int status) { 
      super.onServicesDiscovered(gatt, status); 
      if (status == BluetoothGatt.GATT_SUCCESS) { 
       List<BluetoothGattService> services = gatt.getServices(); 
       for (BluetoothGattService service : services) { 
        registerService(service); 
        Log.e(TAG, "onServicesDiscovered: " + service.getUuid().toString()); 
       } 
       callback.connectedStateChanged(true); 
      } else 
       disconnect(); 
     } 
     @Override 
     public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) { 
      super.onCharacteristicRead(gatt, characteristic, status); 
      characteristicValueRead(characteristic); 
      BluetoothCommunicationManager.getInstance().processNext(); 
     } 

。すべての助けにあらかじめ感謝します。

答えて

0

「コマンド」デザインパターンを使用してください。基本的には、抽象クラスまたは単一の 'execute(..)'メソッドとのインタフェースを持ちます。クラスを作成し、その 'Command'クラスを拡張しますが、すべての実装が独自の作業を行います。そして、あなたは「ArrayListの」を作成することができ 、そこにすべてのタスクを追加し、ループのような「の」内のこれらのタスクを処理:ください

for (Command c : commands){ 
c.execute(..); 
{ 
+0

アレックス任意の例を? – Bartos

+1

確かに、https://en.wikipedia.org/wiki/Command_pattern#Java –

関連する問題