2017-12-06 6 views
0

を取得しました。特性から値を読み取り、値をバイト配列に保存します。接続が確立された後、私はgetStartUpValue関数を呼び出すサービスに接続した後の特性の値を読み取る接続が確立した後、Bluetooth Low Energy Android

public void getStartUpValue(){ 
    Log.w(TAG, "Reading completed");} 
    if(mBluetoothLeService.readWhiteAndIntensityCharacteristic() == null) 
    { 
     Log.w(TAG, "FAILED Reading value failed"); 
    } 
    startValue = mBluetoothLeService.readWhiteAndIntensityCharacteristic(); 
    Log.w(TAG, "Reading completed"); 

} 

:私のDeviceControlActivity内

public byte[] readWhiteAndIntensityCharacteristic() { 
if (mBluetoothAdapter == null || mBluetoothGatt == null) { 
    Log.w(TAG, "BluetoothAdapter not initialized"); 
    return null; 
} 
/*check if the service is available on the device*/ 
BluetoothGattService mCustomService = mBluetoothGatt.getService(UUID.fromString(UuidAdresssService)); 
if (mCustomService == null) { 
    Log.w(TAG, "Custom BLE Service not found"); 
    return null; 
} 
/*get the read characteristic from the service*/ 
BluetoothGattCharacteristic mReadCharacteristic = mCustomService.getCharacteristic(UUID.fromString(UuidAdresssWhiteAndIntensityCharastic)); 
byte[] messageByte = mReadCharacteristic.getValue(); 
if (messageByte != null && messageByte.length > 0) { 
    final StringBuilder stringBuilder = new StringBuilder(messageByte.length); 
    for (byte byteChar : messageByte) 
     stringBuilder.append(String.format("%02X", byteChar)); 
    s = "0x" + stringBuilder.toString(); 
    Log.v("Scan Activity", s); 
    if (mBluetoothGatt.readCharacteristic(mReadCharacteristic) == false) { 
     Log.w(TAG, "Failed to read characteristic"); 
    } 
} 
return messageByte; 

} この関数を呼び出します:

は、ここに私のBluetoothLeService内部の読書のための私の関数です。

private final BroadcastReceiver mGattUpdateReceiver = new BroadcastReceiver() { 
@Override 
public void onReceive(Context context, Intent intent) { 
    final String action = intent.getAction(); 
    if (BluetoothLeService.ACTION_GATT_CONNECTED.equals(action)) { 
     mConnected = true; 
     updateConnectionState(R.string.connected); 
     invalidateOptionsMenu(); 
    } else if (BluetoothLeService.ACTION_GATT_DISCONNECTED.equals(action)) { 
     mConnected = false; 
     updateConnectionState(R.string.disconnected); 
     invalidateOptionsMenu(); 
     clearUI(); 
    } else if (BluetoothLeService.ACTION_GATT_SERVICES_DISCOVERED.equals(action)) { 
     // Show all the supported services and characteristics on the user interface. 
     mBluetoothLeService.getSupportedGattServices(); 
     getStartUpValue(); 

    } else if (BluetoothLeService.ACTION_DATA_AVAILABLE.equals(action)) { 
     displayData(intent.getStringExtra(BluetoothLeService.EXTRA_DATA)); 

    } 
} 

}

毎回読書に失敗していますが、特性に値を送ることは問題ありません。

この問題を解決するにはどうすればよいですか?

+0

あなたは 'mBluetoothGatt.readCharacteristic(mReadCharacteristic)' をしようとすると何の代わりに 'mReadCharacteristic.getValue()'の? 読み取り操作の結果は 'onCharacteristicRead(BluetoothGatt、BluetoothGattCharacteristic、int)'コールバックによって報告されます。 –

答えて

1

溶液である:mBluetoothGatt.readCharacteristic(mReadCharacteristic)読み取りが呼び出されるコールバックを終了した後

アンドリューVovkのおかげ

関連する問題