Search in sources :

Example 1 with TiPeriodicalSensor

use of sample.ble.sensortag.sensor.ti.TiPeriodicalSensor in project BleSensorTag by StevenRudenko.

the class BleServicesAdapter method getChildView.

@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
    final ChildViewHolder holder;
    if (convertView == null) {
        holder = new ChildViewHolder();
        convertView = inflater.inflate(R.layout.li_characteristic, parent, false);
        holder.name = (TextView) convertView.findViewById(R.id.name);
        holder.uuid = (TextView) convertView.findViewById(R.id.uuid);
        holder.modes = (TextView) convertView.findViewById(R.id.modes);
        holder.seek = (SeekBar) convertView.findViewById(R.id.seek);
        holder.seek.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                if (serviceListener == null || def == null || !fromUser) {
                    return;
                }
                final BaseSensor<?> sensor = (BaseSensor<?>) def.getSensor(holder.service.getUuid().toString());
                if (sensor == null) {
                    return;
                }
                if (sensor instanceof TiPeriodicalSensor) {
                    final TiPeriodicalSensor periodicalSensor = (TiPeriodicalSensor) sensor;
                    periodicalSensor.setPeriod(progress + periodicalSensor.getMinPeriod());
                    serviceListener.onServiceUpdated(holder.service);
                }
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
            }
        });
        convertView.setTag(holder);
    } else {
        holder = (ChildViewHolder) convertView.getTag();
    }
    final BluetoothGattCharacteristic item = getChild(groupPosition, childPosition);
    final String uuid = item.getUuid().toString();
    final String name;
    final String modes = getModeString(item.getProperties());
    holder.service = item.getService();
    final String serviceUUID = item.getService().getUuid().toString();
    final Sensor<?> sensor = def != null ? (Sensor<?>) def.getSensor(serviceUUID) : null;
    // reset visibility
    holder.uuid.setVisibility(View.VISIBLE);
    holder.seek.setVisibility(View.GONE);
    if (sensor != null) {
        name = sensor.getCharacteristicName(uuid);
        if (sensor instanceof BaseSensor) {
            final BaseSensor<?> tiSensor = (BaseSensor<?>) sensor;
            if (tiSensor.isConfigUUID(uuid)) {
                if (sensor instanceof TiPeriodicalSensor) {
                    final TiPeriodicalSensor periodicalSensor = (TiPeriodicalSensor) sensor;
                    final int max = periodicalSensor.getMaxPeriod() - periodicalSensor.getMinPeriod();
                    final int value = periodicalSensor.getPeriod() - periodicalSensor.getMinPeriod();
                    holder.seek.setMax(max);
                    holder.seek.setProgress(value);
                    holder.seek.setVisibility(View.VISIBLE);
                    holder.uuid.setVisibility(View.GONE);
                }
            }
        }
    } else {
        name = "Unknown";
    }
    holder.name.setText(name);
    holder.uuid.setText(uuid);
    holder.modes.setText(modes);
    return convertView;
}
Also used : SeekBar(android.widget.SeekBar) BaseSensor(sample.ble.sensortag.sensor.BaseSensor) TiPeriodicalSensor(sample.ble.sensortag.sensor.ti.TiPeriodicalSensor) BluetoothGattCharacteristic(android.bluetooth.BluetoothGattCharacteristic)

Aggregations

BluetoothGattCharacteristic (android.bluetooth.BluetoothGattCharacteristic)1 SeekBar (android.widget.SeekBar)1 BaseSensor (sample.ble.sensortag.sensor.BaseSensor)1 TiPeriodicalSensor (sample.ble.sensortag.sensor.ti.TiPeriodicalSensor)1