diff --git a/Ejectable/ExpoTaskMgr.js b/Ejectable/ExpoTaskMgr.js
new file mode 100644
index 00000000..8464e528
--- /dev/null
+++ b/Ejectable/ExpoTaskMgr.js
@@ -0,0 +1,34 @@
+import React from 'react';
+import { Text, TouchableOpacity } from 'react-native';
+import * as TaskManager from 'expo-task-manager';
+import * as Location from 'expo-location';
+
+const LOCATION_TASK_NAME = 'background-location-task';
+
+const requestPermissions = async () => {
+ const { status } = await Location.requestBackgroundPermissionsAsync();
+ if (status === 'granted') {
+ await Location.startLocationUpdatesAsync(LOCATION_TASK_NAME, {
+ accuracy: Location.Accuracy.Balanced,
+ });
+ }
+};
+
+const PermissionsButton = () => (
+
+ Enable background location
+
+);
+
+TaskManager.defineTask(LOCATION_TASK_NAME, ({ data, error }) => {
+ if (error) {
+ // Error occurred - check `error.message` for more details.
+ return;
+ }
+ if (data) {
+ const { locations } = data;
+ // do something with the locations captured in the background
+ }
+});
+
+export default PermissionsButton;
\ No newline at end of file
diff --git a/Ejectable/GT2.tsx b/Ejectable/GT2.tsx
index 85e9d2f9..b4fd2cdd 100644
--- a/Ejectable/GT2.tsx
+++ b/Ejectable/GT2.tsx
@@ -170,7 +170,6 @@ export class GT2 {
public reset() {
this.distance = 0.0;
- this.co2Rate = 0.0;
this.endPoint = new Coordinate(0,0);
this.startPoint = new Coordinate(0,0);
this.v = 0;
diff --git a/Ejectable/app.json b/Ejectable/app.json
index 5cab0e1d..74cb0c56 100644
--- a/Ejectable/app.json
+++ b/Ejectable/app.json
@@ -19,7 +19,13 @@
"**/*"
],
"ios": {
- "supportsTablet": true
+ "supportsTablet": true,
+ "infoPlist": {
+ "UIBackgroundModes": [
+ "location",
+ "fetch"
+ ]
+ }
},
"android": {
"adaptiveIcon": {
diff --git a/Ejectable/package-lock.json b/Ejectable/package-lock.json
index a5271756..a6139bd5 100644
--- a/Ejectable/package-lock.json
+++ b/Ejectable/package-lock.json
@@ -6142,6 +6142,16 @@
"resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-1.0.4.tgz",
"integrity": "sha512-s7nc496D/Zn1NGiMJ5wu6HyIdXxbgGtmZZtbHm7rpbcmLdf28GmMSNHDx7M0t00BMhky7VAurTCUo+BJs8ugsw=="
},
+ "expo-task-manager": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/expo-task-manager/-/expo-task-manager-9.2.2.tgz",
+ "integrity": "sha512-GDObZYoCT1bwYXYtT9RinRhR7Y+mCy6DvO7OvRFW3hgxHVXvAM8YFA8jr3airY0XF73aT35/nFnOe+MFCELXFA==",
+ "requires": {
+ "@expo/config-plugins": "^3.0.0",
+ "expo-modules-core": "~0.2.0",
+ "unimodules-app-loader": "~2.2.0"
+ }
+ },
"expo-web-browser": {
"version": "9.2.0",
"resolved": "https://registry.npmjs.org/expo-web-browser/-/expo-web-browser-9.2.0.tgz",
@@ -15002,6 +15012,11 @@
"resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz",
"integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg=="
},
+ "unimodules-app-loader": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/unimodules-app-loader/-/unimodules-app-loader-2.2.0.tgz",
+ "integrity": "sha512-porQWVWu7meIrCJ+c+H7eJyeC2rHioLUZiv4UcOs33SAyUhR4X05tCC8NIOuQJsF08Fj3a0ck7HUsd5xq+LqKA=="
+ },
"union-value": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
diff --git a/Ejectable/package.json b/Ejectable/package.json
index 45d2359c..0ee752e4 100644
--- a/Ejectable/package.json
+++ b/Ejectable/package.json
@@ -33,7 +33,8 @@
"react-native-reanimated": "~2.2.0",
"react-native-safe-area-context": "3.2.0",
"react-native-screens": "~3.4.0",
- "react-native-web": "~0.13.12"
+ "react-native-web": "~0.13.12",
+ "expo-task-manager": "~9.2.2"
},
"devDependencies": {
"@babel/core": "^7.9.0",
diff --git a/Ejectable/screens/SettingsScreen.tsx b/Ejectable/screens/SettingsScreen.tsx
index 3c427e56..795172a7 100644
--- a/Ejectable/screens/SettingsScreen.tsx
+++ b/Ejectable/screens/SettingsScreen.tsx
@@ -36,7 +36,7 @@ export default function SettingsScreen() {