Added a default basic mode, with a lot less settings visible.
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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) {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
88
app/src/main/res/xml/basic_prefs.xml
Normal file
88
app/src/main/res/xml/basic_prefs.xml
Normal 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>
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user