From 65d7731c0baa77f3d5fe0fd892482ca3f1269aac Mon Sep 17 00:00:00 2001 From: Graham Jones Date: Tue, 17 Nov 2015 23:02:40 +0000 Subject: [PATCH] Added a simple 'about' dialog box with menu item to show it. --- app/app.iml | 5 + app/build.gradle | 1 + app/src/main/AndroidManifest.xml | 77 +- .../org/openseizuredetector/MainActivity.java | 747 +++++++++--------- app/src/main/res/layout/about_layout.xml | 59 ++ .../main/res/menu/main_activity_actions.xml | 94 ++- app/src/main/res/values-w820dp/dimens.xml | 6 + app/src/main/res/values/dimens.xml | 5 + 8 files changed, 559 insertions(+), 435 deletions(-) create mode 100644 app/src/main/res/layout/about_layout.xml create mode 100644 app/src/main/res/values-w820dp/dimens.xml create mode 100644 app/src/main/res/values/dimens.xml diff --git a/app/app.iml b/app/app.iml index da9f13b..49f40cd 100644 --- a/app/app.iml +++ b/app/app.iml @@ -71,6 +71,8 @@ + + @@ -88,7 +90,10 @@ + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 2f73d94..b928680 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,4 +21,5 @@ android { dependencies { compile files('libs/mpandroidchartlibrary-2-0-7.jar') compile files('libs/pebblekit-2.6.0-eclipse.jar') + compile 'com.android.support:appcompat-v7:22.2.1' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 425d13c..6df4c69 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,38 +1,47 @@ - - - - - - - - - - - - - - - - - - - + package="uk.org.openseizuredetector" + android:versionCode="17" + android:versionName="2.0a" > + - + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/java/uk/org/openseizuredetector/MainActivity.java b/app/src/main/java/uk/org/openseizuredetector/MainActivity.java index 05b9d49..df678ae 100644 --- a/app/src/main/java/uk/org/openseizuredetector/MainActivity.java +++ b/app/src/main/java/uk/org/openseizuredetector/MainActivity.java @@ -28,6 +28,7 @@ package uk.org.openseizuredetector; import android.app.Activity; import android.app.ActivityManager; import android.app.ActivityManager.RunningServiceInfo; +import android.app.AlertDialog; import android.content.ComponentName; import android.content.Context; import android.content.Intent; @@ -51,6 +52,7 @@ import android.view.ViewConfiguration; import android.view.WindowManager; import android.widget.TextView; import android.widget.Button; + import java.lang.reflect.Field; import java.net.InetAddress; import java.net.NetworkInterface; @@ -58,6 +60,7 @@ import java.util.ArrayList; import java.util.Enumeration; import java.util.Timer; import java.util.TimerTask; + import org.apache.http.conn.util.InetAddressUtils; //MPAndroidChart @@ -66,8 +69,7 @@ import com.github.mikephil.charting.data.Entry; import com.github.mikephil.charting.data.LineData; import com.github.mikephil.charting.data.LineDataSet; -public class MainActivity extends Activity -{ +public class MainActivity extends Activity { static final String TAG = "MainActivity"; private int okColour = Color.BLUE; private int warnColour = Color.MAGENTA; @@ -81,50 +83,53 @@ public class MainActivity extends Activity final Handler serverStatusHandler = new Handler(); Messenger messenger = new Messenger(new ResponseHandler()); - /** Called when the activity is first created. */ + /** + * Called when the activity is first created. + */ @Override - public void onCreate(Bundle savedInstanceState) - { + public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - // Initialise the User Interface + // Initialise the User Interface setContentView(R.layout.main); /* Force display of overflow menu - from stackoverflow - * "how to force use of..." + * "how to force use of..." */ - try { - ViewConfiguration config = ViewConfiguration.get(this); - Field menuKeyField = - ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"); - if (menuKeyField!=null) { - menuKeyField.setAccessible(true); - menuKeyField.setBoolean(config,false); - } - } catch (Exception e) { - Log.v(TAG,"menubar fiddle exception: "+e.toString()); - } + try { + ViewConfiguration config = ViewConfiguration.get(this); + Field menuKeyField = + ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"); + if (menuKeyField != null) { + menuKeyField.setAccessible(true); + menuKeyField.setBoolean(config, false); + } + } catch (Exception e) { + Log.v(TAG, "menubar fiddle exception: " + e.toString()); + } // Force the screen to stay on when the app is running getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - // Deal with the 'AcceptAlarm Button' - Button button = (Button) findViewById(R.id.acceptAlarmButton); - button.setOnClickListener(new View.OnClickListener() { - public void onClick(View v) { - Log.v(TAG, "acceptAlarmButton.onClick()"); - if (mBound) { - mSdServer.acceptAlarm(); - } - } - }); + // Deal with the 'AcceptAlarm Button' + Button button = (Button) findViewById(R.id.acceptAlarmButton); + button.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + Log.v(TAG, "acceptAlarmButton.onClick()"); + if (mBound) { + mSdServer.acceptAlarm(); + } + } + }); - // start timer to refresh user interface every second. - Timer uiTimer = new Timer(); - uiTimer.schedule(new TimerTask() { - @Override - public void run() {updateServerStatus();} - }, 0, 1000); + // start timer to refresh user interface every second. + Timer uiTimer = new Timer(); + uiTimer.schedule(new TimerTask() { + @Override + public void run() { + updateServerStatus(); + } + }, 0, 1000); } @@ -132,153 +137,158 @@ public class MainActivity extends Activity * Create Action Bar */ @Override - public boolean onCreateOptionsMenu (Menu menu) - { - getMenuInflater().inflate(R.menu.main_activity_actions,menu); - mOptionsMenu = menu; - return true; + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.main_activity_actions, menu); + mOptionsMenu = menu; + return true; } - + @Override public boolean onOptionsItemSelected(MenuItem item) { - Log.v(TAG,"Option "+item.getItemId()+" selected"); - switch (item.getItemId()) { - case R.id.action_launch_pebble_app: - Log.v(TAG,"action_launch_pebble_app"); - try { - PackageManager pm = this.getPackageManager(); - Intent pebbleAppIntent = pm.getLaunchIntentForPackage("com.getpebble.android"); - this.startActivity(pebbleAppIntent); - } catch (Exception ex) { - Log.v(TAG,"exception starting pebble App "+ex.toString()); - } - return true; + Log.v(TAG, "Option " + item.getItemId() + " selected"); + switch (item.getItemId()) { + case R.id.action_launch_pebble_app: + Log.v(TAG, "action_launch_pebble_app"); + try { + PackageManager pm = this.getPackageManager(); + Intent pebbleAppIntent = pm.getLaunchIntentForPackage("com.getpebble.android"); + this.startActivity(pebbleAppIntent); + } catch (Exception ex) { + Log.v(TAG, "exception starting pebble App " + ex.toString()); + } + return true; - case R.id.action_accept_alarm: - Log.v(TAG,"action_accept_alarm"); - if (mBound) { - mSdServer.acceptAlarm(); + case R.id.action_accept_alarm: + Log.v(TAG, "action_accept_alarm"); + if (mBound) { + mSdServer.acceptAlarm(); + } + return true; + case R.id.action_start_stop: + // Respond to the start/stop server menu item. + Log.v(TAG, "action_sart_stop"); + if (mBound) { + Log.v(TAG, "Stopping Server"); + unbindFromServer(); + stopServer(); + } else { + Log.v(TAG, "Starting Server"); + startServer(); + // and bind to it so we can see its data + bindToServer(); + } + return true; + case R.id.action_test_fault_beep: + Log.v(TAG, "action_test_fault_beep"); + if (mBound) { + mSdServer.faultWarningBeep(); + } + return true; + case R.id.action_test_alarm_beep: + Log.v(TAG, "action_test_alarm_beep"); + if (mBound) { + mSdServer.alarmBeep(); + } + return true; + case R.id.action_test_warning_beep: + Log.v(TAG, "action_test_warning_beep"); + if (mBound) { + mSdServer.warningBeep(); + } + return true; + case R.id.action_test_sms_alarm: + Log.v(TAG, "action_test_sms_alarm"); + if (mBound) { + mSdServer.sendSMSAlarm(); + } + return true; + case R.id.action_settings: + Log.v(TAG, "action_settings"); + try { + Intent prefsIntent = new Intent( + MainActivity.this, + PrefActivity.class); + this.startActivity(prefsIntent); + } catch (Exception ex) { + Log.v(TAG, "exception starting settings activity " + ex.toString()); + } + return true; + case R.id.action_about: + Log.v(TAG, "action_about"); + showAbout(); + return true; + + default: + return super.onOptionsItemSelected(item); } - return true; - case R.id.action_start_stop: - // Respond to the start/stop server menu item. - Log.v(TAG,"action_sart_stop"); - if (mBound) { - Log.v(TAG,"Stopping Server"); - unbindFromServer(); - stopServer(); - } else { - Log.v(TAG,"Starting Server"); - startServer(); - // and bind to it so we can see its data - bindToServer(); - } - return true; - case R.id.action_test_fault_beep: - Log.v(TAG,"action_test_fault_beep"); - if (mBound) { - mSdServer.faultWarningBeep(); - } - return true; - case R.id.action_test_alarm_beep: - Log.v(TAG,"action_test_alarm_beep"); - if (mBound) { - mSdServer.alarmBeep(); - } - return true; - case R.id.action_test_warning_beep: - Log.v(TAG,"action_test_warning_beep"); - if (mBound) { - mSdServer.warningBeep(); - } - return true; - case R.id.action_test_sms_alarm: - Log.v(TAG,"action_test_sms_alarm"); - if (mBound) { - mSdServer.sendSMSAlarm(); - } - return true; - case R.id.action_settings: - Log.v(TAG,"action_settings"); - try { - Intent prefsIntent = new Intent( - MainActivity.this, - PrefActivity.class); - this.startActivity(prefsIntent); - } catch (Exception ex) { - Log.v(TAG,"exception starting settings activity "+ex.toString()); - } - return true; - default: - return super.onOptionsItemSelected(item); - } } @Override protected void onStart() { - super.onStart(); - SharedPreferences SP = PreferenceManager - .getDefaultSharedPreferences(getBaseContext()); - boolean audibleAlarm = SP.getBoolean("AudibleAlarm",true); - Log.v(TAG,"onStart - auidbleAlarm = "+audibleAlarm); + super.onStart(); + SharedPreferences SP = PreferenceManager + .getDefaultSharedPreferences(getBaseContext()); + boolean audibleAlarm = SP.getBoolean("AudibleAlarm", true); + Log.v(TAG, "onStart - auidbleAlarm = " + audibleAlarm); - TextView tv; - tv = (TextView) findViewById(R.id.versionTv); - String versionName = "unknown"; - // From http://stackoverflow.com/questions/4471025/ - // how-can-you-get-the-manifest-version-number- - // from-the-apps-layout-xml-variable - final PackageManager packageManager = getPackageManager(); - if (packageManager != null) { - try { - PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0); - versionName = packageInfo.versionName; - } catch (PackageManager.NameNotFoundException e) { - Log.v(TAG,"failed to find versionName"); - versionName = null; - } - } - tv.setText("OpenSeizureDetector Server Version " + versionName); + TextView tv; + tv = (TextView) findViewById(R.id.versionTv); + String versionName = "unknown"; + // From http://stackoverflow.com/questions/4471025/ + // how-can-you-get-the-manifest-version-number- + // from-the-apps-layout-xml-variable + final PackageManager packageManager = getPackageManager(); + if (packageManager != null) { + try { + PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0); + versionName = packageInfo.versionName; + } catch (PackageManager.NameNotFoundException e) { + Log.v(TAG, "failed to find versionName"); + versionName = null; + } + } + tv.setText("OpenSeizureDetector Server Version " + versionName); - if (!isServerRunning()) { - Log.v(TAG,"Server not Running - Starting Server"); - startServer(); - } else { - Log.v(TAG,"Server Already Running OK"); - } - // and bind to it so we can see its data - bindToServer(); + if (!isServerRunning()) { + Log.v(TAG, "Server not Running - Starting Server"); + startServer(); + } else { + Log.v(TAG, "Server Already Running OK"); + } + // and bind to it so we can see its data + bindToServer(); } @Override protected void onStop() { - super.onStop(); - unbindFromServer(); + super.onStop(); + unbindFromServer(); } - /** Defines callbacks for service binding, passed to bindService() */ + /** + * Defines callbacks for service binding, passed to bindService() + */ private ServiceConnection mConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName className, - IBinder service) { + IBinder service) { // We've bound to LocalService, cast the IBinder and get LocalService instance SdServer.SdBinder binder = (SdServer.SdBinder) service; mSdServer = binder.getService(); mBound = true; - if (mSdServer!=null) { - Log.v(TAG,"onServiceConnected() - Asking server to update its settings"); - mSdServer.updatePrefs(); - } - else { - Log.v(TAG,"onServiceConnected() - mSdServer is null - this is wrong!"); - } + if (mSdServer != null) { + Log.v(TAG, "onServiceConnected() - Asking server to update its settings"); + mSdServer.updatePrefs(); + } else { + Log.v(TAG, "onServiceConnected() - mSdServer is null - this is wrong!"); + } } @Override public void onServiceDisconnected(ComponentName arg0) { - Log.v(TAG,"onServiceDisonnected()"); + Log.v(TAG, "onServiceDisonnected()"); mBound = false; } }; @@ -288,68 +298,68 @@ public class MainActivity extends Activity * bind to an already running server. */ private void bindToServer() { - Log.v(TAG,"bindToServer() - binding to SdServer"); - Intent intent = new Intent(this,SdServer.class); - bindService(intent,mConnection, Context.BIND_AUTO_CREATE); + Log.v(TAG, "bindToServer() - binding to SdServer"); + Intent intent = new Intent(this, SdServer.class); + bindService(intent, mConnection, Context.BIND_AUTO_CREATE); } - /** + /** * unbind from server */ private void unbindFromServer() { - // unbind this activity from the service if it is bound. - if (mBound) { - Log.v(TAG,"unbindFromServer() - unbinding"); - try { - unbindService(mConnection); - mBound = false; - } catch (Exception ex) { - Log.e(TAG,"unbindFromServer() - error unbinding service - "+ex.toString()); - } - } else { - Log.v(TAG,"unbindFromServer() - not bound to server - ignoring"); - } + // unbind this activity from the service if it is bound. + if (mBound) { + Log.v(TAG, "unbindFromServer() - unbinding"); + try { + unbindService(mConnection); + mBound = false; + } catch (Exception ex) { + Log.e(TAG, "unbindFromServer() - error unbinding service - " + ex.toString()); + } + } else { + Log.v(TAG, "unbindFromServer() - not bound to server - ignoring"); + } } /** * Start the SdServer service */ private void startServer() { - // Start the server - sdServerIntent = new Intent(MainActivity.this,SdServer.class); - sdServerIntent.setData(Uri.parse("Start")); - getApplicationContext().startService(sdServerIntent); + // Start the server + sdServerIntent = new Intent(MainActivity.this, SdServer.class); + sdServerIntent.setData(Uri.parse("Start")); + getApplicationContext().startService(sdServerIntent); - // Change the action bar icon to show the option to stop the service. - if (mOptionsMenu!=null) { - Log.v(TAG,"Changing menu icons"); - MenuItem menuItem = mOptionsMenu.findItem(R.id.action_start_stop); - menuItem.setIcon(R.drawable.stop_server); - menuItem.setTitle("Stop Server"); - } else { - Log.v(TAG,"mOptionsMenu is null - not changing icons!"); - } + // Change the action bar icon to show the option to stop the service. + if (mOptionsMenu != null) { + Log.v(TAG, "Changing menu icons"); + MenuItem menuItem = mOptionsMenu.findItem(R.id.action_start_stop); + menuItem.setIcon(R.drawable.stop_server); + menuItem.setTitle("Stop Server"); + } else { + Log.v(TAG, "mOptionsMenu is null - not changing icons!"); + } } /** * Stop the SdServer service */ private void stopServer() { - Log.v(TAG,"stopping Server..."); + Log.v(TAG, "stopping Server..."); - // then send an Intent to stop the service. - sdServerIntent = new Intent(MainActivity.this,SdServer.class); - sdServerIntent.setData(Uri.parse("Stop")); - getApplicationContext().stopService(sdServerIntent); + // then send an Intent to stop the service. + sdServerIntent = new Intent(MainActivity.this, SdServer.class); + sdServerIntent.setData(Uri.parse("Stop")); + getApplicationContext().stopService(sdServerIntent); - // Change the action bar icon to show the option to start the service. - if (mOptionsMenu!=null) { - Log.v(TAG,"Changing action bar icons"); - mOptionsMenu.findItem(R.id.action_start_stop).setIcon(R.drawable.start_server); - mOptionsMenu.findItem(R.id.action_start_stop).setTitle("Start Server"); - } else { - Log.v(TAG,"mOptionsMenu is null, not changing icons!"); - } + // Change the action bar icon to show the option to start the service. + if (mOptionsMenu != null) { + Log.v(TAG, "Changing action bar icons"); + mOptionsMenu.findItem(R.id.action_start_stop).setIcon(R.drawable.start_server); + mOptionsMenu.findItem(R.id.action_start_stop).setTitle("Start Server"); + } else { + Log.v(TAG, "mOptionsMenu is null, not changing icons!"); + } } @@ -357,54 +367,54 @@ public class MainActivity extends Activity * Based on http://stackoverflow.com/questions/7440473/android-how-to-check-if-the-intent-service-is-still-running-or-has-stopped-running */ public boolean isServerRunning() { - //Log.v(TAG,"isServerRunning()................"); - ActivityManager manager = - (ActivityManager) getSystemService(ACTIVITY_SERVICE); - for (RunningServiceInfo service : - manager.getRunningServices(Integer.MAX_VALUE)) { - //Log.v(TAG,"Service: "+service.service.getClassName()); - if ("uk.org.openseizuredetector.SdServer" - .equals(service.service.getClassName())) { - //Log.v(TAG,"Yes!"); - return true; - } - } - //Log.v(TAG,"No!"); - return false; + //Log.v(TAG,"isServerRunning()................"); + ActivityManager manager = + (ActivityManager) getSystemService(ACTIVITY_SERVICE); + for (RunningServiceInfo service : + manager.getRunningServices(Integer.MAX_VALUE)) { + //Log.v(TAG,"Service: "+service.service.getClassName()); + if ("uk.org.openseizuredetector.SdServer" + .equals(service.service.getClassName())) { + //Log.v(TAG,"Yes!"); + return true; + } + } + //Log.v(TAG,"No!"); + return false; } - /** get the ip address of the phone. + /** + * get the ip address of the phone. * Based on http://stackoverflow.com/questions/11015912/how-do-i-get-ip-address-in-ipv4-format */ public String getLocalIpAddress() { - try { - for (Enumeration en = NetworkInterface - .getNetworkInterfaces(); en.hasMoreElements();) { - NetworkInterface intf = en.nextElement(); - for (Enumeration enumIpAddr = intf - .getInetAddresses(); enumIpAddr.hasMoreElements();) { - InetAddress inetAddress = enumIpAddr.nextElement(); - //Log.v(TAG,"ip1--:" + inetAddress); - //Log.v(TAG,"ip2--:" + inetAddress.getHostAddress()); - - // for getting IPV4 format - if (!inetAddress.isLoopbackAddress() - && InetAddressUtils.isIPv4Address( - inetAddress.getHostAddress())) { - - String ip = inetAddress.getHostAddress().toString(); - //Log.v(TAG,"ip---::" + ip); - return ip; - } - } - } - } catch (Exception ex) { - Log.e("IP Address", ex.toString()); - } - return null; - } + try { + for (Enumeration en = NetworkInterface + .getNetworkInterfaces(); en.hasMoreElements(); ) { + NetworkInterface intf = en.nextElement(); + for (Enumeration enumIpAddr = intf + .getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + InetAddress inetAddress = enumIpAddr.nextElement(); + //Log.v(TAG,"ip1--:" + inetAddress); + //Log.v(TAG,"ip2--:" + inetAddress.getHostAddress()); + // for getting IPV4 format + if (!inetAddress.isLoopbackAddress() + && InetAddressUtils.isIPv4Address( + inetAddress.getHostAddress())) { + + String ip = inetAddress.getHostAddress().toString(); + //Log.v(TAG,"ip---::" + ip); + return ip; + } + } + } + } catch (Exception ex) { + Log.e("IP Address", ex.toString()); + } + return null; + } /* @@ -412,139 +422,139 @@ public class MainActivity extends Activity * requests the ui to be updated by calling serverStatusRunnable. */ private void updateServerStatus() { - serverStatusHandler.post(serverStatusRunnable); + serverStatusHandler.post(serverStatusRunnable); } - + /* * serverStatusRunnable - called by updateServerStatus - updates the * user interface to reflect the current status received from the server. */ final Runnable serverStatusRunnable = new Runnable() { - public void run() { - TextView tv; - tv = (TextView) findViewById(R.id.textView1); - if (isServerRunning()) { - tv.setText("Server Running OK"); - tv.setBackgroundColor(okColour); - tv = (TextView)findViewById(R.id.textView2); - tv.setText("Access Server at http://" - +getLocalIpAddress() - +":8080"); - tv.setBackgroundColor(okColour); - } else { - tv.setText("*** Server Stopped ***"); - tv.setBackgroundColor(alarmColour); - } + public void run() { + TextView tv; + tv = (TextView) findViewById(R.id.textView1); + if (isServerRunning()) { + tv.setText("Server Running OK"); + tv.setBackgroundColor(okColour); + tv = (TextView) findViewById(R.id.textView2); + tv.setText("Access Server at http://" + + getLocalIpAddress() + + ":8080"); + tv.setBackgroundColor(okColour); + } else { + tv.setText("*** Server Stopped ***"); + tv.setBackgroundColor(alarmColour); + } - try { - if (mBound) { - tv = (TextView) findViewById(R.id.alarmTv); - if ((mSdServer.mSdData.alarmState==0) - && !mSdServer.mSdData.alarmStanding - && !mSdServer.mSdData.fallAlarmStanding) { - tv.setText("OK"); - tv.setBackgroundColor(okColour); - } - if ((mSdServer.mSdData.alarmState==1) - && !mSdServer.mSdData.alarmStanding - && !mSdServer.mSdData.fallAlarmStanding) { - tv.setText("WARNING"); - tv.setBackgroundColor(warnColour); - } - if (mSdServer.mSdData.alarmStanding) { - tv.setText("**ALARM**"); - tv.setBackgroundColor(alarmColour); - } - if (mSdServer.mSdData.fallAlarmStanding) { - tv.setText("**FALL**"); - tv.setBackgroundColor(alarmColour); + try { + if (mBound) { + tv = (TextView) findViewById(R.id.alarmTv); + if ((mSdServer.mSdData.alarmState == 0) + && !mSdServer.mSdData.alarmStanding + && !mSdServer.mSdData.fallAlarmStanding) { + tv.setText("OK"); + tv.setBackgroundColor(okColour); + } + if ((mSdServer.mSdData.alarmState == 1) + && !mSdServer.mSdData.alarmStanding + && !mSdServer.mSdData.fallAlarmStanding) { + tv.setText("WARNING"); + tv.setBackgroundColor(warnColour); + } + if (mSdServer.mSdData.alarmStanding) { + tv.setText("**ALARM**"); + tv.setBackgroundColor(alarmColour); + } + if (mSdServer.mSdData.fallAlarmStanding) { + tv.setText("**FALL**"); + tv.setBackgroundColor(alarmColour); + } + tv = (TextView) findViewById(R.id.pebTimeTv); + tv.setText(mSdServer.mSdData.dataTime.format("%H:%M:%S")); + // Pebble Connected Phrase + tv = (TextView) findViewById(R.id.pebbleTv); + if (mSdServer.mSdData.pebbleConnected) { + tv.setText("Pebble Watch Connected OK"); + tv.setBackgroundColor(okColour); + } else { + tv.setText("** Pebble Watch NOT Connected **"); + tv.setBackgroundColor(alarmColour); + } + tv = (TextView) findViewById(R.id.appTv); + if (mSdServer.mSdData.pebbleAppRunning) { + tv.setText("Pebble App OK"); + tv.setBackgroundColor(okColour); + } else { + tv.setText("** Pebble App NOT Running **"); + tv.setBackgroundColor(alarmColour); + } + tv = (TextView) findViewById(R.id.battTv); + tv.setText("Pebble Battery = " + String.valueOf(mSdServer.mSdData.batteryPc) + "%"); + if (mSdServer.mSdData.batteryPc <= 20) + tv.setBackgroundColor(alarmColour); + if (mSdServer.mSdData.batteryPc > 20) + tv.setBackgroundColor(warnColour); + if (mSdServer.mSdData.batteryPc >= 40) + tv.setBackgroundColor(okColour); + + tv = (TextView) findViewById(R.id.debugTv); + String specStr = ""; + for (int i = 0; i < 10; i++) + specStr = specStr + + mSdServer.mSdData.simpleSpec[i] + + ", "; + tv.setText("Spec = " + specStr); + } else { + tv = (TextView) findViewById(R.id.alarmTv); + tv.setText("Not Connected to Server"); + tv.setBackgroundColor(warnColour); } - tv = (TextView) findViewById(R.id.pebTimeTv); - tv.setText(mSdServer.mSdData.dataTime.format("%H:%M:%S")); - // Pebble Connected Phrase - tv = (TextView) findViewById(R.id.pebbleTv); - if (mSdServer.mSdData.pebbleConnected) { - tv.setText("Pebble Watch Connected OK"); - tv.setBackgroundColor(okColour); - } else { - tv.setText("** Pebble Watch NOT Connected **"); - tv.setBackgroundColor(alarmColour); - } - tv = (TextView) findViewById(R.id.appTv); - if (mSdServer.mSdData.pebbleAppRunning) { - tv.setText("Pebble App OK"); - tv.setBackgroundColor(okColour); - } else { - tv.setText("** Pebble App NOT Running **"); - tv.setBackgroundColor(alarmColour); - } - tv = (TextView) findViewById(R.id.battTv); - tv.setText("Pebble Battery = "+String.valueOf(mSdServer.mSdData.batteryPc)+"%"); - if (mSdServer.mSdData.batteryPc<=20) - tv.setBackgroundColor(alarmColour); - if (mSdServer.mSdData.batteryPc>20) - tv.setBackgroundColor(warnColour); - if (mSdServer.mSdData.batteryPc>=40) - tv.setBackgroundColor(okColour); - - tv = (TextView) findViewById(R.id.debugTv); - String specStr = ""; - for (int i=0;i<10;i++) - specStr = specStr - + mSdServer.mSdData.simpleSpec[i] - + ", "; - tv.setText("Spec = "+specStr); - } - else { - tv = (TextView) findViewById(R.id.alarmTv); - tv.setText("Not Connected to Server"); - tv.setBackgroundColor(warnColour); - } - } catch (Exception e) { - Log.v(TAG,"ServerStatusRunnable: Exception - "+e.toString()); - } - //////////////////////////////////////////////////////////// - // Produce graph - LineChart mChart = (LineChart) findViewById(R.id.chart1); - mChart.setDescription(""); - mChart.setNoDataTextDescription("You need to provide data for the chart."); - // X Values - ArrayList xVals = new ArrayList(); - for (int i = 0; i < 10; i++) { - xVals.add((i) + ""); - } - // Y Values - ArrayList yVals = new ArrayList(); - for (int i = 0; i < 10; i++) { - if (mSdServer!=null) - yVals.add(new Entry(mSdServer.mSdData.simpleSpec[i], i)); - else - yVals.add(new Entry(i, i)); - } + } catch (Exception e) { + Log.v(TAG, "ServerStatusRunnable: Exception - " + e.toString()); + } + //////////////////////////////////////////////////////////// + // Produce graph + LineChart mChart = (LineChart) findViewById(R.id.chart1); + mChart.setDescription(""); + mChart.setNoDataTextDescription("You need to provide data for the chart."); + // X Values + ArrayList xVals = new ArrayList(); + for (int i = 0; i < 10; i++) { + xVals.add((i) + ""); + } + // Y Values + ArrayList yVals = new ArrayList(); + for (int i = 0; i < 10; i++) { + if (mSdServer != null) + yVals.add(new Entry(mSdServer.mSdData.simpleSpec[i], i)); + else + yVals.add(new Entry(i, i)); + } - // create a dataset and give it a type - LineDataSet set1 = new LineDataSet(yVals, "DataSet 1"); - set1.setColor(Color.BLACK); - set1.setLineWidth(1f); + // create a dataset and give it a type + LineDataSet set1 = new LineDataSet(yVals, "DataSet 1"); + set1.setColor(Color.BLACK); + set1.setLineWidth(1f); + + ArrayList dataSets = new ArrayList(); + dataSets.add(set1); // add the datasets + LineData data = new LineData(xVals, dataSets); + //data.setValueTextSize(10f); + mChart.setData(data); + mChart.invalidate(); + } + }; - ArrayList dataSets = new ArrayList(); - dataSets.add(set1); // add the datasets - LineData data = new LineData(xVals, dataSets); - //data.setValueTextSize(10f); - mChart.setData(data); - mChart.invalidate(); - } - }; - @Override protected void onPause() { - super.onPause(); + super.onPause(); } + @Override protected void onResume() { - super.onResume(); + super.onResume(); } //public void updateUi() { @@ -553,10 +563,41 @@ public class MainActivity extends Activity // String viewText = "Unknown"; //} + private String getAppVersionName() { + String versionName = "unknown"; + // From http://stackoverflow.com/questions/4471025/ + // how-can-you-get-the-manifest-version-number- + // from-the-apps-layout-xml-variable + final PackageManager packageManager = getPackageManager(); + if (packageManager != null) { + try { + PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0); + versionName = packageInfo.versionName; + } catch (PackageManager.NameNotFoundException e) { + Log.v(TAG, "failed to find versionName"); + versionName = null; + } + } + return versionName; + } + + private void showAbout() { + View aboutView = getLayoutInflater().inflate(R.layout.about_layout, null, false); + String versionName = getAppVersionName(); + Log.v(TAG,"showAbout() - version name = "+versionName); + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setIcon(R.drawable.icon_24x24); + builder.setTitle("OpenSeizureDetector V"+versionName); + builder.setView(aboutView); + builder.create(); + builder.show(); + } + class ResponseHandler extends Handler { - @Override public void handleMessage(Message message) { - Log.v(TAG,"Message="+message.toString()); - } + @Override + public void handleMessage(Message message) { + Log.v(TAG, "Message=" + message.toString()); + } } } diff --git a/app/src/main/res/layout/about_layout.xml b/app/src/main/res/layout/about_layout.xml new file mode 100644 index 0000000..198f57e --- /dev/null +++ b/app/src/main/res/layout/about_layout.xml @@ -0,0 +1,59 @@ + + + + android:layout_width="match_parent" + android:layout_height="match_parent" + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/main_activity_actions.xml b/app/src/main/res/menu/main_activity_actions.xml index 895277a..9594e20 100644 --- a/app/src/main/res/menu/main_activity_actions.xml +++ b/app/src/main/res/menu/main_activity_actions.xml @@ -1,58 +1,56 @@ - - + + - + - + - + - + - + - + - + - - + + + diff --git a/app/src/main/res/values-w820dp/dimens.xml b/app/src/main/res/values-w820dp/dimens.xml new file mode 100644 index 0000000..63fc816 --- /dev/null +++ b/app/src/main/res/values-w820dp/dimens.xml @@ -0,0 +1,6 @@ + + + 64dp + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..47c8224 --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,5 @@ + + + 16dp + 16dp +