Added FOREGROUND_SERVICE permission, which seems to be needed for Android 9 or it crashes with a 'Permission Denied' error.
This commit is contained in:
BIN
app/release/app-release-2.6.2.apk
Normal file
BIN
app/release/app-release-2.6.2.apk
Normal file
Binary file not shown.
@@ -1 +1 @@
|
|||||||
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":43,"versionName":"2.6.1","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
|
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":44,"versionName":"2.6.2","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="uk.org.openseizuredetector"
|
package="uk.org.openseizuredetector"
|
||||||
android:versionCode="43"
|
android:versionCode="44"
|
||||||
android:versionName="2.6.1"
|
android:versionName="2.6.2"
|
||||||
android:allowBackup="false"
|
android:allowBackup="false"
|
||||||
>
|
>
|
||||||
|
|
||||||
@@ -18,6 +18,7 @@
|
|||||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
||||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
||||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
|
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
|
||||||
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
|
||||||
|
|
||||||
<uses-feature
|
<uses-feature
|
||||||
android:name="android.hardware.telephony"
|
android:name="android.hardware.telephony"
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ import org.json.JSONArray;
|
|||||||
|
|
||||||
public class SdData implements Parcelable {
|
public class SdData implements Parcelable {
|
||||||
private final static String TAG = "SdData";
|
private final static String TAG = "SdData";
|
||||||
|
private final static int N_RAW_DATA = 500; // 5 seconds at 100 Hz.
|
||||||
/* Analysis settings */
|
/* Analysis settings */
|
||||||
public boolean haveSettings = false; // flag to say if we have received settings or not.
|
public boolean haveSettings = false; // flag to say if we have received settings or not.
|
||||||
public boolean haveData = false; // flag to say we have received data.
|
public boolean haveData = false; // flag to say we have received data.
|
||||||
@@ -67,6 +68,7 @@ public class SdData implements Parcelable {
|
|||||||
public boolean mHRAlarmActive = false;
|
public boolean mHRAlarmActive = false;
|
||||||
public double mHRThreshMin = 40.0;
|
public double mHRThreshMin = 40.0;
|
||||||
public double mHRTreshMax = 150.0;
|
public double mHRTreshMax = 150.0;
|
||||||
|
public int rawData[];
|
||||||
|
|
||||||
/* Analysis results */
|
/* Analysis results */
|
||||||
public Time dataTime = null;
|
public Time dataTime = null;
|
||||||
@@ -88,6 +90,7 @@ public class SdData implements Parcelable {
|
|||||||
|
|
||||||
public SdData() {
|
public SdData() {
|
||||||
simpleSpec = new int[10];
|
simpleSpec = new int[10];
|
||||||
|
rawData = new int[N_RAW_DATA];
|
||||||
dataTime = new Time(Time.getCurrentTimezone());
|
dataTime = new Time(Time.getCurrentTimezone());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,6 +121,7 @@ public class SdData implements Parcelable {
|
|||||||
alarmPhrase = jo.optString("alarmPhrase");
|
alarmPhrase = jo.optString("alarmPhrase");
|
||||||
alarmThresh = jo.optInt("alarmThresh");
|
alarmThresh = jo.optInt("alarmThresh");
|
||||||
alarmRatioThresh = jo.optInt("alarmRatioThresh");
|
alarmRatioThresh = jo.optInt("alarmRatioThresh");
|
||||||
|
mHR = jo.optDouble("hr");
|
||||||
JSONArray specArr = jo.optJSONArray("simpleSpec");
|
JSONArray specArr = jo.optJSONArray("simpleSpec");
|
||||||
for (int i = 0; i < specArr.length(); i++) {
|
for (int i = 0; i < specArr.length(); i++) {
|
||||||
simpleSpec[i] = specArr.optInt(i);
|
simpleSpec[i] = specArr.optInt(i);
|
||||||
@@ -131,12 +135,12 @@ public class SdData implements Parcelable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return toDataString();
|
return toDataString(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String toDataString() {
|
public String toDataString(boolean includeRawData) {
|
||||||
String retval;
|
String retval;
|
||||||
retval = "SdData.toDataString() Output";
|
retval = "SdData.toDataString() Output";
|
||||||
try {
|
try {
|
||||||
@@ -166,12 +170,18 @@ public class SdData implements Parcelable {
|
|||||||
jsonObj.put("alarmFreqMax",alarmFreqMax);
|
jsonObj.put("alarmFreqMax",alarmFreqMax);
|
||||||
jsonObj.put("alarmThresh", alarmThresh);
|
jsonObj.put("alarmThresh", alarmThresh);
|
||||||
jsonObj.put("alarmRatioThresh", alarmRatioThresh);
|
jsonObj.put("alarmRatioThresh", alarmRatioThresh);
|
||||||
|
jsonObj.put("hr",mHR);
|
||||||
JSONArray arr = new JSONArray();
|
JSONArray arr = new JSONArray();
|
||||||
for (int i = 0; i < simpleSpec.length; i++) {
|
for (int i = 0; i < simpleSpec.length; i++) {
|
||||||
arr.put(simpleSpec[i]);
|
arr.put(simpleSpec[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
jsonObj.put("simpleSpec", arr);
|
jsonObj.put("simpleSpec", arr);
|
||||||
|
if (includeRawData) {
|
||||||
|
JSONArray rawArr = new JSONArray();
|
||||||
|
for (int i = 0; i< rawData.length;i++) {
|
||||||
|
rawArr.put(rawData[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
retval = jsonObj.toString();
|
retval = jsonObj.toString();
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
|
|||||||
@@ -441,11 +441,15 @@ public class SdDataSourcePebble extends SdDataSource {
|
|||||||
Log.v(TAG, "numSamples = " + numSamples);
|
Log.v(TAG, "numSamples = " + numSamples);
|
||||||
byte[] rawDataBytes = data.getBytes(KEY_RAW_DATA);
|
byte[] rawDataBytes = data.getBytes(KEY_RAW_DATA);
|
||||||
for (int i = 0; i < rawDataBytes.length - 4; i += 4) { // 4 bytes per sample
|
for (int i = 0; i < rawDataBytes.length - 4; i += 4) { // 4 bytes per sample
|
||||||
int x = (rawDataBytes[i]);
|
int b0 = rawDataBytes[i];
|
||||||
|
int b1 = rawDataBytes[i+1] & 0xff;
|
||||||
|
int b2 = rawDataBytes[i+2] & 0xff;
|
||||||
|
int b3 = rawDataBytes[i+3] & 0xff;
|
||||||
|
int x = (b3 | b2 << 8 | b1 << 16 | b0 << 24);
|
||||||
//int y = (rawDataBytes[i+2] & 0xff) | (rawDataBytes[i+3] << 8);
|
//int y = (rawDataBytes[i+2] & 0xff) | (rawDataBytes[i+3] << 8);
|
||||||
//int z = (rawDataBytes[i+4] & 0xff) | (rawDataBytes[i+5] << 8);
|
//int z = (rawDataBytes[i+4] & 0xff) | (rawDataBytes[i+5] << 8);
|
||||||
//Log.v(TAG,"x="+x+", y="+y+", z="+z);
|
//Log.v(TAG,"x="+x+", y="+y+", z="+z);
|
||||||
Log.v(TAG,"x="+x);
|
Log.v(TAG,"b0="+b0+", b1="+b1+", b2="+b2+", b3="+b3+", x="+x);
|
||||||
if (nRawData < MAX_RAW_DATA) {
|
if (nRawData < MAX_RAW_DATA) {
|
||||||
rawData[nRawData] = (int)Math.sqrt(x);
|
rawData[nRawData] = (int)Math.sqrt(x);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -492,6 +492,7 @@ public class StartupActivity extends Activity {
|
|||||||
+ "\n- Added support for an experimental Gramin based seizure detector with Heart Rate alarm "
|
+ "\n- Added support for an experimental Gramin based seizure detector with Heart Rate alarm "
|
||||||
+ "\n Fixed problem with app not restarting properly when settings were changed"
|
+ "\n Fixed problem with app not restarting properly when settings were changed"
|
||||||
+ "\n- Explicitly asks for SMS permission, and displays warning in notification if SMS alarms are active"
|
+ "\n- Explicitly asks for SMS permission, and displays warning in notification if SMS alarms are active"
|
||||||
|
+ "\n Added FOREGROUND_SERVICE permission, which seems to be necessary for Android V9."
|
||||||
+ "\n "
|
+ "\n "
|
||||||
+ "\n PLEASE NOTE - THIS IS A BETA TEST VERSION SO MAY NOT WORK!"
|
+ "\n PLEASE NOTE - THIS IS A BETA TEST VERSION SO MAY NOT WORK!"
|
||||||
+ "\n ."
|
+ "\n ."
|
||||||
@@ -528,6 +529,7 @@ public class StartupActivity extends Activity {
|
|||||||
+ "\n- Added support for an experimental Gramin based seizure detector with Heart Rate alarm "
|
+ "\n- Added support for an experimental Gramin based seizure detector with Heart Rate alarm "
|
||||||
+ "\n- Fixed problem with app not restarting properly when settings were changed"
|
+ "\n- Fixed problem with app not restarting properly when settings were changed"
|
||||||
+ "\n- Explicitly asks for SMS permission, and displays warning in notification if SMS alarms are active"
|
+ "\n- Explicitly asks for SMS permission, and displays warning in notification if SMS alarms are active"
|
||||||
|
+ "\n Added FOREGROUND_SERVICE permission, which seems to be necessary for Android V9."
|
||||||
+ "\n "
|
+ "\n "
|
||||||
+ "\n PLEASE NOTE - THIS IS A BETA TEST VERSION SO MAY NOT WORK!"
|
+ "\n PLEASE NOTE - THIS IS A BETA TEST VERSION SO MAY NOT WORK!"
|
||||||
+ "\n "
|
+ "\n "
|
||||||
|
|||||||
Reference in New Issue
Block a user