aboutsummaryrefslogtreecommitdiffstats
path: root/examples/bluetooth/heartrate_game/devicefinder.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/bluetooth/heartrate_game/devicefinder.py')
-rw-r--r--examples/bluetooth/heartrate_game/devicefinder.py31
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()