aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/io/trygvis/soilmoisture/MainActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/io/trygvis/soilmoisture/MainActivity.java')
-rw-r--r--app/src/main/java/io/trygvis/soilmoisture/MainActivity.java116
1 files changed, 85 insertions, 31 deletions
diff --git a/app/src/main/java/io/trygvis/soilmoisture/MainActivity.java b/app/src/main/java/io/trygvis/soilmoisture/MainActivity.java
index 7aa3534..3a88f6c 100644
--- a/app/src/main/java/io/trygvis/soilmoisture/MainActivity.java
+++ b/app/src/main/java/io/trygvis/soilmoisture/MainActivity.java
@@ -16,9 +16,7 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.Button;
import android.widget.ListAdapter;
-import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
@@ -209,9 +207,18 @@ public class MainActivity extends ListActivity {
}
}
- @Override
- protected void onListItemClick(ListView l, View v, int position, long id) {
- stopScan();
+ // -----------------------------------------------------------------------
+ //
+ // -----------------------------------------------------------------------
+
+ private void onDeviceClick(SmDevice device) {
+ Log.i(TAG, "onDeviceClick, device=" + device.getBtDevice().getId());
+ }
+
+ private void onSensorClick(SmSensor sensor) {
+ Log.i(TAG, "onSensorClick, device=" + sensor.getDevice().getBtDevice().getId() + "/" + sensor.getIndex());
+
+ sensor.readCurrentValue();
}
// -----------------------------------------------------------------------
@@ -223,16 +230,25 @@ public class MainActivity extends ListActivity {
final TextView deviceAddress;
final TextView rssi;
final TextView info;
- final ProgressBar spinner;
- final Button connect;
DeviceItem(View view) {
this.deviceName = (TextView) view.findViewById(R.id.device_name);
this.deviceAddress = (TextView) view.findViewById(R.id.device_address);
this.rssi = (TextView) view.findViewById(R.id.device_rssi);
this.info = (TextView) view.findViewById(R.id.device_info);
- this.spinner = (ProgressBar) view.findViewById(R.id.device_spinner);
- this.connect = (Button) view.findViewById(R.id.button_connect);
+ }
+ }
+
+ static class SensorItem {
+ final SmSensor sensor;
+ final TextView description;
+ final ProgressBar sensorProgress;
+
+ SensorItem(SmSensor sensor, View view) {
+ this.sensor = sensor;
+ this.description = (TextView) view.findViewById(R.id.description);
+ this.sensorProgress = (ProgressBar) view.findViewById(R.id.sensor_progress);
+ sensorProgress.setMax(1024);
}
}
@@ -254,18 +270,24 @@ public class MainActivity extends ListActivity {
for (SmDevice d : devices) {
(d.isUseful() ? usefulDevices : unusefulDevices).add(d);
}
- List<SmSensor> monitors = new ArrayList<>();
+ List<SmSensor> sensors = new ArrayList<>();
for (SmDevice d : devices) {
- monitors.addAll(d.getSensors());
+ if (d.isUseful()) {
+ sensors.addAll(d.getSensors());
+ }
}
if (groupByDevice) {
- current.addAll(usefulDevices);
+// current.addAll(usefulDevices);
+ for (SmDevice device : usefulDevices) {
+ current.add(device);
+ current.addAll(device.getSensors());
+ }
if (showAll) {
current.addAll(unusefulDevices);
}
} else {
- current.addAll(monitors);
+ current.addAll(sensors);
}
dataSetObservable.notifyChanged();
}
@@ -374,50 +396,77 @@ public class MainActivity extends ListActivity {
if (o instanceof SmDevice) {
return getSmDeviceView((SmDevice) o, view);
} else if (o instanceof SmSensor) {
- return getSoilMonitorView((SmSensor) o, view);
+ return getSoilSensorView((SmSensor) o, view);
}
throw new RuntimeException("Not implemented");
}
private View getSmDeviceView(SmDevice smDevice, View view) {
-
- DeviceItem item;
if (view == null) {
- view = inflater.inflate(R.layout.listitem_device, null);
- item = new DeviceItem(view);
- view.setTag(item);
- view.setClickable(false);
- } else {
- item = (DeviceItem) view.getTag();
+ view = inflater.inflate(R.layout.fragment_device, null);
+ view.setTag(new DeviceItem(view));
+ view.setClickable(true);
+ view.setOnClickListener(v -> onDeviceClick(smDevice));
}
+ DeviceItem item = (DeviceItem) view.getTag();
+
if (smDevice.getName() != null) {
item.deviceName.setText(smDevice.getName());
} else {
item.deviceName.setText(R.string.unknown_device);
}
- item.deviceAddress.setText(smDevice.getBtDevice().getAddress());
+ String address = smDevice.getBtDevice().getAddress();
+
+ if (!smDevice.isProbed()) {
+ address += " not probed";
+ } else if (smDevice.isUseful()) {
+ address += " useful";
+ } else {
+ address += " not useful";
+ }
+
+ item.deviceAddress.setText(address);
item.rssi.setText(getText(R.string.rssi) + ": " +
(smDevice.getBtDevice().getRssi() != 0 ? valueOf(smDevice.getBtDevice().getRssi()) : getText(R.string.unknown)));
- if (smDevice.isUseful()) {
- item.info.setText("number of sensors: " + smDevice.getSensors().size());
+ boolean useful = smDevice.isUseful();
+
+ if (useful) {
+ item.info.setText("Number of sensors: " + smDevice.getSensors().size());
} else {
item.info.setText("");
}
- boolean useful = smDevice.isUseful();
- item.spinner.setVisibility(useful ? View.GONE : View.VISIBLE);
- item.connect.setVisibility(useful ? View.VISIBLE : View.GONE);
- view.setClickable(useful);
+// view.setClickable(useful);
return view;
}
- private View getSoilMonitorView(SmSensor smSensor, View view) {
- throw new RuntimeException("Not implemented");
+ private View getSoilSensorView(SmSensor smSensor, View view) {
+ if (view == null) {
+ view = inflater.inflate(R.layout.fragment_sensor, null);
+ view.setTag(new SensorItem(smSensor, view));
+ view.setClickable(true);
+ view.setOnClickListener(v -> onSensorClick(smSensor));
+ }
+
+ SensorItem item = (SensorItem) view.getTag();
+
+ Integer value = smSensor.getLastValue();
+ String text = "Connected: " + smSensor.getDevice().getBtDevice().connected();
+ text += ", value: " + (value == null ? "Unknown" : value);
+ item.description.setText(text);
+
+ if (value != null) {
+ item.sensorProgress.setProgress(value);
+ } else {
+ item.sensorProgress.setIndeterminate(true);
+ }
+
+ return view;
}
}
@@ -459,5 +508,10 @@ public class MainActivity extends ListActivity {
deviceList.devices.add(device);
deviceList.sort();
}
+
+ @Override
+ public void onNewSample(String address, int sensor) {
+ deviceList.notifyDataSetChanged();
+ }
}
}