From 4c1d029216c29f786f12fa278b9dd7bf39129235 Mon Sep 17 00:00:00 2001 From: Orangerot Date: Mon, 13 Jan 2025 20:00:27 +0100 Subject: feat: check if bluetooth is enabled; ability to disconnect from ESense --- lib/utils/esense_input.dart | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'lib/utils') diff --git a/lib/utils/esense_input.dart b/lib/utils/esense_input.dart index 4edb983..6eb4222 100644 --- a/lib/utils/esense_input.dart +++ b/lib/utils/esense_input.dart @@ -29,21 +29,30 @@ class ESenseInput { _listenToESense(); } - Future _askForPermissions() async { - if (!Platform.isAndroid && !Platform.isIOS) return; + Future _askForPermissions() async { + if (!Platform.isAndroid && !Platform.isIOS) return false; + if (!await Permission.bluetooth.serviceStatus.isEnabled) { + deviceStatus.value = "Bluetooth is disabled!"; + return false; + } if (!(await Permission.bluetoothScan.request().isGranted && await Permission.bluetoothConnect.request().isGranted && await Permission.bluetooth.request().isGranted)) { print( 'WARNING - no permission to use Bluetooth granted. Cannot access eSense device.'); + deviceStatus.value = "Insufficiant Permissions"; + return false; } // for some strange reason, Android requires permission to location for Bluetooth to work.....? if (Platform.isAndroid) { if (!(await Permission.locationWhenInUse.request().isGranted)) { print( 'WARNING - no permission to access location granted. Cannot access eSense device.'); + deviceStatus.value = "Insufficiant Permissions"; + return false; } } + return true; } void _listenToESense() { @@ -151,7 +160,8 @@ class ESenseInput { Future connectToESense(String deviceName) async { if (!connected) { - await _askForPermissions(); + bool permissionSuccessfull = await _askForPermissions(); + if (!permissionSuccessfull) return; print('Trying to connect to eSense device namend \'$deviceName\''); eSenseDeviceName = deviceName; eSenseManager.deviceName = deviceName; -- cgit v1.2.3