From c4685214d8db34166213ffa373a16af1a99401a5 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Tue, 27 Jan 2015 21:23:50 +0100 Subject: o Adding 'recently seen' on BtDevice. Updated when scanning. o Removing BtScanResult, it was never used. o Getting MainActivity to listen on device property changed so the UI is properly updated. o Adding a status bar with color to indicate if the device is available, connected or not seen. --- .../io/trygvis/soilmoisture/SensorActivity.java | 134 +++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 app/src/main/java/io/trygvis/soilmoisture/SensorActivity.java (limited to 'app/src/main/java/io/trygvis/soilmoisture/SensorActivity.java') 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) service).getService(); + registerReceiver(serviceListener, SoilMoistureListener.INTENT_FILTER); + + device = soilMoistureService.getDevice(address); + Optional 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 { + } +} -- cgit v1.2.3