aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/io/trygvis/soilmoisture/SensorActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/io/trygvis/soilmoisture/SensorActivity.java')
-rw-r--r--app/src/main/java/io/trygvis/soilmoisture/SensorActivity.java134
1 files changed, 134 insertions, 0 deletions
diff --git a/app/src/main/java/io/trygvis/soilmoisture/SensorActivity.java b/app/src/main/java/io/trygvis/soilmoisture/SensorActivity.java
new file mode 100644
index 0000000..358382c
--- /dev/null
+++ b/app/src/main/java/io/trygvis/soilmoisture/SensorActivity.java
@@ -0,0 +1,134 @@
+package io.trygvis.soilmoisture;
+
+import android.app.ActionBar;
+import android.app.Activity;
+import android.app.Fragment;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.ServiceConnection;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Toast;
+
+import io.trygvis.android.LocalBinder;
+import io.trygvis.android.Optional;
+
+import static io.trygvis.soilmoisture.SoilMoistureService.SoilMoistureListener;
+
+public class SensorActivity extends Activity {
+ private final static String TAG = SensorActivity.class.getSimpleName();
+
+ public static final String EXTRA_ADDRESS = "address";
+ public static final String EXTRA_NUMBER = "number";
+
+ private final Context context = this;
+ private String address;
+ private int number;
+
+ private ServiceConnection serviceConnection;
+ private SoilMoistureService soilMoistureService;
+ private SensorSoilMoistureListener serviceListener = new SensorSoilMoistureListener();
+ private SmDevice device;
+ private SmSensor sensor;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_sensor);
+ if (savedInstanceState == null) {
+ getFragmentManager().beginTransaction()
+ .add(R.id.container, new PlaceholderFragment())
+ .commit();
+ }
+
+ address = getIntent().getStringExtra(EXTRA_ADDRESS);
+ number = getIntent().getIntExtra(EXTRA_NUMBER, -1);
+
+ ActionBar actionBar = getActionBar();
+
+ if (actionBar != null) {
+ actionBar.setTitle(number + ": " + address);
+ }
+
+ serviceConnection = new ServiceConnection() {
+ @SuppressWarnings("unchecked")
+ @Override
+ public void onServiceConnected(ComponentName componentName, IBinder service) {
+ Log.i(TAG, "onServiceConnected");
+ soilMoistureService = ((LocalBinder<SoilMoistureService>) service).getService();
+ registerReceiver(serviceListener, SoilMoistureListener.INTENT_FILTER);
+
+ device = soilMoistureService.getDevice(address);
+ Optional<SmSensor> o = device.getSensorByNumber(number);
+
+ if (!o.isPresent()) {
+ Toast.makeText(context, "Could not find sensor #" + number + " on device " + address,
+ Toast.LENGTH_LONG).show();
+ finish();
+ }
+ sensor = o.get();
+
+ runOnUiThread(SensorActivity.this::initializeView);
+ }
+
+ @Override
+ public void onServiceDisconnected(ComponentName componentName) {
+ Log.i(TAG, "onServiceDisconnected");
+ soilMoistureService = null;
+ }
+ };
+ }
+
+ public void initializeView() {
+ // current value, last updated
+ // sync to cloud
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.menu_sensor, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ // Handle action bar item clicks here. The action bar will
+ // automatically handle clicks on the Home/Up button, so long
+ // as you specify a parent activity in AndroidManifest.xml.
+ int id = item.getItemId();
+
+ //noinspection SimplifiableIfStatement
+ if (id == R.id.action_settings) {
+ return true;
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+
+ /**
+ * A placeholder fragment containing a simple view.
+ */
+ public static class PlaceholderFragment extends Fragment {
+
+ public PlaceholderFragment() {
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View rootView = inflater.inflate(R.layout.fragment_sensor, container, false);
+ return rootView;
+ }
+ }
+
+
+
+ private class SensorSoilMoistureListener extends SoilMoistureListener {
+ }
+}