Example usage for android.bluetooth BluetoothGattCharacteristic FORMAT_UINT8

List of usage examples for android.bluetooth BluetoothGattCharacteristic FORMAT_UINT8

Introduction

In this page you can find the example usage for android.bluetooth BluetoothGattCharacteristic FORMAT_UINT8.

Prototype

int FORMAT_UINT8

To view the source code for android.bluetooth BluetoothGattCharacteristic FORMAT_UINT8.

Click Source Link

Document

Characteristic value format type uint8

Usage

From source file:com.nbplus.iotapp.bluetooth.BluetoothLeService.java

private void broadcastUpdate(final String address, final String action,
        final BluetoothGattCharacteristic characteristic) {
    final Intent intent = new Intent(action);
    intent.putExtra(EXTRA_DATA_SERVICE_UUID, characteristic.getService().getUuid().toString());
    intent.putExtra(EXTRA_DATA_CHARACTERISTIC_UUID, characteristic.getUuid().toString());

    String str = "";
    byte[] values = characteristic.getValue();

    Log.d(TAG,/*from   ww  w.  j ava 2  s .c o  m*/
            "onCharacteristicChanged: address : " + address + ", uuid:" + characteristic.getUuid().toString());

    // This is special handling for the Heart Rate Measurement profile.  Data parsing is
    // carried out as per profile specifications:
    // http://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.heart_rate_measurement.xml
    if (UUID_HEART_RATE_MEASUREMENT.equals(characteristic.getUuid())) {
        int flag = characteristic.getProperties();
        int format = -1;
        if ((flag & 0x01) != 0) {
            format = BluetoothGattCharacteristic.FORMAT_UINT16;
            Log.d(TAG, "Heart rate format UINT16.");
        } else {
            format = BluetoothGattCharacteristic.FORMAT_UINT8;
            Log.d(TAG, "Heart rate format UINT8.");
        }
        final int heartRate = characteristic.getIntValue(format, 1);
        Log.d(TAG, String.format("Received heart rate: %d", heartRate));
        intent.putExtra(EXTRA_DATA, values);
    } else if (UUID_WEIGHT_MEASUREMENT.equals(characteristic.getUuid())) { // for weight scale
        int flag = values[0] & 0xff;
        Log.w(TAG, String.format("Measurement data received flag = %02x", flag));
        /**
         *  ? reserved field ? 2? ? ??.
         */
        if (address != null && address.startsWith(GattAttributes.XIAOMI_MAC_ADDRESS_FILTER)) {
            if (values == null || values.length <= 0 || (values[0] & 0xf0) != 0x20) {
                Log.d(TAG, "ignore ... flag 4nibble 0x20 is not ... ");
                return;
            }
        }

        ArrayList<WeightMeasurement> measurements = WeightMeasurement.parseWeightMeasurement(address,
                characteristic.getUuid().toString(), values);

        intent.putParcelableArrayListExtra(EXTRA_DATA, measurements);
    } else if (UUID_GLUCOSE_MEASUREMENT.equals(characteristic.getUuid())) {
        GlucoseMeasurement measurement = GlucoseMeasurement.parseGlucoseMeasurement(values);

        intent.putExtra(EXTRA_DATA, measurement);
    } else if (UUID_GLUCOSE_MEASUREMENT_CONTEXT.equals(characteristic.getUuid())) {

    } else if (UUID_RECORD_ACCESS_CONTROL_POINT.equals(characteristic.getUuid())) {
        RecordAccessControlPoint recordAccessControlPoint = RecordAccessControlPoint
                .parseRecordAccessControlPoint(values);
        intent.putExtra(EXTRA_DATA, recordAccessControlPoint);
    } else if (UUID.fromString(GattAttributes.CURRENT_TIME).equals(characteristic.getUuid())) {
        if (values != null && values.length > 0) {
            intent.putExtra(EXTRA_DATA, values);
        }
        //intent.putExtra(EXTRA_DATA, characteristic.getValue());
    } else {
        // For all other profiles, writes the data formatted in HEX.
        if (values != null && values.length > 0) {
            intent.putExtra(EXTRA_DATA, values);
        }
    }
    sendBroadcast(intent);
}

From source file:com.umundus.service.NCallServiceOld.java

