diff options
Diffstat (limited to 'examples/bluetooth/heartrate_game/devicefinder.py')
-rw-r--r-- | examples/bluetooth/heartrate_game/devicefinder.py | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/examples/bluetooth/heartrate_game/devicefinder.py b/examples/bluetooth/heartrate_game/devicefinder.py index c69f8ab89..e581d12ec 100644 --- a/examples/bluetooth/heartrate_game/devicefinder.py +++ b/examples/bluetooth/heartrate_game/devicefinder.py @@ -1,18 +1,22 @@ # Copyright (C) 2022 The Qt Company Ltd. # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +import sys from PySide6.QtBluetooth import (QBluetoothDeviceDiscoveryAgent, QBluetoothDeviceInfo) from PySide6.QtQml import QmlElement -from PySide6.QtCore import QTimer, Property, Signal, Slot +from PySide6.QtCore import QTimer, Property, Signal, Slot, Qt from bluetoothbaseclass import BluetoothBaseClass from deviceinfo import DeviceInfo -from heartrate_global import simulator +from heartrate_global import simulator, is_android, error_not_nuitka + +if is_android or sys.platform == "darwin": + from PySide6.QtCore import QBluetoothPermission # To be used on the @QmlElement decorator # (QML_IMPORT_MINOR_VERSION is optional) -QML_IMPORT_NAME = "Shared" +QML_IMPORT_NAME = "HeartRateGame" QML_IMPORT_MAJOR_VERSION = 1 @@ -36,20 +40,33 @@ class DeviceFinder(BluetoothBaseClass): self.m_deviceDiscoveryAgent.finished.connect(self.scanFinished) self.m_deviceDiscoveryAgent.canceled.connect(self.scanFinished) #! [devicediscovery-1] - if simulator: + if simulator(): self.m_demoTimer.setSingleShot(True) self.m_demoTimer.setInterval(2000) self.m_demoTimer.timeout.connect(self.scanFinished) @Slot() def startSearch(self): + if is_android or sys.platform == "darwin": + error_not_nuitka() + permission = QBluetoothPermission() + permission.setCommunicationModes(QBluetoothPermission.Access) + permission_status = qApp.checkPermission(permission) # noqa: F821 + if permission_status == Qt.PermissionStatus.Undetermined: + qApp.requestPermission(permission, self, self.startSearch) # noqa: F82 1 + return + elif permission_status == Qt.PermissionStatus.Denied: + return + elif permission_status == Qt.PermissionStatus.Granted: + print("[HeartRateGame] Bluetooth Permission Granted") + self.clearMessages() self.m_deviceHandler.setDevice(None) self.m_devices.clear() self.devicesChanged.emit() - if simulator: + if simulator(): self.m_demoTimer.start() else: #! [devicediscovery-2] @@ -82,7 +99,7 @@ class DeviceFinder(BluetoothBaseClass): @Slot() def scanFinished(self): - if simulator: + if simulator(): # Only for testing for i in range(5): self.m_devices.append(DeviceInfo(QBluetoothDeviceInfo())) @@ -113,7 +130,7 @@ class DeviceFinder(BluetoothBaseClass): @Property(bool, notify=scanningChanged) def scanning(self): - if simulator: + if simulator(): return self.m_demoTimer.isActive() return self.m_deviceDiscoveryAgent.isActive() |