Added a default basic mode, with a lot less settings visible.

This commit is contained in:
Graham Jones
2020-03-29 22:26:29 +01:00
parent 95f3dd7d96
commit a7188eee0e
6 changed files with 206 additions and 107 deletions

View File

@@ -58,47 +58,40 @@ public class LogManager {
private String mDbTableName = "datapoints";
private boolean mLogRemote;
private boolean mLogRemoteMobile;
private String mOSDUname;
private String mOSDPasswd;
private int mOSDWearerId;
private String mOSDUrl;
private String mOSDUrl = "https://https://osd.dynu.net/";
private String mApiToken;
private OsdDbHelper mOSDDb;
private RemoteLogTimer mRemoteLogTimer;
private Context mContext;
private OsdUtil mUtil;
public LogManager(boolean logRemote,
boolean logRemoteMobile,
String OSDUname,
String OSDPasswd,
int OSDWearerId,
String OSDUrl,
Context context) {
mLogRemote = logRemote;
mLogRemoteMobile = logRemoteMobile;
mOSDUname = OSDUname;
mOSDPasswd = OSDPasswd;
mOSDWearerId = OSDWearerId;
mOSDUrl = OSDUrl;
public LogManager(Context context) {
mLogRemote = false;
mLogRemoteMobile = false;
mOSDUrl = null;
mContext = context;
Handler handler = new Handler();
mUtil = new OsdUtil(mContext, handler);
try {
mOSDDb = new OsdDbHelper(mDbTableName, mContext);
if (!checkTableExists(mOSDDb, mDbTableName)) {
Log.e(TAG,"ERROR - Table does not exist");
}
} catch (SQLException e) {
Log.e(TAG, "Failed to open Database: " + e.toString());
}
startRemoteLogTimer();
}
private boolean openDb() {
try {
mOSDDb = new OsdDbHelper(mDbTableName, mContext);
if (!checkTableExists(mOSDDb, mDbTableName)) {
Log.e(TAG,"ERROR - Table does not exist");
return false;
}
return true;
} catch (SQLException e) {
Log.e(TAG, "Failed to open Database: " + e.toString());
mOSDDb = null;
return false;
}
}
private boolean checkTableExists(OsdDbHelper osdDb, String osdTableName) {
Cursor c = null;
@@ -131,7 +124,7 @@ public class LogManager {
+ "(dataTime, wearer_id, BattPC, specPow, roiRatio, avAcc, sdAcc, hr, status, dataJSON, uploaded)"
+ " VALUES("
+"CURRENT_TIMESTAMP,"
+ mOSDWearerId + ","
+ -1 + ","
+ sdData.batteryPc + ","
+ sdData.specPower + ","
+ 10. * sdData.roiPower / sdData.specPower + ","
@@ -184,10 +177,12 @@ public class LogManager {
public void authenticate(String uname, String passwd) {
Log.v(TAG, "authenticate()");
// FIXME - this does not work!!!!
String dataStr = "data string to upload";
String dataStr = "{'login':"+uname+", 'password':"+passwd+"}";
//new PostDataTask().execute("http://" + mOSDUrl + ":8080/data", dataStr, mOSDUname, mOSDPasswd);
new PostDataTask().execute("http://192.168.43.175:8765/datapoints/add", dataStr, mOSDUname, mOSDPasswd);
String urlStr = mOSDUrl+"/api/accounts/login/";
Log.v(TAG,"authenticate: url="+urlStr+", data="+dataStr);
new PostDataTask().execute(
urlStr, dataStr);
}
/**
@@ -199,7 +194,7 @@ public class LogManager {
Log.v(TAG, "uploadSdData()");
String dataStr = "data string to upload";
//new PostDataTask().execute("http://" + mOSDUrl + ":8080/data", dataStr, mOSDUname, mOSDPasswd);
new PostDataTask().execute("http://192.168.43.175:8765/datapoints/add", dataStr, mOSDUname, mOSDPasswd);
//new PostDataTask().execute("http://192.168.43.175:8765/datapoints/add", dataStr, mOSDUname, mOSDPasswd);
}
private class PostDataTask extends AsyncTask<String, Void, String> {
@@ -208,16 +203,14 @@ public class LogManager {
// params comes from the execute() call:
// params[0] is the url,
// params[1] is the data to send.
// params[2] is the user name
// params[3] is the password
// params[2] is the user name (not used)
// params[3] is the password (not used)
int MAXLEN = 500; // Maximum length of response that we will accept (bytes)
InputStream is = null;
String urlStr = params[0];
String dataStr = params[1];
String uname = params[2];
String passwd = params[3];
String resultStr = "Not Initialised";
Log.v(TAG,"doInBackgound(): url="+urlStr+" data="+dataStr+" uname="+uname+" passwd="+passwd);
Log.v(TAG,"doInBackgound(): url="+urlStr+" data="+dataStr);
try {
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
@@ -226,10 +219,10 @@ public class LogManager {
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json; utf-8");
conn.setRequestProperty("Accept", "application/json");
String auth = uname + ":" + passwd;
byte[] encodedAuth = Base64.encodeBase64(auth.getBytes("utf-8"));
String authHeaderValue = "Basic " + new String(encodedAuth);
conn.setRequestProperty("Authorization", authHeaderValue);
//String auth = uname + ":" + passwd;
//byte[] encodedAuth = Base64.encodeBase64(auth.getBytes("utf-8"));
//String authHeaderValue = "Basic " + new String(encodedAuth);
//conn.setRequestProperty("Authorization", authHeaderValue);
conn.setDoInput(true);
// Put our data into the outputstream associated with the connection.
@@ -387,8 +380,9 @@ public class LogManager {
@Override
public void onFinish() {
Log.v(TAG, "mRemoteLogTimer - onFinish");
writeToRemoteServer();
//FIXME - make this do something!
//Log.v(TAG, "mRemoteLogTimer - onFinish");
//writeToRemoteServer();
start();
}

View File

@@ -56,7 +56,11 @@ implements AuthDialogInterface {
}
public void onDialogDone(boolean State) {
Log.v(TAG,"onDialogDOne()");
Log.v(TAG,"onDialogDone()");
LogManager lm = new LogManager(this);
lm.authenticate("test", "testpw");
}
}

View File

@@ -56,7 +56,7 @@ public class PrefActivity extends PreferenceActivity implements SharedPreference
mHandler = new Handler();
mContext = getApplicationContext();
mUtil = new OsdUtil(mContext,mHandler);
mUtil = new OsdUtil(mContext, mHandler);
mUtil.writeToSysLogFile("PrefActvity.onCreate()");
}
@@ -71,37 +71,51 @@ public class PrefActivity extends PreferenceActivity implements SharedPreference
.getDefaultSharedPreferences(this.getApplicationContext());
String dataSourceStr = SP.getString("DataSource", "Pebble");
Log.i(TAG, "onBuildHeaders DataSource = " + dataSourceStr);
Boolean advancedMode = SP.getBoolean("advancedMode", false);
Log.i(TAG, "onBuildHeaders advancedMode = " + advancedMode);
//Boolean cameraEnabled = SP.getBoolean("UseIpCamera", false);
//Log.v(TAG, "onBuildHeaders cameraEnabled = " + cameraEnabled);
if (advancedMode) {
for (int i = 0; i < target.size(); i++) {
Header h = target.get(i);
Log.v(TAG, "found - " + h.title.toString());
if (h.title.toString().equals("Seizure Detector")) {
Log.v(TAG, "found Seizure Detector Header");
if (dataSourceStr.equals("Network")) {
Log.v(TAG, "Removing seizure detector settings header");
target.remove(i);
i = i - 1;
}
}
if (h.title.toString().equals("Network Datasource")) {
Log.v(TAG, "found Network Datasource Header");
if (!dataSourceStr.equals("Network")) {
Log.v(TAG, "Removing network settings header");
target.remove(i);
i = i - 1;
}
}
if (h.title.toString().equals("Pebble Datasource")) {
Log.v(TAG, "found Pebble Datasource Header");
if (!dataSourceStr.equals("Pebble")) {
Log.v(TAG, "Removing Pebble settings header");
target.remove(i);
i = i - 1;
}
}
}
} else {
for (int i = 0; i < target.size(); i++) {
Header h = target.get(i);
Log.v(TAG, "found - " + h.title.toString());
if (!h.title.toString().equals("Basic")) {
if (!advancedMode) {
Log.v(TAG, "an Advanced Mode Header");
target.remove(i);
i = i - 1;
}
}
}
for (int i = 0; i < target.size(); i++) {
Header h = target.get(i);
Log.v(TAG,"found - "+h.title.toString());
if (h.title.toString().equals("Seizure Detector")) {
Log.v(TAG, "found Seizure Detector Header");
if (dataSourceStr.equals("Network")) {
Log.v(TAG, "Removing seizure detector settings header");
target.remove(i);
i = i-1;
}
}
if (h.title.toString().equals("Network Datasource")) {
Log.v(TAG, "found Network Datasource Header");
if (!dataSourceStr.equals("Network")) {
Log.v(TAG, "Removing network settings header");
target.remove(i);
i = i -1;
}
}
if (h.title.toString().equals("Pebble Datasource")) {
Log.v(TAG, "found Pebble Datasource Header");
if (!dataSourceStr.equals("Pebble")) {
Log.v(TAG, "Removing Pebble settings header");
target.remove(i);
i = i -1;
}
}
}
}
@@ -110,7 +124,7 @@ public class PrefActivity extends PreferenceActivity implements SharedPreference
public void onStart() {
super.onStart();
mUtil.writeToSysLogFile("PrefActvity.onStart()");
invalidateHeaders();
//invalidateHeaders();
Log.i(TAG, "onStart()");
}
@@ -119,15 +133,15 @@ public class PrefActivity extends PreferenceActivity implements SharedPreference
Log.i(TAG, "SharedPreference " + s + " Changed.");
if (s.equals("SMSAlarm")) {
if (sharedPreferences.getBoolean("SMSAlarm",false)==true) {
if (mUtil.areSMSPermissionsOK()==false) {
Log.i(TAG,"onSharedPreferenceChanged(): SMS Alarm Enabled - Requesting Permissions");
if (sharedPreferences.getBoolean("SMSAlarm", false) == true) {
if (mUtil.areSMSPermissionsOK() == false) {
Log.i(TAG, "onSharedPreferenceChanged(): SMS Alarm Enabled - Requesting Permissions");
mUtil.requestSMSPermissions(this);
} else {
Log.i(TAG,"OnSharedPreferenceCHanged(): SMS Permissions already granted, doing nothing");
Log.i(TAG, "OnSharedPreferenceCHanged(): SMS Permissions already granted, doing nothing");
}
} else {
Log.i(TAG,"OnSharedPreferenceChanged(): SMS Alarm disabled so do not need permissions");
Log.i(TAG, "OnSharedPreferenceChanged(): SMS Alarm disabled so do not need permissions");
}
}
mUtil.showToast("Setting " + s + " Changed - restarting server");
@@ -140,8 +154,8 @@ public class PrefActivity extends PreferenceActivity implements SharedPreference
}
}, 100);
if (s.equals("DataSource")) {
Log.i(TAG,"DataSource Changed - re-starting PrefActivity to refresh list");
if (s.equals("DataSource") || s.equals("advancedMode")) {
Log.i(TAG, "Re-starting PrefActivity to refresh list");
finish();
startActivity(getIntent());
}
@@ -151,7 +165,7 @@ public class PrefActivity extends PreferenceActivity implements SharedPreference
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
Log.i(TAG,"onRequestPermissionsResult - Permission" + permissions + " = " + grantResults);
Log.i(TAG, "onRequestPermissionsResult - Permission" + permissions + " = " + grantResults);
mUtil.showToast("Permissions Changed - restarting server");
mUtil.stopServer();
// Wait 0.1 second to give the server chance to shutdown, then re-start it
@@ -171,6 +185,7 @@ public class PrefActivity extends PreferenceActivity implements SharedPreference
SharedPreferences SP = PreferenceManager
.getDefaultSharedPreferences(getBaseContext());
SP.registerOnSharedPreferenceChangeListener(this);
invalidateHeaders();
}
@Override
@@ -187,29 +202,12 @@ public class PrefActivity extends PreferenceActivity implements SharedPreference
protected void onStop() {
super.onStop();
mUtil.writeToSysLogFile("PrefActvity.onStop()");
/*Log.i(TAG, "onStop. mPrefChanged=" + mPrefChanged);
if (mPrefChanged) {
Log.i(TAG,"PrefActivity.onStop() - settings changed - restarting server");
mUtil.writeToSysLogFile("PrefActvity.onStop() - settings changed - re-starting server....");
mUtil.showToast("Settings Changed - re-starting OpenSeizureDetector....");
mUtil.stopServer();
// Wait 5 seconds to give the server chance to shutdown.
mHandler.postDelayed(new Runnable() {
public void run() {
Intent intent = new Intent(getApplicationContext(), StartupActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();
}
}, 5000);
}
*/
}
/**
* FIXME - this just returns true so it is the same as for older versions of Android.
* We should really check that the fragmentName is one of the fragments defined below.
*
* @param fragmentName
* @return
*/
@@ -218,9 +216,18 @@ public class PrefActivity extends PreferenceActivity implements SharedPreference
return true;
}
/**
* This fragment shows the preferences for the first header.
*/
/**
* This fragment shows the preferences for the first header.
*/
public static class BasicPrefsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.basic_prefs);
}
}
public static class GeneralPrefsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {

View File

@@ -215,8 +215,9 @@ public class SdServer extends Service implements SdDataReceiver {
updatePrefs();
// Create our log manager.
mLm = new LogManager(mLogDataRemote, mLogDataRemoteMobile,
mOSDUname, mOSDPasswd, mOSDWearerId, mOSDUrl, this);
//mLm = new LogManager(mLogDataRemote, mLogDataRemoteMobile,
// mOSDUname, mOSDPasswd, mOSDWearerId, mOSDUrl, this);
mLm = new LogManager(this);
Log.v(TAG, "onStartCommand: Datasource =" + mSdDataSourceName);
switch (mSdDataSourceName) {
@@ -372,7 +373,7 @@ public class SdServer extends Service implements SdDataReceiver {
*/
// Stop the log Manager
mLm.close();
//mLm.close();
try {

View File

@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:defaultValue="false"
android:enabled="true"
android:key="advancedMode"
android:summary="Enable Advanced Settings (exposes a lot more things you can change....)"
android:title="Advanced Mode" />
<CheckBoxPreference
android:defaultValue="false"
android:enabled="true"
android:key="AutoStart"
android:summary="Auto Start App on Boot"
android:title="Auto Start App on Boot" />
<ListPreference
android:defaultValue="Garmin"
android:dialogTitle="Select Data Source"
android:entries="@array/datasource_list"
android:entryValues="@array/datasource_list_values"
android:key="DataSource"
android:summary="Select whether to use a Garmin Watch, Pebble Watch or network connection as the seizure detector data source."
android:title="Select Data Source" />
<PreferenceCategory android:title="Data Logging Settings">
<CheckBoxPreference
android:defaultValue="false"
android:key="LogDataRemote"
android:summary="Log Data to Central OpenSeizureDetector Database"
android:title="Log Data Remotely" />
<CheckBoxPreference
android:defaultValue="false"
android:key="LogDataRemoteMobile"
android:summary="Use mobile internet to log remote data"
android:title="Use Mobile Internet" />
</PreferenceCategory>
<PreferenceCategory android:title="Seizure Detector Settings">
<EditTextPreference
android:defaultValue="100"
android:key="AlarmThresh"
android:summary="Alarm Threshold (Default = 100)"
android:title="AlarmThresh" />
<EditTextPreference
android:defaultValue="50"
android:key="AlarmRatioThresh"
android:summary="Alarm Ratio Threshold (Default = 50). Increase to reduce sensitivity."
android:title="AlarmRatioThresh" />
<EditTextPreference
android:defaultValue="3"
android:key="AlarmFreqMin"
android:summary="Minimum Frequency of ROI (Hz) (Default = 3 Hz)"
android:title="AlarmFreqMin (Hz)" />
<EditTextPreference
android:defaultValue="8"
android:key="AlarmFreqMax"
android:summary="Maximum Frequency of ROI (Hz) (Default = 8 Hz)"
android:title="AlarmFreqMax (Hz)" />
</PreferenceCategory>
<PreferenceCategory android:title="Heart Rate Alarm Settings">
<CheckBoxPreference
android:defaultValue="false"
android:key="HRAlarmActive"
android:summary=""
android:title="Heart Rate Alarm Enabled" />
<CheckBoxPreference
android:defaultValue="false"
android:key="HRNullAsAlarm"
android:summary=""
android:title="Treat a Null heart rate as an alarm condition" />
<EditTextPreference
android:defaultValue="40"
android:key="HRThreshMin"
android:summary=""
android:title="Heart Rate Min Threshold (bpm)" />
<EditTextPreference
android:defaultValue="150"
android:key="HRThreshMax"
android:summary=""
android:title="Heart Rate Max Threshold (bpm)" />
</PreferenceCategory>
</PreferenceScreen>

View File

@@ -2,6 +2,11 @@
<preference-headers
xmlns:android="http://schemas.android.com/apk/res/android">
<header android:fragment="uk.org.openseizuredetector.PrefActivity$BasicPrefsFragment"
android:icon="@drawable/icon_24x24"
android:title="Basic"
android:summary="Basic Preferences" />
<header android:fragment="uk.org.openseizuredetector.PrefActivity$GeneralPrefsFragment"
android:icon="@drawable/icon_24x24"
android:title="General"