diff options
Diffstat (limited to 'lib/utils/esense_input.dart')
-rw-r--r-- | lib/utils/esense_input.dart | 16 |
1 files changed, 13 insertions, 3 deletions
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<void> _askForPermissions() async { - if (!Platform.isAndroid && !Platform.isIOS) return; + Future<bool> _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<void> 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; |