From ce30cb53cbec784c233857c2703c08628bf76c20 Mon Sep 17 00:00:00 2001 From: Graham Jones Date: Sun, 22 Nov 2015 07:21:51 +0000 Subject: [PATCH] Added functionality to switch data sources (network data source does not work yet though!). --- .../uk/org/openseizuredetector/OsdUtil.java | 10 ++++++++- .../org/openseizuredetector/SdDataSource.java | 1 + .../SdDataSourceNetwork.java | 14 ++++++++++++ .../SdDataSourcePebble.java | 1 + .../uk/org/openseizuredetector/SdServer.java | 22 ++++++++++++++++++- .../openseizuredetector/StartupActivity.java | 10 +++++++++ app/src/main/res/layout/startup_activity.xml | 2 +- app/src/main/res/values/datasource_list.xml | 4 ++-- 8 files changed, 59 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/uk/org/openseizuredetector/SdDataSourceNetwork.java diff --git a/app/src/main/java/uk/org/openseizuredetector/OsdUtil.java b/app/src/main/java/uk/org/openseizuredetector/OsdUtil.java index 099e101..851f681 100644 --- a/app/src/main/java/uk/org/openseizuredetector/OsdUtil.java +++ b/app/src/main/java/uk/org/openseizuredetector/OsdUtil.java @@ -36,6 +36,7 @@ import android.net.Uri; import android.os.IBinder; import android.util.Log; import android.view.MenuItem; +import android.widget.Toast; import org.apache.http.conn.util.InetAddressUtils; @@ -177,6 +178,13 @@ public class OsdUtil { return null; } - + /** + * Display a Toast message on screen. + * @param msg - message to display. + */ + public void showToast(String msg) { + Toast.makeText(mContext, msg, + Toast.LENGTH_LONG).show(); + } } diff --git a/app/src/main/java/uk/org/openseizuredetector/SdDataSource.java b/app/src/main/java/uk/org/openseizuredetector/SdDataSource.java index 86adaf6..e45e635 100644 --- a/app/src/main/java/uk/org/openseizuredetector/SdDataSource.java +++ b/app/src/main/java/uk/org/openseizuredetector/SdDataSource.java @@ -37,6 +37,7 @@ interface SdDataReceiver { */ public abstract class SdDataSource { public SdData mSdData; + public String mName = "undefined"; protected Context mContext; protected SdDataReceiver mSdDataReceiver; private String TAG = "SdDataSource"; diff --git a/app/src/main/java/uk/org/openseizuredetector/SdDataSourceNetwork.java b/app/src/main/java/uk/org/openseizuredetector/SdDataSourceNetwork.java new file mode 100644 index 0000000..de447c3 --- /dev/null +++ b/app/src/main/java/uk/org/openseizuredetector/SdDataSourceNetwork.java @@ -0,0 +1,14 @@ +package uk.org.openseizuredetector; + +import android.content.Context; + +/** + * Created by graham on 22/11/15. + */ +public class SdDataSourceNetwork extends SdDataSource { + + public SdDataSourceNetwork(Context context, SdDataReceiver sdDataReceiver) { + super(context,sdDataReceiver); + mName = "Network"; + } +} diff --git a/app/src/main/java/uk/org/openseizuredetector/SdDataSourcePebble.java b/app/src/main/java/uk/org/openseizuredetector/SdDataSourcePebble.java index 6c90f8e..9e94d9d 100644 --- a/app/src/main/java/uk/org/openseizuredetector/SdDataSourcePebble.java +++ b/app/src/main/java/uk/org/openseizuredetector/SdDataSourcePebble.java @@ -97,6 +97,7 @@ public class SdDataSourcePebble extends SdDataSource { public SdDataSourcePebble(Context context, SdDataReceiver sdDataReceiver) { super(context,sdDataReceiver); + mName = "Pebble"; } diff --git a/app/src/main/java/uk/org/openseizuredetector/SdServer.java b/app/src/main/java/uk/org/openseizuredetector/SdServer.java index f99e943..73b8a12 100644 --- a/app/src/main/java/uk/org/openseizuredetector/SdServer.java +++ b/app/src/main/java/uk/org/openseizuredetector/SdServer.java @@ -84,6 +84,7 @@ public class SdServer extends Service implements SdDataReceiver { private WakeLock mWakeLock = null; public SdDataSource mSdDataSource; public SdData mSdData; + private String mSdDataSourceName = "undefined"; // The name of the data soruce specified in the preferences. private boolean mLatchAlarms = false; private boolean mCancelAudible = false; private boolean mAudibleAlarm = false; @@ -96,6 +97,7 @@ public class SdServer extends Service implements SdDataReceiver { private boolean mLogAlarms = true; private boolean mLogData = false; private File mOutFile; + private OsdUtil mUtil; private final IBinder mBinder = new SdBinder(); @@ -134,6 +136,7 @@ public class SdServer extends Service implements SdDataReceiver { public void onCreate() { Log.v(TAG, "onCreate()"); + mUtil = new OsdUtil(getApplicationContext()); // Create a wake lock, but don't use it until the service is started. PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); @@ -152,7 +155,22 @@ public class SdServer extends Service implements SdDataReceiver { // Update preferences. Log.v(TAG, "onStartCommand() - calling updatePrefs()"); updatePrefs(); - mSdDataSource = new SdDataSourcePebble(this.getApplicationContext(), this); + + Log.v(TAG, "onStartCommand: Datasource =" + mSdDataSourceName); + switch (mSdDataSourceName) { + case "Pebble": + Log.v(TAG,"Selecting Pebble DataSource"); + mSdDataSource = new SdDataSourcePebble(this.getApplicationContext(), this); + break; + case "Network": + Log.v(TAG, "Selecting Network DataSource"); + mSdDataSource = new SdDataSourceNetwork(this.getApplicationContext(),this); + break; + default: + Log.v(TAG, "Datasource " + mSdDataSourceName + " not recognised - Exiting"); + mUtil.showToast("Datasource " + mSdDataSourceName + " not recognised - Exiting"); + return 1; + } mSdDataSource.start(); @@ -491,6 +509,8 @@ public class SdServer extends Service implements SdDataReceiver { SharedPreferences SP = PreferenceManager .getDefaultSharedPreferences(getBaseContext()); try { + mSdDataSourceName = SP.getString("DataSource","undefined"); + Log.v(TAG,"updatePrefs() - DataSource = "+mSdDataSourceName); mLatchAlarms = SP.getBoolean("LatchAlarms", false); Log.v(TAG, "updatePrefs() - mLatchAlarms = " + mLatchAlarms); mAudibleFaultWarning = SP.getBoolean("AudibleFaultWarning", true); diff --git a/app/src/main/java/uk/org/openseizuredetector/StartupActivity.java b/app/src/main/java/uk/org/openseizuredetector/StartupActivity.java index f9d4425..e69569d 100644 --- a/app/src/main/java/uk/org/openseizuredetector/StartupActivity.java +++ b/app/src/main/java/uk/org/openseizuredetector/StartupActivity.java @@ -26,11 +26,13 @@ package uk.org.openseizuredetector; import android.app.Activity; import android.content.Intent; +import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; +import android.preference.PreferenceManager; import android.util.Log; import android.view.View; import android.widget.Button; @@ -101,6 +103,14 @@ public class StartupActivity extends Activity { @Override protected void onStart() { super.onStart(); + + // Display the DataSource name + SharedPreferences SP = PreferenceManager + .getDefaultSharedPreferences(getBaseContext());; + String dataSourceName = SP.getString("DataSource","undefined"); + TextView tv = (TextView)findViewById(R.id.dataSourceTextView); + tv.setText("DataSource = "+dataSourceName); + if (mUtil.isServerRunning()) { Log.v(TAG, "onStart() - server running - stopping it"); mUtil.stopServer(); diff --git a/app/src/main/res/layout/startup_activity.xml b/app/src/main/res/layout/startup_activity.xml index 538cc3e..9349b57 100644 --- a/app/src/main/res/layout/startup_activity.xml +++ b/app/src/main/res/layout/startup_activity.xml @@ -26,7 +26,7 @@ android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:text="Starting......" - android:id="@+id/textView3" + android:id="@+id/dataSourceTextView" android:layout_gravity="center_horizontal" /> "Network" - "pebble" - "network" + "Pebble" + "Network" \ No newline at end of file