From 13887bcbda9822af72acb73febcd9053a528a412 Mon Sep 17 00:00:00 2001 From: Ren Juan Date: Tue, 24 Aug 2021 07:57:21 +0000 Subject: [PATCH] * --- Ejectable/ExpoTaskMgr.js | 34 ++++++++++++++++++++++++++++ Ejectable/GT2.tsx | 1 - Ejectable/app.json | 8 ++++++- Ejectable/package-lock.json | 15 ++++++++++++ Ejectable/package.json | 3 ++- Ejectable/screens/SettingsScreen.tsx | 4 ++-- Ejectable/screens/TripScreen.tsx | 6 ++--- 7 files changed, 63 insertions(+), 8 deletions(-) create mode 100644 Ejectable/ExpoTaskMgr.js 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() {