Added a simple 'about' dialog box with menu item to show it.

This commit is contained in:
Graham Jones
2015-11-17 23:02:40 +00:00
parent 16a9207ded
commit 65d7731c0b
8 changed files with 559 additions and 435 deletions

View File

@@ -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<NetworkInterface> en = NetworkInterface
.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> 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<NetworkInterface> en = NetworkInterface
.getNetworkInterfaces(); en.hasMoreElements(); ) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> 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<String> xVals = new ArrayList<String>();
for (int i = 0; i < 10; i++) {
xVals.add((i) + "");
}
// Y Values
ArrayList<Entry> yVals = new ArrayList<Entry>();
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<String> xVals = new ArrayList<String>();
for (int i = 0; i < 10; i++) {
xVals.add((i) + "");
}
// Y Values
ArrayList<Entry> yVals = new ArrayList<Entry>();
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<LineDataSet> dataSets = new ArrayList<LineDataSet>();
dataSets.add(set1); // add the datasets
LineData data = new LineData(xVals, dataSets);
//data.setValueTextSize(10f);
mChart.setData(data);
mChart.invalidate();
}
};
ArrayList<LineDataSet> dataSets = new ArrayList<LineDataSet>();
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());
}
}
}