Merge branch 'V3.6'

This commit is contained in:
Graham Jones
2020-12-26 15:40:18 +00:00
25 changed files with 261 additions and 149 deletions

View File

@@ -1,5 +1,8 @@
OpenSeizureDetector Android App - Change Log OpenSeizureDetector Android App - Change Log
============================================ ============================================
V3.6.2 - Nov 2020
- Extended Polish translation further
- Improved system log output to help with answering queries from users.
V3.6.1 - Nov 2020 V3.6.1 - Nov 2020
- Extended polish translation to all settings screens. - Extended polish translation to all settings screens.
- Possible fix for issue with failing to shutdown system sometimes. - Possible fix for issue with failing to shutdown system sometimes.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -10,9 +10,9 @@
{ {
"type": "SINGLE", "type": "SINGLE",
"filters": [], "filters": [],
"versionCode": 83, "versionCode": 87,
"versionName": "3.6.1", "versionName": "3.6.2",
"outputFile": "app-release.apk" "outputFile": "app-release.apk"
} }
] ]
} }

View File

@@ -2,8 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
package="uk.org.openseizuredetector" package="uk.org.openseizuredetector"
android:versionCode="83" android:versionCode="87"
android:versionName="3.6.1"> android:versionName="3.6.2">
<!-- android:allowBackup="false" --> <!-- android:allowBackup="false" -->
<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

View File

