diff options
Diffstat (limited to 'lib/utils')
| -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; | 