public void broadcastUpdate(final String action, final BluetoothGattCharacteristic characteristic) {
    final Intent intent = new Intent(action);

    // This is special handling for the Heart Rate Measurement profile.  Data parsing is
    // carried out as per profile specifications:
    // http://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.heart_rate_measurement.xml
    if (BATTERY_CHARACTERISTIC.equals(characteristic.getUuid())) {

        int battery = characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT8, 0);
        Log.d(TAG, String.format("battery value : %d", battery));

        intent.putExtra(BATTERY_VALUE, battery);

    } else if (NCALL_REMOCON_KEY_NOTI_CHARACTERISTIC.equals(characteristic.getUuid())) {

        int cmd = characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT8, 0);

        if (cmd == 0x00) {

            intent.putExtra(KEY_INPUT_DATA, characteristic.getValue());

        } else if (cmd == 0x22) {

            int status = characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT8, 1);
            Log.d(TAG, String.format("scenario status : %d", status));
            intent.putExtra(SCENARIO_STATUS_DATA, status);

        } else if (cmd == 0x32) {
            intent.putExtra(LED_INPUT_DATA, characteristic.getValue());
        } else if (cmd == 0x42) {
            intent.putExtra(VERSION_INPUT_DATA, characteristic.getValue());
        } else if (cmd == 0x52) {
            int status = characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT8, 1);

            Log.i(TAG, "RESPONSE_PATRERN_DATA ++");

            if (status == RESPONSE_PATRERN_DATA_WRITE_ERROR) {
                Log.e(TAG, "PATTERN_DATA_WRITE_ERROR");
            } else if (status == RESPONSE_PATRERN_DATA_WRITE_START) {
                Log.i(TAG, "pattern data response ok!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                if (mBluetoothAdapter == null || mBluetoothGatt == null) {
                    Log.w(TAG, "writeRemoconCharacteristic BluetoothAdapter not initialized");
                    return;
                }//from   w w w . jav a  2s.  c  o m

                BluetoothGattService RemoconService = mBluetoothGatt.getService(NCALL_REMOCON_SERVICE);
                if (RemoconService == null) {
                    showMessage("NCALL_REMOCON_SERVICE = NULL");
                    return;
                }

                BluetoothGattCharacteristic RemoconChar = RemoconService
                        .getCharacteristic(NCALL_REMOCON_SEND_PATTERN_CHARACTERISTIC);
                if (RemoconChar == null) {
                    showMessage("NCALL_REMOCON_SEND_PATTERN_CHARACTERISTIC = NULL");
                    return;
                }

                try {
                    final byte[] buffer = mBuffer;
                    final int size = mInputStream.read(buffer);

                    writePacket(mBluetoothGatt, RemoconChar, buffer, size);
                } catch (Exception e) {
                    Log.e(TAG, "" + e);
                }
            } else if (status == RESPONSE_PATRERN_DATA_WRITE_END) {
                try {
                    patternCount++;
                    if (patternCount < 12) {
                        Log.w(TAG, "" + patternCount);
                        PatternTransferStart(patternCount);
                    } else {
                        broadcastUpdate(PROGRESS_SET_INVISIBLE);
                    }
                } catch (Exception e) {
                    // TODO: handle exception
                }
            }

            Log.i(TAG, "RESPONSE_PATRERN_DATA --");

        } else if (cmd == 0x62) {
            Log.i(TAG, "/  ack:" + characteristic.getValue());
        }
    } else if (MANUFACTURER_NAME_UUID.equals(characteristic.getUuid())) {
        byte getdata[] = characteristic.getValue();
        Log.i(TAG, "Manufacturer Name : " + new String(getdata, 0, getdata.length));
        intent.putExtra(MANUFACTURER_NAME, characteristic.getValue());
    } else if (MODEL_NAME_UUID.equals(characteristic.getUuid())) {
        byte getdata[] = characteristic.getValue();
        Log.i(TAG, "Model Number : " + new String(getdata, 0, getdata.length));
        intent.putExtra(MODEL_NAME, characteristic.getValue());
    } else if (FIRMWARE_REVISON_UUID.equals(characteristic.getUuid())) {
        byte getdata[] = characteristic.getValue();
        Log.i(TAG, "firmware vision = " + new String(getdata, 0, getdata.length));
        intent.putExtra(FIRMWARE_REVISON, characteristic.getValue());
    } else if (HARDWARE_REVISON_UUID.equals(characteristic.getUuid())) {
        byte getdata[] = characteristic.getValue();
        Log.i(TAG, "hardware revision = " + new String(getdata, 0, getdata.length));
        intent.putExtra(HARDWARE_REVISON, characteristic.getValue());
    }

    //        synchronized (mLock) {
    //           mLock.notifyAll();
    //      }
    sendBroadcast(intent);
}