@@ -136,7 +136,7 @@ public class MainActivity extends AppCompatActivity {
if ((mConnection.mSdServer.mSmsTimer != null) if ((mConnection.mSdServer.mSmsTimer != null)
&& (mConnection.mSdServer.mSmsTimer.mTimeLeft > 0 )){ && (mConnection.mSdServer.mSmsTimer.mTimeLeft > 0 )){
Log.v(TAG, "acceptAlarmButton.onClick() - Stopping SMS Timer"); Log.v(TAG, "acceptAlarmButton.onClick() - Stopping SMS Timer");
mUtil.showToast("SMS Alarm Cancelled"); mUtil.showToast(getString(R.string.SMSAlarmCancelledMsg));
mConnection.mSdServer.stopSmsTimer(); mConnection.mSdServer.stopSmsTimer();
} }
else { else {
@@ -357,7 +357,7 @@ public class MainActivity extends AppCompatActivity {
Log.v(TAG, "Changing menu icons"); Log.v(TAG, "Changing menu icons");
MenuItem menuItem = mOptionsMenu.findItem(R.id.action_start_stop); MenuItem menuItem = mOptionsMenu.findItem(R.id.action_start_stop);
menuItem.setIcon(R.drawable.stop_server); menuItem.setIcon(R.drawable.stop_server);
menuItem.setTitle("Stop Server"); menuItem.setTitle(R.string.StopServerTitle);
} else { } else {
Log.v(TAG, "mOptionsMenu is null - not changing icons!"); Log.v(TAG, "mOptionsMenu is null - not changing icons!");
} }
@@ -371,7 +371,7 @@ public class MainActivity extends AppCompatActivity {
if (mOptionsMenu != null) { if (mOptionsMenu != null) {
Log.v(TAG, "Changing action bar icons"); 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).setIcon(R.drawable.start_server);
mOptionsMenu.findItem(R.id.action_start_stop).setTitle("Start Server"); mOptionsMenu.findItem(R.id.action_start_stop).setTitle(R.string.StartServerTitle);
} else { } else {
Log.v(TAG, "mOptionsMenu is null, not changing icons!"); Log.v(TAG, "mOptionsMenu is null, not changing icons!");
} }
@@ -398,7 +398,7 @@ public class MainActivity extends AppCompatActivity {
if (mUtil.isServerRunning()) { if (mUtil.isServerRunning()) {
tv = (TextView) findViewById(R.id.serverStatusTv); tv = (TextView) findViewById(R.id.serverStatusTv);
if (mConnection.mBound) if (mConnection.mBound)
tv.setText(getString(R.string.ServerRunningOK) + mConnection.mSdServer.mSdDataSourceName + " " +getString(R.string.DataSource)); tv.setText(getString(R.string.ServerRunningOK) + getString(R.string.DataSource) + " = " + mConnection.mSdServer.mSdDataSourceName);
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

@@ -71,6 +71,7 @@ import org.apache.http.conn.util.InetAddressUtils;
import java.io.File; import java.io.File;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.IOException;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.NetworkInterface; import java.net.NetworkInterface;
import java.util.AbstractList; import java.util.AbstractList;
@@ -142,7 +143,7 @@ public class OsdUtil implements ActivityCompat.OnRequestPermissionsResultCallbac
} catch (Exception ex) { } catch (Exception ex) {
Log.v(TAG, "updatePrefs() - Problem parsing preferences!"); Log.v(TAG, "updatePrefs() - Problem parsing preferences!");
showToast("Problem Parsing Preferences - Something won't work - Please go back to Settings and correct it!"); showToast(mContext.getString(R.string.ParsePreferenceWarning));
} }
} }
@@ -171,8 +172,7 @@ public class OsdUtil implements ActivityCompat.OnRequestPermissionsResultCallbac
if (nServers != 0) { if (nServers != 0) {
Log.v(TAG, "isServerRunning() - " + nServers + " instances are running"); Log.v(TAG, "isServerRunning() - " + nServers + " instances are running");
return true; return true;
} } else
else
return false; return false;
} }
@@ -181,16 +181,16 @@ public class OsdUtil implements ActivityCompat.OnRequestPermissionsResultCallbac
*/ */
public void startServer() { public void startServer() {
// Start the server // Start the server
Log.d(TAG,"OsdUtil.startServer()"); Log.d(TAG, "OsdUtil.startServer()");
writeToSysLogFile("startServer() - starting server"); writeToSysLogFile("startServer() - starting server");
Intent sdServerIntent; Intent sdServerIntent;
sdServerIntent = new Intent(mContext, SdServer.class); sdServerIntent = new Intent(mContext, SdServer.class);
sdServerIntent.setData(Uri.parse("Start")); sdServerIntent.setData(Uri.parse("Start"));
if (Build.VERSION.SDK_INT >= 26) { if (Build.VERSION.SDK_INT >= 26) {
Log.i(TAG,"Starting Foreground Service (Android 8 and above)"); Log.i(TAG, "Starting Foreground Service (Android 8 and above)");
mContext.startForegroundService(sdServerIntent); mContext.startForegroundService(sdServerIntent);
} else { } else {
Log.i(TAG,"Starting Normal Service (Pre-Android 8)"); Log.i(TAG, "Starting Normal Service (Pre-Android 8)");
mContext.startService(sdServerIntent); mContext.startService(sdServerIntent);
} }
} }
@@ -219,7 +219,7 @@ public class OsdUtil implements ActivityCompat.OnRequestPermissionsResultCallbac
Intent intent = new Intent(sdServiceConnection.mContext, SdServer.class); Intent intent = new Intent(sdServiceConnection.mContext, SdServer.class);
activity.bindService(intent, sdServiceConnection, Context.BIND_AUTO_CREATE); activity.bindService(intent, sdServiceConnection, Context.BIND_AUTO_CREATE);
mNbound = mNbound + 1; mNbound = mNbound + 1;
Log.i(TAG,"OsdUtil.bindToServer() - mNbound = "+mNbound); Log.i(TAG, "OsdUtil.bindToServer() - mNbound = " + mNbound);
} }
/** /**
@@ -234,16 +234,16 @@ public class OsdUtil implements ActivityCompat.OnRequestPermissionsResultCallbac
activity.unbindService(sdServiceConnection); activity.unbindService(sdServiceConnection);
sdServiceConnection.mBound = false; sdServiceConnection.mBound = false;
mNbound = mNbound - 1; mNbound = mNbound - 1;
Log.i(TAG,"OsdUtil.unBindFromServer() - mNbound = "+mNbound); Log.i(TAG, "OsdUtil.unBindFromServer() - mNbound = " + mNbound);
} catch (Exception ex) { } catch (Exception ex) {
Log.e(TAG, "unbindFromServer() - error unbinding service - " + ex.toString()); Log.e(TAG, "unbindFromServer() - error unbinding service - " + ex.toString());
writeToSysLogFile("unbindFromServer() - error unbinding service - " +ex.toString()); writeToSysLogFile("unbindFromServer() - error unbinding service - " + ex.toString());
Log.i(TAG,"OsdUtil.unBindFromServer() - mNbound = "+mNbound); Log.i(TAG, "OsdUtil.unBindFromServer() - mNbound = " + mNbound);
} }
} else { } else {
Log.i(TAG, "unbindFromServer() - not bound to server - ignoring"); Log.i(TAG, "unbindFromServer() - not bound to server - ignoring");
writeToSysLogFile("unbindFromServer() - not bound to server - ignoring"); writeToSysLogFile("unbindFromServer() - not bound to server - ignoring");
Log.i(TAG,"OsdUtil.unBindFromServer() - mNbound = "+mNbound); Log.i(TAG, "OsdUtil.unBindFromServer() - mNbound = " + mNbound);
} }
} }
@@ -299,7 +299,7 @@ public class OsdUtil implements ActivityCompat.OnRequestPermissionsResultCallbac
public boolean isMobileDataActive() { public boolean isMobileDataActive() {
// return true if we are using mobile data, otherwise return false // return true if we are using mobile data, otherwise return false
ConnectivityManager cm = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE); ConnectivityManager cm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) { if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) {
return true; return true;
@@ -310,7 +310,7 @@ public class OsdUtil implements ActivityCompat.OnRequestPermissionsResultCallbac
public boolean isNetworkConnected() { public boolean isNetworkConnected() {
// return true if we have a network connection, otherwise false. // return true if we have a network connection, otherwise false.
ConnectivityManager cm = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE); ConnectivityManager cm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
return (activeNetwork.isConnected()); return (activeNetwork.isConnected());
} }
@@ -332,35 +332,38 @@ public class OsdUtil implements ActivityCompat.OnRequestPermissionsResultCallbac
/** /**
* Write a message to the system log file, provided mLogSystem is true. * Write a message to the system log file, provided mLogSystem is true.
*
* @param msgStr * @param msgStr
*/ */
public void writeToSysLogFile(String msgStr) { public void writeToSysLogFile(String msgStr) {
if (mLogSystem) if (mLogSystem)
writeToLogFile(SYSLOG,msgStr); writeToLogFile(SYSLOG, msgStr);
else else
Log.v(TAG,"writeToSysLogFile - mLogSystem False so not writing"); Log.v(TAG, "writeToSysLogFile - mLogSystem False so not writing");
} }
/** /**
* Write a message to the alarm log file, provided mLogAlarms is true. * Write a message to the alarm log file, provided mLogAlarms is true.
*
* @param msgStr * @param msgStr
*/ */
public void writeToAlarmLogFile(String msgStr) { public void writeToAlarmLogFile(String msgStr) {
if (mLogAlarms) if (mLogAlarms)
writeToLogFile(ALARMLOG,msgStr); writeToLogFile(ALARMLOG, msgStr);
else else
Log.v(TAG,"writeToAlarmLogFile - mLogAlarms False so not writing"); Log.v(TAG, "writeToAlarmLogFile - mLogAlarms False so not writing");
} }
/** /**
* Write a message to the data log file, provided mLogData is true. * Write a message to the data log file, provided mLogData is true.
*
* @param msgStr * @param msgStr
*/ */
public void writeToDataLogFile(String msgStr) { public void writeToDataLogFile(String msgStr) {
if (mLogData) if (mLogData)
writeToLogFile(DATALOG,msgStr); writeToLogFile(DATALOG, msgStr);
else else
Log.v(TAG,"writeToDataLogFile - mLogData False so not writing"); Log.v(TAG, "writeToDataLogFile - mLogData False so not writing");
} }
@@ -380,12 +383,11 @@ public class OsdUtil implements ActivityCompat.OnRequestPermissionsResultCallbac
if (ContextCompat.checkSelfPermission(mContext, if (ContextCompat.checkSelfPermission(mContext,
Manifest.permission.WRITE_EXTERNAL_STORAGE) Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) { != PackageManager.PERMISSION_GRANTED) {
Log.e(TAG,"ERROR: We do not have permission to write to external storage"); Log.e(TAG, "ERROR: We do not have permission to write to external storage");
} else { } else {
if (isExternalStorageWritable()) { if (isExternalStorageWritable()) {
try { try {
FileWriter of = new FileWriter(getDataStorageDir().toString() FileWriter of = new FileWriter(getDataStorageDir() + "/" + fname, true);
+ "/" + fname, true);
if (msgStr != null) { if (msgStr != null) {
String dateTimeStr = tnow.format("%Y-%m-%d %H:%M:%S"); String dateTimeStr = tnow.format("%Y-%m-%d %H:%M:%S");
//Log.v(TAG, "writing msgStr"); //Log.v(TAG, "writing msgStr");
@@ -396,7 +398,10 @@ public class OsdUtil implements ActivityCompat.OnRequestPermissionsResultCallbac
of.close(); of.close();
} catch (Exception ex) { } catch (Exception ex) {
Log.e(TAG, "writeToLogFile - error " + ex.toString()); Log.e(TAG, "writeToLogFile - error " + ex.toString());
showToast("ERROR Writing to Log File"); for (int i = 0; i < (ex.getStackTrace().length); i++) {
Log.e(TAG, "writeToLogFile - error " + ex.getStackTrace()[i]);
}
showToast(mContext.getString(R.string.ErrorWritingLogFileWarning) + ex.toString());
} }
} else { } else {
Log.e(TAG, "ERROR - Can not Write to External Folder"); Log.e(TAG, "ERROR - Can not Write to External Folder");
@@ -404,6 +409,16 @@ public class OsdUtil implements ActivityCompat.OnRequestPermissionsResultCallbac
} }
} }
public File[] getDataFilesList() {
File[] files = getDataStorageDir().listFiles();
Log.d("Files", "Size: "+ files.length);
for (int i = 0; i < files.length; i++)
{
Log.d("Files", "FileName:" + files[i].getName());
}
return(files);
}
/* Checks if external storage is available for read and write */ /* Checks if external storage is available for read and write */
public boolean isExternalStorageWritable() { public boolean isExternalStorageWritable() {
String state = Environment.getExternalStorageState(); String state = Environment.getExternalStorageState();
@@ -415,18 +430,11 @@ public class OsdUtil implements ActivityCompat.OnRequestPermissionsResultCallbac
public File getDataStorageDir() { public File getDataStorageDir() {
// Get the directory for the user's public directory. // Get the directory for the user's public directory.
File file = File file = mContext.getExternalFilesDir(null);
new File(Environment.getExternalStorageDirectory()
, "OpenSeizureDetector");
if (!file.isDirectory()) {
Log.i(TAG,"getDataStorageDir() - creating directory");
if (!file.mkdirs()) {
Log.e(TAG, "Failed to create directory");
}
}
return file; return file;
} }
public String getPreferredPebbleAppPackageName() { public String getPreferredPebbleAppPackageName() {
// returns the package name of the preferred Android Pebble App. // returns the package name of the preferred Android Pebble App.
return "com.getpebble.android.basalt"; return "com.getpebble.android.basalt";
@@ -456,8 +464,8 @@ public class OsdUtil implements ActivityCompat.OnRequestPermissionsResultCallbac
public boolean arePermissionsOK() { public boolean arePermissionsOK() {
boolean allOk = true; boolean allOk = true;
Log.v(TAG,"arePermissionsOK"); Log.v(TAG, "arePermissionsOK");
for (int i = 0; i< REQUIRED_PERMISSIONS.length; i++) { for (int i = 0; i < REQUIRED_PERMISSIONS.length; i++) {
if (ContextCompat.checkSelfPermission(mContext, REQUIRED_PERMISSIONS[i]) if (ContextCompat.checkSelfPermission(mContext, REQUIRED_PERMISSIONS[i])
!= PackageManager.PERMISSION_GRANTED) { != PackageManager.PERMISSION_GRANTED) {
Log.i(TAG, REQUIRED_PERMISSIONS[i] + " Permission Not Granted"); Log.i(TAG, REQUIRED_PERMISSIONS[i] + " Permission Not Granted");
@@ -469,8 +477,8 @@ public class OsdUtil implements ActivityCompat.OnRequestPermissionsResultCallbac
public boolean areSMSPermissionsOK() { public boolean areSMSPermissionsOK() {
boolean allOk = true; boolean allOk = true;
Log.v(TAG,"areSMSPermissionsOK()"); Log.v(TAG, "areSMSPermissionsOK()");
for (int i = 0; i< SMS_PERMISSIONS.length; i++) { for (int i = 0; i < SMS_PERMISSIONS.length; i++) {
if (ContextCompat.checkSelfPermission(mContext, SMS_PERMISSIONS[i]) if (ContextCompat.checkSelfPermission(mContext, SMS_PERMISSIONS[i])
!= PackageManager.PERMISSION_GRANTED) { != PackageManager.PERMISSION_GRANTED) {
Log.i(TAG, SMS_PERMISSIONS[i] + " Permission Not Granted"); Log.i(TAG, SMS_PERMISSIONS[i] + " Permission Not Granted");
@@ -481,10 +489,9 @@ public class OsdUtil implements ActivityCompat.OnRequestPermissionsResultCallbac
} }
public void requestPermissions(Activity activity) { public void requestPermissions(Activity activity) {
if (mPermissionsRequested) { if (mPermissionsRequested) {
Log.i(TAG,"requestPermissions() - request already sent - not doing anything"); Log.i(TAG, "requestPermissions() - request already sent - not doing anything");
} else { } else {
Log.i(TAG, "requestPermissions() - requesting permissions"); Log.i(TAG, "requestPermissions() - requesting permissions");
for (int i = 0; i < REQUIRED_PERMISSIONS.length; i++) { for (int i = 0; i < REQUIRED_PERMISSIONS.length; i++) {
@@ -502,7 +509,7 @@ public class OsdUtil implements ActivityCompat.OnRequestPermissionsResultCallbac
public void requestSMSPermissions(Activity activity) { public void requestSMSPermissions(Activity activity) {
if (mSMSPermissionsRequested) { if (mSMSPermissionsRequested) {
Log.i(TAG,"requestSMSPermissions() - request already sent - not doing anything"); Log.i(TAG, "requestSMSPermissions() - request already sent - not doing anything");
} else { } else {
Log.i(TAG, "requestSMSPermissions() - requesting permissions"); Log.i(TAG, "requestSMSPermissions() - requesting permissions");
for (int i = 0; i < SMS_PERMISSIONS.length; i++) { for (int i = 0; i < SMS_PERMISSIONS.length; i++) {
@@ -522,8 +529,8 @@ public class OsdUtil implements ActivityCompat.OnRequestPermissionsResultCallbac
@Override @Override
public void onRequestPermissionsResult(int requestCode, public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) { String permissions[], int[] grantResults) {
Log.i(TAG,"onRequestPermissionsResult - Permission" + permissions + " = " + grantResults); Log.i(TAG, "onRequestPermissionsResult - Permission" + permissions + " = " + grantResults);
showToast("Permissions Changed - restarting server"); showToast(mContext.getString(R.string.RestartingServerMsg));
stopServer(); stopServer();
// Wait 0.1 second to give the server chance to shutdown, then re-start it // Wait 0.1 second to give the server chance to shutdown, then re-start it
mHandler.postDelayed(new Runnable() { mHandler.postDelayed(new Runnable() {

View File

@@ -128,6 +128,7 @@ public abstract class SdDataSource {
public void start() { public void start() {
Log.v(TAG, "start()"); Log.v(TAG, "start()");
mUtil.writeToSysLogFile("SdDataSource.start()");
updatePrefs(); updatePrefs();
// Start timer to check status of watch regularly. // Start timer to check status of watch regularly.
mDataStatusTime = new Time(Time.getCurrentTimezone()); mDataStatusTime = new Time(Time.getCurrentTimezone());
@@ -184,6 +185,7 @@ public abstract class SdDataSource {
*/ */
public void stop() { public void stop() {
Log.v(TAG, "stop()"); Log.v(TAG, "stop()");
mUtil.writeToSysLogFile("SDDataSource.stop()");
try { try {
// Stop the status timer // Stop the status timer
if (mStatusTimer != null) { if (mStatusTimer != null) {
@@ -613,7 +615,7 @@ public abstract class SdDataSource {
// Only make audible warning beep if we have not received data for more than mFaultTimerPeriod seconds. // Only make audible warning beep if we have not received data for more than mFaultTimerPeriod seconds.
if (tdiff > (mDataUpdatePeriod + mFaultTimerPeriod) * 1000) { if (tdiff > (mDataUpdatePeriod + mFaultTimerPeriod) * 1000) {
Log.v(TAG, "getStatus() - Watch App Not Running"); Log.v(TAG, "getStatus() - Watch App Not Running");
mUtil.writeToSysLogFile("SDDataSourceBLE.getStatus() - Watch App not Running"); mUtil.writeToSysLogFile("SDDataSource.getStatus() - Watch App not Running");
//mDataStatusTime.setToNow(); //mDataStatusTime.setToNow();
mSdData.roiPower = -1; mSdData.roiPower = -1;
mSdData.specPower = -1; mSdData.specPower = -1;
@@ -662,7 +664,7 @@ public abstract class SdDataSource {
*/ */
public void updatePrefs() { public void updatePrefs() {
Log.v(TAG, "updatePrefs()"); Log.v(TAG, "updatePrefs()");
mUtil.writeToSysLogFile("SDDataSourceBLE.updatePrefs()"); mUtil.writeToSysLogFile("SDDataSource.updatePrefs()");
SharedPreferences SP = PreferenceManager SharedPreferences SP = PreferenceManager
.getDefaultSharedPreferences(mContext); .getDefaultSharedPreferences(mContext);
try { try {
@@ -671,8 +673,10 @@ public abstract class SdDataSource {
String appRestartTimeoutStr = SP.getString("AppRestartTimeout", "10"); String appRestartTimeoutStr = SP.getString("AppRestartTimeout", "10");
mAppRestartTimeout = Integer.parseInt(appRestartTimeoutStr); mAppRestartTimeout = Integer.parseInt(appRestartTimeoutStr);
Log.v(TAG, "updatePrefs() - mAppRestartTimeout = " + mAppRestartTimeout); Log.v(TAG, "updatePrefs() - mAppRestartTimeout = " + mAppRestartTimeout);
mUtil.writeToSysLogFile( "updatePrefs() - mAppRestartTimeout = " + mAppRestartTimeout);
} catch (Exception ex) { } catch (Exception ex) {
Log.v(TAG, "updatePrefs() - Problem with AppRestartTimeout preference!"); Log.v(TAG, "updatePrefs() - Problem with AppRestartTimeout preference!");
mUtil.writeToSysLogFile( "updatePrefs() - Problem with AppRestartTimeout preference!");
Toast toast = Toast.makeText(mContext, "Problem Parsing AppRestartTimeout Preference", Toast.LENGTH_SHORT); Toast toast = Toast.makeText(mContext, "Problem Parsing AppRestartTimeout Preference", Toast.LENGTH_SHORT);
toast.show(); toast.show();
} }
@@ -682,8 +686,10 @@ public abstract class SdDataSource {
String faultTimerPeriodStr = SP.getString("FaultTimerPeriod", "30"); String faultTimerPeriodStr = SP.getString("FaultTimerPeriod", "30");
mFaultTimerPeriod = Integer.parseInt(faultTimerPeriodStr); mFaultTimerPeriod = Integer.parseInt(faultTimerPeriodStr);
Log.v(TAG, "updatePrefs() - mFaultTimerPeriod = " + mFaultTimerPeriod); Log.v(TAG, "updatePrefs() - mFaultTimerPeriod = " + mFaultTimerPeriod);
mUtil.writeToSysLogFile( "updatePrefs() - mFaultTimerPeriod = " + mFaultTimerPeriod);
} catch (Exception ex) { } catch (Exception ex) {
Log.v(TAG, "updatePrefs() - Problem with FaultTimerPeriod preference!"); Log.v(TAG, "updatePrefs() - Problem with FaultTimerPeriod preference!");
mUtil.writeToSysLogFile( "updatePrefs() - Problem with FaultTimerPeriod preference!");
Toast toast = Toast.makeText(mContext, "Problem Parsing FaultTimerPeriod Preference", Toast.LENGTH_SHORT); Toast toast = Toast.makeText(mContext, "Problem Parsing FaultTimerPeriod Preference", Toast.LENGTH_SHORT);
toast.show(); toast.show();
} }
@@ -694,106 +700,130 @@ public abstract class SdDataSource {
prefStr = SP.getString("BLE_Device_Addr", "SET_FROM_XML"); prefStr = SP.getString("BLE_Device_Addr", "SET_FROM_XML");
mBleDeviceAddr = prefStr; mBleDeviceAddr = prefStr;
Log.v(TAG, "mBLEDeviceAddr=" + mBleDeviceAddr); Log.v(TAG, "mBLEDeviceAddr=" + mBleDeviceAddr);
mUtil.writeToSysLogFile( "mBLEDeviceAddr=" + mBleDeviceAddr);
prefStr = SP.getString("BLE_Device_Name", "SET_FROM_XML"); prefStr = SP.getString("BLE_Device_Name", "SET_FROM_XML");
mBleDeviceName = prefStr; mBleDeviceName = prefStr;
Log.v(TAG, "mBLEDeviceName=" + mBleDeviceName); Log.v(TAG, "mBLEDeviceName=" + mBleDeviceName);
mUtil.writeToSysLogFile( "mBLEDeviceName=" + mBleDeviceName);
prefStr = SP.getString("PebbleDebug", "SET_FROM_XML"); prefStr = SP.getString("PebbleDebug", "SET_FROM_XML");
if (prefStr != null) { if (prefStr != null) {
mDebug = (short) Integer.parseInt(prefStr); mDebug = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() Debug = " + mDebug); Log.v(TAG, "updatePrefs() Debug = " + mDebug);
mUtil.writeToSysLogFile( "updatePrefs() Debug = " + mDebug);
prefStr = SP.getString("PebbleDisplaySpectrum", "SET_FROM_XML"); prefStr = SP.getString("PebbleDisplaySpectrum", "SET_FROM_XML");
mDisplaySpectrum = (short) Integer.parseInt(prefStr); mDisplaySpectrum = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() DisplaySpectrum = " + mDisplaySpectrum); Log.v(TAG, "updatePrefs() DisplaySpectrum = " + mDisplaySpectrum);
mUtil.writeToSysLogFile( "updatePrefs() DisplaySpectrum = " + mDisplaySpectrum);
prefStr = SP.getString("PebbleUpdatePeriod", "SET_FROM_XML"); prefStr = SP.getString("PebbleUpdatePeriod", "SET_FROM_XML");
mDataUpdatePeriod = (short) Integer.parseInt(prefStr); mDataUpdatePeriod = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() DataUpdatePeriod = " + mDataUpdatePeriod); Log.v(TAG, "updatePrefs() DataUpdatePeriod = " + mDataUpdatePeriod);
mUtil.writeToSysLogFile( "updatePrefs() DataUpdatePeriod = " + mDataUpdatePeriod);
prefStr = SP.getString("MutePeriod", "SET_FROM_XML"); prefStr = SP.getString("MutePeriod", "SET_FROM_XML");
mMutePeriod = (short) Integer.parseInt(prefStr); mMutePeriod = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() MutePeriod = " + mMutePeriod); Log.v(TAG, "updatePrefs() MutePeriod = " + mMutePeriod);
mUtil.writeToSysLogFile( "updatePrefs() MutePeriod = " + mMutePeriod);
prefStr = SP.getString("ManAlarmPeriod", "SET_FROM_XML"); prefStr = SP.getString("ManAlarmPeriod", "SET_FROM_XML");
mManAlarmPeriod = (short) Integer.parseInt(prefStr); mManAlarmPeriod = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() ManAlarmPeriod = " + mManAlarmPeriod); Log.v(TAG, "updatePrefs() ManAlarmPeriod = " + mManAlarmPeriod);
mUtil.writeToSysLogFile( "updatePrefs() ManAlarmPeriod = " + mManAlarmPeriod);
prefStr = SP.getString("PebbleSdMode", "SET_FROM_XML"); prefStr = SP.getString("PebbleSdMode", "SET_FROM_XML");
mPebbleSdMode = (short) Integer.parseInt(prefStr); mPebbleSdMode = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() PebbleSdMode = " + mPebbleSdMode); Log.v(TAG, "updatePrefs() PebbleSdMode = " + mPebbleSdMode);
mUtil.writeToSysLogFile( "updatePrefs() PebbleSdMode = " + mPebbleSdMode);
prefStr = SP.getString("SampleFreq", "SET_FROM_XML"); prefStr = SP.getString("SampleFreq", "SET_FROM_XML");
mSampleFreq = (short) Integer.parseInt(prefStr); mSampleFreq = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() SampleFreq = " + mSampleFreq); Log.v(TAG, "updatePrefs() SampleFreq = " + mSampleFreq);
mUtil.writeToSysLogFile( "updatePrefs() SampleFreq = " + mSampleFreq);
prefStr = SP.getString("SamplePeriod", "SET_FROM_XML"); prefStr = SP.getString("SamplePeriod", "SET_FROM_XML");
mSamplePeriod = (short) Integer.parseInt(prefStr); mSamplePeriod = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() AnalysisPeriod = " + mSamplePeriod); Log.v(TAG, "updatePrefs() AnalysisPeriod = " + mSamplePeriod);
mUtil.writeToSysLogFile( "updatePrefs() AnalysisPeriod = " + mSamplePeriod);
prefStr = SP.getString("AlarmFreqMin", "SET_FROM_XML"); prefStr = SP.getString("AlarmFreqMin", "SET_FROM_XML");
mAlarmFreqMin = (short) Integer.parseInt(prefStr); mAlarmFreqMin = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() AlarmFreqMin = " + mAlarmFreqMin); Log.v(TAG, "updatePrefs() AlarmFreqMin = " + mAlarmFreqMin);
mUtil.writeToSysLogFile( "updatePrefs() AlarmFreqMin = " + mAlarmFreqMin);
prefStr = SP.getString("AlarmFreqMax", "SET_FROM_XML"); prefStr = SP.getString("AlarmFreqMax", "SET_FROM_XML");
mAlarmFreqMax = (short) Integer.parseInt(prefStr); mAlarmFreqMax = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() AlarmFreqMax = " + mAlarmFreqMax); Log.v(TAG, "updatePrefs() AlarmFreqMax = " + mAlarmFreqMax);
mUtil.writeToSysLogFile("updatePrefs() AlarmFreqMax = " + mAlarmFreqMax);
prefStr = SP.getString("WarnTime", "SET_FROM_XML"); prefStr = SP.getString("WarnTime", "SET_FROM_XML");
mWarnTime = (short) Integer.parseInt(prefStr); mWarnTime = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() WarnTime = " + mWarnTime); Log.v(TAG, "updatePrefs() WarnTime = " + mWarnTime);
mUtil.writeToSysLogFile( "updatePrefs() WarnTime = " + mWarnTime);
prefStr = SP.getString("AlarmTime", "SET_FROM_XML"); prefStr = SP.getString("AlarmTime", "SET_FROM_XML");
mAlarmTime = (short) Integer.parseInt(prefStr); mAlarmTime = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() AlarmTime = " + mAlarmTime); Log.v(TAG, "updatePrefs() AlarmTime = " + mAlarmTime);
mUtil.writeToSysLogFile( "updatePrefs() AlarmTime = " + mAlarmTime);
prefStr = SP.getString("AlarmThresh", "SET_FROM_XML"); prefStr = SP.getString("AlarmThresh", "SET_FROM_XML");
mAlarmThresh = (short) Integer.parseInt(prefStr); mAlarmThresh = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() AlarmThresh = " + mAlarmThresh); Log.v(TAG, "updatePrefs() AlarmThresh = " + mAlarmThresh);
mUtil.writeToSysLogFile( "updatePrefs() AlarmThresh = " + mAlarmThresh);
prefStr = SP.getString("AlarmRatioThresh", "SET_FROM_XML"); prefStr = SP.getString("AlarmRatioThresh", "SET_FROM_XML");
mAlarmRatioThresh = (short) Integer.parseInt(prefStr); mAlarmRatioThresh = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() AlarmRatioThresh = " + mAlarmRatioThresh); Log.v(TAG, "updatePrefs() AlarmRatioThresh = " + mAlarmRatioThresh);
mUtil.writeToSysLogFile( "updatePrefs() AlarmRatioThresh = " + mAlarmRatioThresh);
mFallActive = SP.getBoolean("FallActive", false); mFallActive = SP.getBoolean("FallActive", false);
Log.v(TAG, "updatePrefs() FallActive = " + mFallActive); Log.v(TAG, "updatePrefs() FallActive = " + mFallActive);
mUtil.writeToSysLogFile( "updatePrefs() FallActive = " + mFallActive);
prefStr = SP.getString("FallThreshMin", "SET_FROM_XML"); prefStr = SP.getString("FallThreshMin", "SET_FROM_XML");
mFallThreshMin = (short) Integer.parseInt(prefStr); mFallThreshMin = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() FallThreshMin = " + mFallThreshMin); Log.v(TAG, "updatePrefs() FallThreshMin = " + mFallThreshMin);
mUtil.writeToSysLogFile( "updatePrefs() FallThreshMin = " + mFallThreshMin);
prefStr = SP.getString("FallThreshMax", "SET_FROM_XML"); prefStr = SP.getString("FallThreshMax", "SET_FROM_XML");
mFallThreshMax = (short) Integer.parseInt(prefStr); mFallThreshMax = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() FallThreshMax = " + mFallThreshMax); Log.v(TAG, "updatePrefs() FallThreshMax = " + mFallThreshMax);
mUtil.writeToSysLogFile( "updatePrefs() FallThreshMax = " + mFallThreshMax);
prefStr = SP.getString("FallWindow", "SET_FROM_XML"); prefStr = SP.getString("FallWindow", "SET_FROM_XML");
mFallWindow = (short) Integer.parseInt(prefStr); mFallWindow = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() FallWindow = " + mFallWindow); Log.v(TAG, "updatePrefs() FallWindow = " + mFallWindow);
mUtil.writeToSysLogFile( "updatePrefs() FallWindow = " + mFallWindow);
mSdData.mHRAlarmActive = SP.getBoolean("HRAlarmActive", false); mSdData.mHRAlarmActive = SP.getBoolean("HRAlarmActive", false);
Log.v(TAG, "updatePrefs() HRAlarmActive = " + mSdData.mHRAlarmActive); Log.v(TAG, "updatePrefs() HRAlarmActive = " + mSdData.mHRAlarmActive);
mUtil.writeToSysLogFile( "updatePrefs() HRAlarmActive = " + mSdData.mHRAlarmActive);
mSdData.mHRNullAsAlarm = SP.getBoolean("HRNullAsAlarm", false); mSdData.mHRNullAsAlarm = SP.getBoolean("HRNullAsAlarm", false);
Log.v(TAG, "updatePrefs() HRNullAsAlarm = " + mSdData.mHRNullAsAlarm); Log.v(TAG, "updatePrefs() HRNullAsAlarm = " + mSdData.mHRNullAsAlarm);
mUtil.writeToSysLogFile( "updatePrefs() HRNullAsAlarm = " + mSdData.mHRNullAsAlarm);
prefStr = SP.getString("HRThreshMin", "SET_FROM_XML"); prefStr = SP.getString("HRThreshMin", "SET_FROM_XML");
mSdData.mHRThreshMin = (short) Integer.parseInt(prefStr); mSdData.mHRThreshMin = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() HRThreshMin = " + mSdData.mHRThreshMin); Log.v(TAG, "updatePrefs() HRThreshMin = " + mSdData.mHRThreshMin);
mUtil.writeToSysLogFile( "updatePrefs() HRThreshMin = " + mSdData.mHRThreshMin);
prefStr = SP.getString("HRThreshMax", "SET_FROM_XML"); prefStr = SP.getString("HRThreshMax", "SET_FROM_XML");
mSdData.mHRThreshMax = (short) Integer.parseInt(prefStr); mSdData.mHRThreshMax = (short) Integer.parseInt(prefStr);
Log.v(TAG, "updatePrefs() HRThreshMax = " + mSdData.mHRThreshMax); Log.v(TAG, "updatePrefs() HRThreshMax = " + mSdData.mHRThreshMax);
mUtil.writeToSysLogFile( "updatePrefs() HRThreshMax = " + mSdData.mHRThreshMax);
} else { } else {
Log.v(TAG, "updatePrefs() - prefStr is null - WHY????"); Log.v(TAG, "updatePrefs() - prefStr is null - WHY????");
mUtil.writeToSysLogFile("SDDataSourceBLE.updatePrefs() - prefStr is null - WHY??"); mUtil.writeToSysLogFile("SDDataSource.updatePrefs() - prefStr is null - WHY??");
Toast toast = Toast.makeText(mContext, "Problem Parsing Preferences - Something won't work - Please go back to Settings and correct it!", Toast.LENGTH_SHORT); Toast toast = Toast.makeText(mContext, "Problem Parsing Preferences - Something won't work - Please go back to Settings and correct it!", Toast.LENGTH_SHORT);
toast.show(); toast.show();
} }
} catch (Exception ex) { } catch (Exception ex) {
Log.v(TAG, "updatePrefs() - Problem parsing preferences!"); Log.v(TAG, "updatePrefs() - Problem parsing preferences!");
mUtil.writeToSysLogFile("SDDataSourceBLE.updatePrefs() - ERROR " + ex.toString()); mUtil.writeToSysLogFile("SDDataSource.updatePrefs() - ERROR " + ex.toString());
Toast toast = Toast.makeText(mContext, "Problem Parsing Preferences - Something won't work - Please go back to Settings and correct it!", Toast.LENGTH_SHORT); Toast toast = Toast.makeText(mContext, "Problem Parsing Preferences - Something won't work - Please go back to Settings and correct it!", Toast.LENGTH_SHORT);
toast.show(); toast.show();
} }

View File

@@ -23,27 +23,10 @@
*/ */
package uk.org.openseizuredetector; package uk.org.openseizuredetector;
import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.os.Handler; import android.os.Handler;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.text.format.Time;
import android.util.Log; import android.util.Log;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.jtransforms.fft.DoubleFFT_1D;
import java.util.Arrays;
import java.util.Timer;
import java.util.TimerTask;
import static java.lang.Long.parseLong;
/** /**

View File

@@ -256,11 +256,11 @@ public class SdServer extends Service implements SdDataReceiver {
mSdDataSource = new SdDataSourcePhone(this.getApplicationContext(), mHandler, this); mSdDataSource = new SdDataSourcePhone(this.getApplicationContext(), mHandler, this);
break; break;
default: default:
Log.e(TAG, "Datasource " + mSdDataSourceName + " not recognised - Defaulting to Pebble"); Log.e(TAG, "Datasource " + mSdDataSourceName + " not recognised - Defaulting to Phone");
mUtil.writeToSysLogFile("SdServer.onStartCommand() - Datasource " + mSdDataSourceName + " not recognised - exiting"); //mUtil.writeToSysLogFile("SdServer.onStartCommand() - Datasource " + mSdDataSourceName + " not recognised - exiting");
mUtil.showToast("Datasource " + mSdDataSourceName + " not recognised - Defaulting to Pebble"); mUtil.showToast(getString(R.string.DatasourceTitle) + " " + mSdDataSourceName + getString(R.string.DefaultingToPhoneMsg));
mUtil.writeToSysLogFile("SdServer.onStartCommand() - creating SdDataSourcePebble"); mUtil.writeToSysLogFile("SdServer.onStartCommand() - creating SdDataSourcePhone");
mSdDataSource = new SdDataSourcePebble(this.getApplicationContext(), mHandler, this); mSdDataSource = new SdDataSourcePhone(this.getApplicationContext(), mHandler, this);
} }
if (mSMSAlarm) { if (mSMSAlarm) {
@@ -349,7 +349,7 @@ public class SdServer extends Service implements SdDataReceiver {
} catch (Exception e) { } catch (Exception e) {
Log.e(TAG, "Error Releasing Wakelock - " + e.toString()); Log.e(TAG, "Error Releasing Wakelock - " + e.toString());
mUtil.writeToSysLogFile("SdServer.onDestroy() - Error releasing wakelock."); mUtil.writeToSysLogFile("SdServer.onDestroy() - Error releasing wakelock.");
mUtil.showToast("Error Releasing Wakelock"); mUtil.showToast(getString(R.string.ErrorReleasingWakelockMsg));
} }
} else { } else {
Log.d(TAG, "mmm...mWakeLock is null, so not releasing lock. This shouldn't happen!"); Log.d(TAG, "mmm...mWakeLock is null, so not releasing lock. This shouldn't happen!");
@@ -393,10 +393,6 @@ public class SdServer extends Service implements SdDataReceiver {
try { try {
// Cancel the notification.
Log.v(TAG, "onDestroy(): cancelling notification");
mUtil.writeToSysLogFile("SdServer.onDestroy - cancelling notification");
mNM.cancel(NOTIFICATION_ID);
// Stop web server // Stop web server
Log.v(TAG, "onDestroy(): stopping web server"); Log.v(TAG, "onDestroy(): stopping web server");
mUtil.writeToSysLogFile("SdServer.onDestroy() - stopping Web Server"); mUtil.writeToSysLogFile("SdServer.onDestroy() - stopping Web Server");
@@ -406,6 +402,12 @@ public class SdServer extends Service implements SdDataReceiver {
mToneGenerator.release(); mToneGenerator.release();
mToneGenerator = null; mToneGenerator = null;
this.stopForeground(true);
// Cancel the notification.
Log.v(TAG, "onDestroy(): cancelling notification");
mUtil.writeToSysLogFile("SdServer.onDestroy - cancelling notification");
mNM.cancel(NOTIFICATION_ID);
// stop this service. // stop this service.
Log.v(TAG, "onDestroy(): calling stopSelf()"); Log.v(TAG, "onDestroy(): calling stopSelf()");
mUtil.writeToSysLogFile("SdServer.onDestroy() - stopping self"); mUtil.writeToSysLogFile("SdServer.onDestroy() - stopping self");
@@ -589,11 +591,11 @@ public class SdServer extends Service implements SdDataReceiver {
sendPhoneAlarm(); sendPhoneAlarm();
mSMSTime = tnow; mSMSTime = tnow;
} else { } else {
mUtil.showToast("SMS Alarm already sent - not re-sending"); mUtil.showToast(getString(R.string.SMSAlarmAlreadySentMsg));
Log.v(TAG, "SMS Alarm already sent - not re-sending"); Log.v(TAG, "SMS Alarm already sent - not re-sending");
} }
} else { } else {
mUtil.showToast("mSMSAlarm is false - not sending"); mUtil.showToast(getString(R.string.SMSAlarmDisabledNotSendingMsg));
Log.v(TAG, "mSMSAlarm is false - not sending"); Log.v(TAG, "mSMSAlarm is false - not sending");
} }
@@ -625,7 +627,7 @@ public class SdServer extends Service implements SdDataReceiver {
sendSMSAlarm(); sendSMSAlarm();
mSMSTime = tnow; mSMSTime = tnow;
} else { } else {
mUtil.showToast("SMS Alarm already sent - not re-sending"); mUtil.showToast(getString(R.string.SMSAlarmAlreadySentMsg));
Log.v(TAG, "SMS Alarm already sent - not re-sending"); Log.v(TAG, "SMS Alarm already sent - not re-sending");
} }
} else { } else {
@@ -663,7 +665,7 @@ public class SdServer extends Service implements SdDataReceiver {
Log.v(TAG, "SMS Alarm already sent - not re-sending"); Log.v(TAG, "SMS Alarm already sent - not re-sending");
} }
} else { } else {
mUtil.showToast("mSMSAlarm is false - not sending"); mUtil.showToast(getString(R.string.SMSAlarmDisabledNotSendingMsg));
Log.v(TAG, "mSMSAlarm is false - not sending"); Log.v(TAG, "mSMSAlarm is false - not sending");
} }
@@ -724,7 +726,7 @@ public class SdServer extends Service implements SdDataReceiver {
mToneGenerator.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, duration); mToneGenerator.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, duration);
Log.v(TAG, "beep()"); Log.v(TAG, "beep()");
} else { } else {
mUtil.showToast("Warning mToneGenerator is null - not beeping!!!"); mUtil.showToast(getString(R.string.PleaseForceStopOSDorRebootMsg));
Log.v(TAG, "beep() - Warming mToneGenerator is null - not beeping!!!"); Log.v(TAG, "beep() - Warming mToneGenerator is null - not beeping!!!");
mUtil.writeToSysLogFile("SdServer.beep() - mToneGenerator is null???"); mUtil.writeToSysLogFile("SdServer.beep() - mToneGenerator is null???");
} }
@@ -806,7 +808,7 @@ public class SdServer extends Service implements SdDataReceiver {
if (mSMSAlarm) { if (mSMSAlarm) {
if (!mCancelAudible) { if (!mCancelAudible) {
if (!mUtil.areSMSPermissionsOK()) { if (!mUtil.areSMSPermissionsOK()) {
mUtil.showToast("ERROR - Permission for SMS or Location Denied - Not Sending SMS"); mUtil.showToast(getString(R.string.SMSPermissionsDeniedMsg));
Log.e(TAG, "ERROR - Permission for SMS or Location Denied - Not Sending SMS"); Log.e(TAG, "ERROR - Permission for SMS or Location Denied - Not Sending SMS");
} else { } else {
//mSMSAlertDialog = new AlertDialog.Builder(this); //mSMSAlertDialog = new AlertDialog.Builder(this);
@@ -978,7 +980,7 @@ public class SdServer extends Service implements SdDataReceiver {
Log.i(TAG, "startWebServer()"); Log.i(TAG, "startWebServer()");
mUtil.writeToSysLogFile("SdServer.Start Web Server."); mUtil.writeToSysLogFile("SdServer.Start Web Server.");
if (webServer == null) { if (webServer == null) {
webServer = new SdWebServer(getApplicationContext(), mUtil.getDataStorageDir(), mSdData, this); webServer = new SdWebServer(getApplicationContext(), mSdData, this);
try { try {
webServer.start(); webServer.start();
} catch (IOException ioe) { } catch (IOException ioe) {
@@ -1009,6 +1011,7 @@ public class SdServer extends Service implements SdDataReceiver {
} else { } else {
if (webServer.isAlive()) { if (webServer.isAlive()) {
Log.w(TAG, "stopWebServer() - server still alive???"); Log.w(TAG, "stopWebServer() - server still alive???");
mUtil.writeToSysLogFile( "stopWebServer() - server still alive???");
} else { } else {
mUtil.writeToSysLogFile("stopWebServer() - server died ok"); mUtil.writeToSysLogFile("stopWebServer() - server died ok");
Log.v(TAG, "stopWebServer() - server died ok"); Log.v(TAG, "stopWebServer() - server died ok");
@@ -1025,7 +1028,7 @@ public class SdServer extends Service implements SdDataReceiver {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
Log.v(TAG, "NetworkBroadCastReceiver.onReceive"); Log.v(TAG, "NetworkBroadCastReceiver.onReceive");
//mUtil.writeToSysLogFile("Network State Changed" + intent.getAction()); mUtil.writeToSysLogFile("NetworkBroadcastReceiver.onReceive(): Network State Changed" + intent.getAction());
//mUtil.showToast("Network State Changed" + intent.getAction()); //mUtil.showToast("Network State Changed" + intent.getAction());
ConnectivityManager cm = ConnectivityManager cm =
@@ -1086,53 +1089,71 @@ public class SdServer extends Service implements SdDataReceiver {
try { try {
mSdDataSourceName = SP.getString("DataSource", "Pebble"); mSdDataSourceName = SP.getString("DataSource", "Pebble");
Log.v(TAG, "updatePrefs() - DataSource = " + mSdDataSourceName); Log.v(TAG, "updatePrefs() - DataSource = " + mSdDataSourceName);
mUtil.writeToSysLogFile("updatePrefs() - DataSource = " + mSdDataSourceName);
mLatchAlarms = SP.getBoolean("LatchAlarms", false); mLatchAlarms = SP.getBoolean("LatchAlarms", false);
Log.v(TAG, "updatePrefs() - mLatchAlarms = " + mLatchAlarms); Log.v(TAG, "updatePrefs() - mLatchAlarms = " + mLatchAlarms);
mUtil.writeToSysLogFile("updatePrefs() - mLatchAlarms = " + mLatchAlarms);
// Parse the LatchAlarmPeriod setting. // Parse the LatchAlarmPeriod setting.
try { try {
String latchAlarmPeriodStr = SP.getString("LatchAlarmTimerPeriod", "30"); String latchAlarmPeriodStr = SP.getString("LatchAlarmTimerPeriod", "30");
mLatchAlarmPeriod = Integer.parseInt(latchAlarmPeriodStr); mLatchAlarmPeriod = Integer.parseInt(latchAlarmPeriodStr);
Log.v(TAG, "updatePrefs() - mLatchAlarmTimerPeriod = " + mLatchAlarmPeriod); Log.v(TAG, "updatePrefs() - mLatchAlarmTimerPeriod = " + mLatchAlarmPeriod);
mUtil.writeToSysLogFile("updatePrefs() - mLatchAlarmTimerPeriod = " + mLatchAlarmPeriod);
} catch (Exception ex) { } catch (Exception ex) {
Log.v(TAG, "updatePrefs() - Problem with LatchAlarmTimerPeriod preference!"); Log.v(TAG, "updatePrefs() - Problem with LatchAlarmTimerPeriod preference!");
mUtil.showToast("Problem Parsing LatchAlarmTimerPeriod Preference"); mUtil.writeToSysLogFile( "updatePrefs() - Problem with LatchAlarmTimerPeriod preference!");
mUtil.showToast(getString(R.string.problem_parsing_preferences));
} }
mAudibleFaultWarning = SP.getBoolean("AudibleFaultWarning", true); mAudibleFaultWarning = SP.getBoolean("AudibleFaultWarning", true);
Log.v(TAG, "updatePrefs() - mAuidbleFaultWarning = " + mAudibleFaultWarning); Log.v(TAG, "updatePrefs() - mAuidbleFaultWarning = " + mAudibleFaultWarning);
mUtil.writeToSysLogFile("updatePrefs() - mAuidbleFaultWarning = " + mAudibleFaultWarning);
// Parse the faultTimer period setting. // Parse the faultTimer period setting.
try { try {
String faultTimerPeriodStr = SP.getString("FaultTimerPeriod", "30"); String faultTimerPeriodStr = SP.getString("FaultTimerPeriod", "30");
mFaultTimerPeriod = Integer.parseInt(faultTimerPeriodStr); mFaultTimerPeriod = Integer.parseInt(faultTimerPeriodStr);
Log.v(TAG, "updatePrefs() - mFaultTimerPeriod = " + mFaultTimerPeriod); Log.v(TAG, "updatePrefs() - mFaultTimerPeriod = " + mFaultTimerPeriod);
mUtil.writeToSysLogFile("updatePrefs() - mFaultTimerPeriod = " + mFaultTimerPeriod);
} catch (Exception ex) { } catch (Exception ex) {
Log.v(TAG, "updatePrefs() - Problem with FaultTimerPeriod preference!"); Log.v(TAG, "updatePrefs() - Problem with FaultTimerPeriod preference!");
mUtil.showToast("Problem Parsing FaultTimerPeriod Preference"); mUtil.writeToSysLogFile("updatePrefs() - Problem with FaultTimerPeriod preference!");
mUtil.showToast(getString(R.string.problem_parsing_preferences));
} }
mAudibleAlarm = SP.getBoolean("AudibleAlarm", true); mAudibleAlarm = SP.getBoolean("AudibleAlarm", true);
Log.v(TAG, "updatePrefs() - mAuidbleAlarm = " + mAudibleAlarm); Log.v(TAG, "updatePrefs() - mAuidbleAlarm = " + mAudibleAlarm);
mUtil.writeToSysLogFile("updatePrefs() - mAuidbleAlarm = " + mAudibleAlarm);
mAudibleWarning = SP.getBoolean("AudibleWarning", true); mAudibleWarning = SP.getBoolean("AudibleWarning", true);
Log.v(TAG, "updatePrefs() - mAuidbleWarning = " + mAudibleWarning); Log.v(TAG, "updatePrefs() - mAuidbleWarning = " + mAudibleWarning);
mUtil.writeToSysLogFile("updatePrefs() - mAuidbleWarning = " + mAudibleWarning);
mMp3Alarm = SP.getBoolean("UseMp3Alarm", false); mMp3Alarm = SP.getBoolean("UseMp3Alarm", false);
Log.v(TAG, "updatePrefs() - mMp3Alarm = " + mMp3Alarm); Log.v(TAG, "updatePrefs() - mMp3Alarm = " + mMp3Alarm);
mUtil.writeToSysLogFile( "updatePrefs() - mMp3Alarm = " + mMp3Alarm);
mSMSAlarm = SP.getBoolean("SMSAlarm", false); mSMSAlarm = SP.getBoolean("SMSAlarm", false);
Log.v(TAG, "updatePrefs() - mSMSAlarm = " + mSMSAlarm); Log.v(TAG, "updatePrefs() - mSMSAlarm = " + mSMSAlarm);
mUtil.writeToSysLogFile( "updatePrefs() - mSMSAlarm = " + mSMSAlarm);
mPhoneAlarm = SP.getBoolean("PhoneCallAlarm", false); mPhoneAlarm = SP.getBoolean("PhoneCallAlarm", false);
Log.v(TAG, "updatePrefs() - mSMSAlarm = " + mSMSAlarm); Log.v(TAG, "updatePrefs() - mSMSAlarm = " + mSMSAlarm);
mUtil.writeToSysLogFile( "updatePrefs() - mSMSAlarm = " + mSMSAlarm);
String SMSNumberStr = SP.getString("SMSNumbers", ""); String SMSNumberStr = SP.getString("SMSNumbers", "");
mSMSNumbers = SMSNumberStr.split(","); mSMSNumbers = SMSNumberStr.split(",");
mSMSMsgStr = SP.getString("SMSMsg", "Seizure Detected!!!"); mSMSMsgStr = SP.getString("SMSMsg", "Seizure Detected!!!");
Log.v(TAG, "updatePrefs() - SMSNumberStr = " + SMSNumberStr); Log.v(TAG, "updatePrefs() - SMSNumberStr = " + SMSNumberStr);
mUtil.writeToSysLogFile( "updatePrefs() - SMSNumberStr = " + SMSNumberStr);
Log.v(TAG, "updatePrefs() - mSMSNumbers = " + mSMSNumbers); Log.v(TAG, "updatePrefs() - mSMSNumbers = " + mSMSNumbers);
mUtil.writeToSysLogFile( "updatePrefs() - mSMSNumbers = " + mSMSNumbers);
mLogAlarms = SP.getBoolean("LogAlarms", true); mLogAlarms = SP.getBoolean("LogAlarms", true);
Log.v(TAG, "updatePrefs() - mLogAlarms = " + mLogAlarms); Log.v(TAG, "updatePrefs() - mLogAlarms = " + mLogAlarms);
mUtil.writeToSysLogFile("updatePrefs() - mLogAlarms = " + mLogAlarms);
mLogData = SP.getBoolean("LogData", true); mLogData = SP.getBoolean("LogData", true);
Log.v(TAG, "updatePrefs() - mLogData = " + mLogData); Log.v(TAG, "updatePrefs() - mLogData = " + mLogData);
mUtil.writeToSysLogFile( "updatePrefs() - mLogData = " + mLogData);
mLogDataRemote = SP.getBoolean("LogDataRemote", false); mLogDataRemote = SP.getBoolean("LogDataRemote", false);
Log.v(TAG, "updatePrefs() - mLogDataRemote = " + mLogDataRemote); Log.v(TAG, "updatePrefs() - mLogDataRemote = " + mLogDataRemote);
mUtil.writeToSysLogFile( "updatePrefs() - mLogDataRemote = " + mLogDataRemote);
mLogDataRemoteMobile = SP.getBoolean("LogDataRemoteMobile", false); mLogDataRemoteMobile = SP.getBoolean("LogDataRemoteMobile", false);
Log.v(TAG, "updatePrefs() - mLogDataRemoteMobile = " + mLogDataRemoteMobile); Log.v(TAG, "updatePrefs() - mLogDataRemoteMobile = " + mLogDataRemoteMobile);
mUtil.writeToSysLogFile("updatePrefs() - mLogDataRemoteMobile = " + mLogDataRemoteMobile);
mOSDUname = SP.getString("OSDUname", "<username>"); mOSDUname = SP.getString("OSDUname", "<username>");
Log.v(TAG, "updatePrefs() - mOSDUname = " + mOSDUname); Log.v(TAG, "updatePrefs() - mOSDUname = " + mOSDUname);
mOSDPasswd = SP.getString("OSDPasswd", "<passwd>"); mOSDPasswd = SP.getString("OSDPasswd", "<passwd>");
@@ -1141,6 +1162,7 @@ public class SdServer extends Service implements SdDataReceiver {
Log.v(TAG, "updatePrefs() - mOSDWearerId = " + mOSDWearerId); Log.v(TAG, "updatePrefs() - mOSDWearerId = " + mOSDWearerId);
mOSDUrl = SP.getString("OSDUrl", "http://openseizuredetector.org.uk/webApi"); mOSDUrl = SP.getString("OSDUrl", "http://openseizuredetector.org.uk/webApi");
Log.v(TAG, "updatePrefs() - mOSDUrl = " + mOSDUrl); Log.v(TAG, "updatePrefs() - mOSDUrl = " + mOSDUrl);
mUtil.writeToSysLogFile( "updatePrefs() - mOSDUrl = " + mOSDUrl);
} catch (Exception ex) { } catch (Exception ex) {
Log.v(TAG, "updatePrefs() - Problem parsing preferences!"); Log.v(TAG, "updatePrefs() - Problem parsing preferences!");
mUtil.writeToSysLogFile("SdServer.updatePrefs() - Error " + ex.toString()); mUtil.writeToSysLogFile("SdServer.updatePrefs() - Error " + ex.toString());
@@ -1184,7 +1206,7 @@ public class SdServer extends Service implements SdDataReceiver {
// Open output directory on SD Card. // Open output directory on SD Card.
if (mUtil.isExternalStorageWritable()) { if (mUtil.isExternalStorageWritable()) {
try { try {
FileWriter of = new FileWriter(mUtil.getDataStorageDir().toString() FileWriter of = new FileWriter(getExternalFilesDir(null).toString()
+ "/" + fname, true); + "/" + fname, true);
if (mSdData != null) { if (mSdData != null) {
if (alarm) { if (alarm) {

View File

@@ -2,6 +2,7 @@ package uk.org.openseizuredetector;
import android.content.Context; import android.content.Context;
import android.content.res.AssetManager; import android.content.res.AssetManager;
import android.os.Handler;
import android.util.Log; import android.util.Log;
import org.json.JSONArray; import org.json.JSONArray;
@@ -28,15 +29,17 @@ public class SdWebServer extends NanoHTTPD {
private SdData mSdData; private SdData mSdData;
private SdServer mSdServer; private SdServer mSdServer;
private Context mContext; private Context mContext;
private File mDataStorageDir = null; private Handler mHandler;
private OsdUtil mUtil;
public SdWebServer(Context context, File storageDir, SdData sdData, SdServer sdServer) { public SdWebServer(Context context, SdData sdData, SdServer sdServer) {
// Set the port to listen on (8080) // Set the port to listen on (8080)
super(8080); super(8080);
mSdData = sdData; mSdData = sdData;
mContext = context; mContext = context;
mSdServer = sdServer; mSdServer = sdServer;
mDataStorageDir = storageDir; mHandler = new Handler();
mUtil = new OsdUtil(mContext, mHandler);
} }
public void setSdData(SdData sdData) { public void setSdData(SdData sdData) {
@@ -235,16 +238,16 @@ public class SdWebServer extends NanoHTTPD {
if (uriParts.countTokens() == 1) { if (uriParts.countTokens() == 1) {
Log.v(TAG, "Returning list of files"); Log.v(TAG, "Returning list of files");
File dirs = mDataStorageDir;
try { try {
JSONObject jsonObj = new JSONObject(); JSONObject jsonObj = new JSONObject();
if (dirs.exists()) { File[] fileList = mUtil.getDataFilesList();
String[] fileList = dirs.list(); Log.v(TAG, "serveLogFile(): fileList=" + fileList.toString()+", length="+fileList.length);
JSONArray arr = new JSONArray(); JSONArray arr = new JSONArray();
for (int i = 0; i < fileList.length; i++) for (int i = 0; i < fileList.length; i++) {
arr.put(fileList[i]); Log.v(TAG, "serveLogFile(): file[" + i + "]=" + fileList[i]);
arr.put(fileList[i].getName());
}
jsonObj.put("logFileList", arr); jsonObj.put("logFileList", arr);
}
res = new NanoHTTPD.Response(NanoHTTPD.Response.Status.OK, res = new NanoHTTPD.Response(NanoHTTPD.Response.Status.OK,
"text/html", jsonObj.toString()); "text/html", jsonObj.toString());
} catch (Exception ex) { } catch (Exception ex) {
@@ -256,7 +259,7 @@ public class SdWebServer extends NanoHTTPD {
uripart = uriParts.nextToken(); // This will just be /logs uripart = uriParts.nextToken(); // This will just be /logs
uripart = uriParts.nextToken(); // this is the requested file. uripart = uriParts.nextToken(); // this is the requested file.
String fname = mDataStorageDir.toString() + "/" + uripart; String fname = mUtil.getDataStorageDir().toString() + "/" + uripart;
Log.v(TAG, "serveLogFile - uri=" + uri + ", fname=" + fname); Log.v(TAG, "serveLogFile - uri=" + uri + ", fname=" + fname);
ip = new FileInputStream(fname); ip = new FileInputStream(fname);
String mimeStr = "text/html"; String mimeStr = "text/html";

View File

@@ -122,13 +122,13 @@
android:id="@+id/acceptAlarmButton" android:id="@+id/acceptAlarmButton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Accept Alarm" /> android:text="@string/AcceptAlarmBtnTxt" />
<Button <Button
android:id="@+id/cancelAudibleButton" android:id="@+id/cancelAudibleButton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Cancel Audible (temporarily)" /> android:text="@string/CancelAudibleButtonTxt" />
</LinearLayout> </LinearLayout>
<com.github.mikephil.charting.charts.BarChart <com.github.mikephil.charting.charts.BarChart

View File

@@ -29,7 +29,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium" android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Starting......" android:text="@string/StartingTitle"
android:id="@+id/dataSourceTextView" android:id="@+id/dataSourceTextView"
android:layout_gravity="center_horizontal" /> android:layout_gravity="center_horizontal" />

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="datasource_list">
<item>"Zegarek Garmin"</item>
<item>"Urządzenie Bluetooth"</item>
<item>"Zegarek Pebble"</item>
<item>"Czujnik w telefonie (dla testów)"</item>
<item>"Sieć (dla alarmów przez Wifi)"</item>
</string-array>
</resources>

View File

@@ -255,4 +255,31 @@
<string name="data_update_period_summary">Częstość wyświetlania informacji w milisekundach</string> <string name="data_update_period_summary">Częstość wyświetlania informacji w milisekundach</string>
<string name="select_datasource_title">Wybierz źródło danych</string> <string name="select_datasource_title">Wybierz źródło danych</string>
<string name="select_datasource_summary">Wybierz które źródło danych wykrywania ataków chcesz używać</string> <string name="select_datasource_summary">Wybierz które źródło danych wykrywania ataków chcesz używać</string>
<string name="ParsePreferenceWarning">Problem z ustawieniami - coś nie będzie działać - proszę wrócić do Ustawień i poprawić!</string>
<string name="ErrorWritingLogFileWarning">BŁĄD zapisu pliku dziennika</string>
<string name="RestartingServerMsg">Zmieniono uprawnienia - restartuję serwer</string>
<string name="ErrorReleasingWakelockMsg">Problem ze zwolnieniem Wakelock\'a</string>
<string name="SMSAlarmAlreadySentMsg">Alarm SMS już wysłany - nie wysyłam ponownie</string>
<string name="SMSAlarmDisabledNotSendingMsg">Alarmy SMS wyłączone - nie wysyłam alarmu SMS</string>
<string name="PleaseForceStopOSDorRebootMsg">BŁĄD - OpenSizureDetector nie uruchomił się poprawnie - proszę wyłączyć go na siłę lub uruchomić ponownie telefon.</string>
<string name="SMSPermissionsDeniedMsg">BŁĄD - odmówiono uprawnień do SMS\'ów lub lokalizacji - nie wysyłam SMS\'ów</string>
<string name="DatasourceTitle">\"Źródło danych: \"</string>
<string name="DefaultingToPhoneMsg">\" nie rozpoznano - używam czujnika w telefonie\"</string>
<string name="SMSAlarmCancelledMsg">Anulowano alarmy SMS</string>
<string name="StopServerTitle">Zatrzymaj serwer</string>
<string name="StartServerTitle">Uruchom serwer</string>
<string name="StartingTitle">Uruchamiam...</string>
<string name="AcceptAlarmBtnTxt">Zaakceptuj alarm</string>
<string name="CancelAudibleButtonTxt">Wycisz (tymczasowo)</string>
<string name="DataLoggingSettingsTitle">Ustawienia dziennika danych</string>
<string name="HeartRateAlarmSettingsTitle">Ustawienia tętna</string>
<string name="AlarmFunctionalitySettingsTitle">Ustawienia alarmów</string>
<string name="AudibleAlarmSettingsTitle">Ustawienia alarmów dźwiękowych</string>
<string name="SMSAlarmSettingsTitle">Ustawienia alarmów SMS</string>
<string name="DefaultSMSMsgText">**WYKRYTO DRGAWKI**</string>
<string name="AlarmLoggingTitle">Dziennik alarmów</string>
<string name="WarnTimeSummary">Czas oczekiwania przed włączeniem ostrzeżenia (domyślnie = 5 sek)</string>
<string name="WarnTimeTitle">Opóźnienie ostrzeżenia (sek)</string>
<string name="AlarmTimeSummary">Czas oczekiwania przed włączeniem alarmu (domyślnie = 10 sek)</string>
<string name="AlarmTimeTitle">Opóźnienie alarmu (sek)</string>
</resources> </resources>

View File

@@ -2,11 +2,11 @@
<resources> <resources>
<string name="app_name">OpenSeizureDetector</string> <string name="app_name">OpenSeizureDetector</string>
<string name="changelog"> <string name="changelog">
\n V3.6.1 - Possible fix for issue with shutting down system and expanded Polish translation to all settings screens. "V3.6.2 - Fix of issue with log file permissions on some Android 10 devices and added more translatable strings with polish translation.
\n V3.6 - Added phone sensor data source for testing without a watchs \nV3.6.1 - Possible fix for issue with shutting down system and expanded Polish translation to all settings screens.
\n V3.5 - Added support for SMS Annunciator App \nV3.6 - Added phone sensor data source for testing without a watches
\n V3.4 - Added support for BLE Data Source \nV3.5 - Added support for SMS Annunciator App
</string> \nV3.4 - Added support for BLE Data Source "</string>
<string name="UpgradeMsg"> <string name="UpgradeMsg">
OpenSeizureDetector does not collect any personal data. OpenSeizureDetector does not collect any personal data.
This does mean that it is not possible for me to contact users if I find an This does mean that it is not possible for me to contact users if I find an
@@ -255,4 +255,31 @@
<string name="display_spectrum_mode_summary">Set Display Spectrum mode on or off.</string> <string name="display_spectrum_mode_summary">Set Display Spectrum mode on or off.</string>
<string name="analysis_prefs_title">Analysis</string> <string name="analysis_prefs_title">Analysis</string>
<string name="watch_comms_settings_title">Watch Communications Settings</string> <string name="watch_comms_settings_title">Watch Communications Settings</string>
<string name="ParsePreferenceWarning">Problem Parsing Preferences - Something won\'t work - Please go back to Settings and correct it!</string>
<string name="ErrorWritingLogFileWarning">ERROR Writing to Log File</string>
<string name="RestartingServerMsg">Permissions Changed - restarting server</string>
<string name="ErrorReleasingWakelockMsg">Error Releasing Wakelock</string>
<string name="SMSAlarmAlreadySentMsg">SMS Alarm already sent - not re-sending</string>
<string name="SMSAlarmDisabledNotSendingMsg">SMS Alarms Disabled - not sending SMS Alert</string>
<string name="PleaseForceStopOSDorRebootMsg">ERROR - OpenSizureDetector did not restart properly - please Force Stop OpenSeizureDetector or re-boot phone.</string>
<string name="SMSPermissionsDeniedMsg">ERROR - Permission for SMS or Location Denied - Not Sending SMS</string>
<string name="DatasourceTitle">\"Datasource\"</string>
<string name="DefaultingToPhoneMsg">\" not recognised - Defaulting to Phone\"</string>
<string name="SMSAlarmCancelledMsg">SMS Alarm Cancelled</string>
<string name="StopServerTitle">Stop Server</string>
<string name="StartServerTitle">Start Server</string>
<string name="StartingTitle">Starting......</string>
<string name="AcceptAlarmBtnTxt">Accept Alarm</string>
<string name="CancelAudibleButtonTxt">Cancel Audible (temporarily)</string>
<string name="DataLoggingSettingsTitle">Data Logging Settings</string>
<string name="HeartRateAlarmSettingsTitle">Heart Rate Alarm Settings</string>
<string name="AlarmFunctionalitySettingsTitle">Alarm Functionality Settings</string>
<string name="AudibleAlarmSettingsTitle">Audible Alarm Settings</string>
<string name="SMSAlarmSettingsTitle">SMS Alarm Settings</string>
<string name="DefaultSMSMsgText">**SEIZURE DETECTED**</string>
<string name="AlarmLoggingTitle">Alarm Logging</string>
<string name="WarnTimeSummary">Time to wait before initiating warning (Default = 5 sec)</string>
<string name="WarnTimeTitle">WarnTime (sec)</string>
<string name="AlarmTimeSummary">Time to wait before initiating alarm (Default = 10 sec)</string>
<string name="AlarmTimeTitle">AlarmTime (sec)</string>
</resources> </resources>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="Alarm Functionality Settings"> <PreferenceCategory android:title="@string/AlarmFunctionalitySettingsTitle">
<CheckBoxPreference <CheckBoxPreference
android:defaultValue="false" android:defaultValue="false"
android:key="LatchAlarms" android:key="LatchAlarms"
@@ -14,7 +14,7 @@
android:defaultValue="10" /> android:defaultValue="10" />
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory android:title="Audible Alarm Settings"> <PreferenceCategory android:title="@string/AudibleAlarmSettingsTitle">
<CheckBoxPreference <CheckBoxPreference
android:defaultValue="true" android:defaultValue="true"
android:key="AudibleAlarm" android:key="AudibleAlarm"
@@ -44,7 +44,7 @@
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory android:title="SMS Alarm Settings"> <PreferenceCategory android:title="@string/SMSAlarmSettingsTitle">
<CheckBoxPreference <CheckBoxPreference
android:defaultValue="false" android:defaultValue="false"
android:key="SMSAlarm" android:key="SMSAlarm"
@@ -56,7 +56,7 @@
android:summary="@string/sms_numbers_summary" android:summary="@string/sms_numbers_summary"
android:title="@string/sms_numbers_title" /> android:title="@string/sms_numbers_title" />
<EditTextPreference <EditTextPreference
android:defaultValue="**SEIZURE DETECTED**" android:defaultValue="@string/DefaultSMSMsgText"
android:key="SMSMsg" android:key="SMSMsg"
android:summary="@string/sms_message_summary" android:summary="@string/sms_message_summary"
android:title="@string/sms_message_title" /> android:title="@string/sms_message_title" />
@@ -70,7 +70,7 @@
android:title="Enable Phone Call Alarm" /> android:title="Enable Phone Call Alarm" />
</PreferenceCategory> </PreferenceCategory>
--> -->
<PreferenceCategory android:title="Alarm Logging"> <PreferenceCategory android:title="@string/AlarmLoggingTitle">
<CheckBoxPreference <CheckBoxPreference
android:defaultValue="true" android:defaultValue="true"
android:key="LogAlarms" android:key="LogAlarms"

View File

@@ -22,7 +22,7 @@
android:summary="@string/DataSourceSummary" android:summary="@string/DataSourceSummary"
android:title="@string/DataSourceTitle" /> android:title="@string/DataSourceTitle" />
<PreferenceCategory android:title="Data Logging Settings"> <PreferenceCategory android:title="@string/DataLoggingSettingsTitle">
<!-- <CheckBoxPreference <!-- <CheckBoxPreference
android:defaultValue="false" android:defaultValue="false"
android:key="LogDataRemote" android:key="LogDataRemote"
@@ -62,7 +62,7 @@
android:title="@string/AlarmFreqMaxTitle" /> android:title="@string/AlarmFreqMaxTitle" />
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory android:title="Heart Rate Alarm Settings"> <PreferenceCategory android:title="@string/HeartRateAlarmSettingsTitle">
<CheckBoxPreference <CheckBoxPreference
android:defaultValue="false" android:defaultValue="false"
android:key="HRAlarmActive" android:key="HRAlarmActive"

View File

@@ -2,90 +2,90 @@
<!-- The ListPreference data is defined in pebble_datasource_values.xml --> <!-- The ListPreference data is defined in pebble_datasource_values.xml -->
<PreferenceScreen <PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"> xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="Seizure Detector Settings"> <PreferenceCategory android:title="@string/SeizureDetectorSettingsTitle">
<EditTextPreference <EditTextPreference
android:defaultValue="5" android:defaultValue="5"
android:key="WarnTime" android:key="WarnTime"
android:summary="Time to wait before initiating warning (Default = 5 sec)" android:summary="@string/WarnTimeSummary"
android:title="WarnTime (sec)" /> android:title="@string/WarnTimeTitle" />
<EditTextPreference <EditTextPreference
android:defaultValue="10" android:defaultValue="10"
android:key="AlarmTime" android:key="AlarmTime"
android:summary="Time to wait before initiating alarm (Default = 10 sec)" android:summary="@string/AlarmTimeSummary"
android:title="AlarmTime (sec)" /> android:title="@string/AlarmTimeTitle" />
<EditTextPreference <EditTextPreference
android:defaultValue="100" android:defaultValue="100"
android:key="AlarmThresh" android:key="AlarmThresh"
android:summary="Alarm Threshold (Default = 100)" android:summary="@string/AlarmThreshSummary"
android:title="AlarmThresh" /> android:title="@string/AlarmThreshTitle" />
<EditTextPreference <EditTextPreference
android:defaultValue="50" android:defaultValue="50"
android:key="AlarmRatioThresh" android:key="AlarmRatioThresh"
android:summary="Alarm Ratio Threshold (Default = 50). Increase this value to reduce sensitivity if false alarms are a problem." android:summary="@string/AlarmRatioThreshSummary"
android:title="AlarmRatioThresh" /> android:title="@string/AlarmRatioThreshTitle" />
<EditTextPreference <EditTextPreference
android:defaultValue="3" android:defaultValue="3"
android:key="AlarmFreqMin" android:key="AlarmFreqMin"
android:summary="Minimum Frequency of ROI (Hz) (Default = 3 Hz)" android:summary="@string/AlarmFreqMinSummary"
android:title="AlarmFreqMin (Hz)" /> android:title="@string/AlarmFreqMinTitle" />
<EditTextPreference <EditTextPreference
android:defaultValue="10" android:defaultValue="10"
android:key="AlarmFreqMax" android:key="AlarmFreqMax"
android:summary="Maximum Frequency of ROI (Hz) (Default = 10 Hz)" android:summary="@string/AlarmFreqMaxSummary"
android:title="AlarmFreqMax (Hz)" /> android:title="@string/AlarmFreqMaxTitle" />
<EditTextPreference <EditTextPreference
android:defaultValue="5" android:defaultValue="5"
android:key="SamplePeriod" android:key="SamplePeriod"
android:summary="Period (in seconds) between data analyses" android:summary="@string/sample_period_summary"
android:title="SamplePeriod (sec)" /> android:title="@string/sample_period_title" />
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory android:title="Heart Rate Alarm Settings"> <PreferenceCategory android:title="@string/HeartRateAlarmSettingsTitle">
<CheckBoxPreference <CheckBoxPreference
android:defaultValue="false" android:defaultValue="false"
android:key="HRAlarmActive" android:key="HRAlarmActive"
android:summary="" android:summary="@string/HRAlarmEnabledSummary"
android:title="Heart Rate Alarm Enabled" /> android:title="@string/HRAlarmEnabledTitle" />
<CheckBoxPreference <CheckBoxPreference
android:defaultValue="false" android:defaultValue="false"
android:key="HRNullAsAlarm" android:key="HRNullAsAlarm"
android:summary="" android:summary="@string/HRNullAlarmSummary"
android:title="Treat a Null heart rate as an alarm condition" /> android:title="@string/HRNullAlarmTitle" />
<EditTextPreference <EditTextPreference
android:defaultValue="40" android:defaultValue="40"
android:key="HRThreshMin" android:key="HRThreshMin"
android:summary="" android:summary="@string/HRThreshMinSummary"
android:title="Heart Rate Min Threshold (bpm)" /> android:title="@string/HRThreshMinTitle" />
<EditTextPreference <EditTextPreference
android:defaultValue="150" android:defaultValue="150"
android:key="HRThreshMax" android:key="HRThreshMax"
android:summary="" android:summary="@string/HRThreshMaxSummary"
android:title="Heart Rate Max Threshold (bpm)" /> android:title="@string/HRThreshMaxTitle" />
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory android:title="Fall Detector Settings"> <PreferenceCategory android:title="@string/fall_detect_title">
<CheckBoxPreference <CheckBoxPreference
android:defaultValue="false" android:defaultValue="false"
android:key="FallActive" android:key="FallActive"
android:summary="" android:summary=""
android:title="Activate Fall Detection Function" /> android:title="@string/fall_detect_active_title" />
<EditTextPreference <EditTextPreference
android:defaultValue="200" android:defaultValue="200"
android:key="FallThreshMin" android:key="FallThreshMin"
android:summary="" android:summary=""
android:title="Fall Detection Lower Threshold (milli-g)" /> android:title="@string/fall_thresh_min_title" />
<EditTextPreference <EditTextPreference
android:defaultValue="1200" android:defaultValue="1200"
android:key="FallThreshMax" android:key="FallThreshMax"
android:summary="" android:summary=""
android:title="Fall Detection Upper Threshold (milli-g)" /> android:title="@string/fall_thresh_max_title" />
<EditTextPreference <EditTextPreference
android:defaultValue="1500" android:defaultValue="1500"
android:key="FallWindow" android:key="FallWindow"
android:summary="" android:summary=""
android:title="Fall Detection Window (milli-seconds)" /> android:title="@string/fall_window_title" />
</PreferenceCategory> </PreferenceCategory>

View File

@@ -9,7 +9,7 @@ buildscript {
google() google()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:4.1.0' classpath 'com.android.tools.build:gradle:4.1.1'
} }
} }
allprojects { allprojects {

View File

@@ -1,4 +1,4 @@
#Fri Nov 13 13:30:20 GMT 2020 #Sat Nov 21 06:41:40 GMT 2020
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME