Notification icon colour changes for warning and alarm levels. Fixed issue with multiple versions of mainactivity starting on alarm.

This commit is contained in:
Graham Jones
2015-12-23 23:07:28 +00:00
parent 6d27e0dfe9
commit b3b8c941f8
5 changed files with 48 additions and 14 deletions

View File

@@ -11,6 +11,7 @@
<uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.SEND_SMS" /> <uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-feature <uses-feature
android:name="android.hardware.telephony" android:name="android.hardware.telephony"

View File

@@ -298,7 +298,8 @@ public class MainActivity extends Activity {
TextView tv; TextView tv;
if (mUtil.isServerRunning()) { if (mUtil.isServerRunning()) {
tv = (TextView) findViewById(R.id.serverStatusTv); tv = (TextView) findViewById(R.id.serverStatusTv);
tv.setText("Server Running OK"); if (mConnection.mBound)
tv.setText("Server Running OK\n"+mConnection.mSdServer.mSdDataSourceName+" Data Source");
tv.setBackgroundColor(okColour); tv.setBackgroundColor(okColour);
tv.setTextColor(okTextColour); tv.setTextColor(okTextColour);
tv = (TextView) findViewById(R.id.serverIpTv); tv = (TextView) findViewById(R.id.serverIpTv);

View File

@@ -30,14 +30,17 @@ import java.util.Map;
import fi.iki.elonen.NanoHTTPD; import fi.iki.elonen.NanoHTTPD;
import android.app.ActivityManager;
import android.app.Notification; import android.app.Notification;
import android.app.NotificationManager; import android.app.NotificationManager;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.app.Service; import android.app.Service;
import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.res.AssetManager; import android.content.res.AssetManager;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.graphics.drawable.Drawable;
import android.media.AudioManager; import android.media.AudioManager;
import android.media.ToneGenerator; import android.media.ToneGenerator;
import android.os.CountDownTimer; import android.os.CountDownTimer;
@@ -93,7 +96,7 @@ public class SdServer extends Service implements SdDataReceiver {
private WakeLock mWakeLock = null; private WakeLock mWakeLock = null;
public SdDataSource mSdDataSource; public SdDataSource mSdDataSource;
public SdData mSdData; public SdData mSdData;
private String mSdDataSourceName = "undefined"; // The name of the data soruce specified in the preferences. public String mSdDataSourceName = "undefined"; // The name of the data soruce specified in the preferences.
private boolean mLatchAlarms = false; private boolean mLatchAlarms = false;
private boolean mCancelAudible = false; private boolean mCancelAudible = false;
public boolean mAudibleAlarm = false; public boolean mAudibleAlarm = false;
@@ -137,7 +140,9 @@ public class SdServer extends Service implements SdDataReceiver {
return mBinder; return mBinder;
} }
/** used to make suer timers run on UI thread */ /**
* used to make suer timers run on UI thread
*/
private void runOnUiThread(Runnable runnable) { private void runOnUiThread(Runnable runnable) {
mHandler.post(runnable); mHandler.post(runnable);
} }
@@ -192,7 +197,7 @@ public class SdServer extends Service implements SdDataReceiver {
// Display a notification icon in the status bar of the phone to // Display a notification icon in the status bar of the phone to
// show the service is running. // show the service is running.
Log.v(TAG, "showing Notification"); Log.v(TAG, "showing Notification");
showNotification(); showNotification(0);
// Record last time we sent an SMS so we can limit rate of SMS // Record last time we sent an SMS so we can limit rate of SMS
// sending to one per minute. // sending to one per minute.
@@ -281,18 +286,32 @@ public class SdServer extends Service implements SdDataReceiver {
/** /**
* Show a notification while this service is running. * Show a notification while this service is running.
*/ */
private void showNotification() { private void showNotification(int alarmLevel) {
Log.v(TAG, "showNotification()"); Log.v(TAG, "showNotification()");
int iconId;
switch (alarmLevel) {
case 0:
iconId = R.drawable.star_of_life_24x24;
break;
case 1:
iconId = R.drawable.star_of_life_yellow_24x24;
break;
case 2:
iconId = R.drawable.star_of_life_red_24x24;
break;
default:
iconId = R.drawable.star_of_life_24x24;
}
Intent i = new Intent(getApplicationContext(), MainActivity.class); Intent i = new Intent(getApplicationContext(), MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this); NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
Notification notification = builder.setContentIntent(contentIntent) Notification notification = builder.setContentIntent(contentIntent)
.setSmallIcon(R.drawable.star_of_life_24x24) .setSmallIcon(iconId)
.setTicker("OpenSeizureDetector") .setTicker("OpenSeizureDetector")
.setAutoCancel(false) .setAutoCancel(false)
.setContentTitle("OpenSeizureDetector") .setContentTitle("OpenSeizureDetector")
.setContentText("osdtext") .setContentText(mSdDataSourceName + " Data Source")
.build(); .build();
mNM = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); mNM = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
@@ -302,10 +321,20 @@ public class SdServer extends Service implements SdDataReceiver {
// Show the main activity on the user's screen. // Show the main activity on the user's screen.
private void showMainActivity() { private void showMainActivity() {
Log.v(TAG, "showMainActivity()"); Log.v(TAG, "showMainActivity()");
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> runningTaskInfo = manager.getRunningTasks(1);
ComponentName componentInfo = runningTaskInfo.get(0).topActivity;
if (componentInfo.getPackageName().equals("uk.org.openseizuredetector")) {
Log.v(TAG,"showMainActivity(): OpenSeizureDetector Activity is already shown on top - not doing anything");
} else {
Log.v(TAG,"showMainActivity(): Showing Main Activity");
Intent i = new Intent(getApplicationContext(), MainActivity.class); Intent i = new Intent(getApplicationContext(), MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK); i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(i); this.startActivity(i);
} }
}
/** /**
* Process the data received from the SdData source. * Process the data received from the SdData source.
@@ -321,6 +350,7 @@ public class SdServer extends Service implements SdDataReceiver {
sdData.alarmPhrase = "OK"; sdData.alarmPhrase = "OK";
sdData.alarmStanding = false; sdData.alarmStanding = false;
sdData.fallAlarmStanding = false; sdData.fallAlarmStanding = false;
showNotification(0);
} }
} }
if (sdData.alarmState == 1) { if (sdData.alarmState == 1) {
@@ -339,6 +369,7 @@ public class SdServer extends Service implements SdDataReceiver {
Log.v(TAG, "WARNING"); Log.v(TAG, "WARNING");
} }
warningBeep(); warningBeep();
showNotification(1);
} }
if ((sdData.alarmState == 2) || (sdData.alarmStanding)) { if ((sdData.alarmState == 2) || (sdData.alarmStanding)) {
sdData.alarmPhrase = "ALARM"; sdData.alarmPhrase = "ALARM";
@@ -352,6 +383,7 @@ public class SdServer extends Service implements SdDataReceiver {
} }
// Make alarm beep tone // Make alarm beep tone
alarmBeep(); alarmBeep();
showNotification(2);
// Display MainActvity // Display MainActvity
showMainActivity(); showMainActivity();
// Send SMS Alarm. // Send SMS Alarm.
@@ -460,7 +492,7 @@ public class SdServer extends Service implements SdDataReceiver {
Log.v(TAG, "alarmBeep() - CancelAudible Active - silent beep..."); Log.v(TAG, "alarmBeep() - CancelAudible Active - silent beep...");
} else { } else {
if (mAudibleAlarm) { if (mAudibleAlarm) {
beep(1000); beep(3000);
Log.v(TAG, "alarmBeep()"); Log.v(TAG, "alarmBeep()");
} else { } else {
Log.v(TAG, "alarmBeep() - silent..."); Log.v(TAG, "alarmBeep() - silent...");

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 B