diff options
author | Shyamnath Premnadh <Shyamnath.Premnadh@qt.io> | 2023-09-20 16:13:50 +0200 |
---|---|---|
committer | Shyamnath Premnadh <Shyamnath.Premnadh@qt.io> | 2023-09-25 09:29:56 +0200 |
commit | 2e05404b77db17dc9577da19df723e3819377eda (patch) | |
tree | 95c349eaed6e223ccd8ba28572102c7dd5fdc26f /examples/multimedia | |
parent | 19087316d6d6130a824aa36c8e8bd9adb43a7151 (diff) |
Example Revamp: Audiosource example
- Changes as per e3c0c190136a55634451024cfa3ac8024c74caa3
- Add the new permission API functions to request and check for
Android runtime permissions
Task-number: PYSIDE-1612
Task-number: PYSIDE-2206
Pick-to: 6.6
Change-Id: Ie1213872775f1570dff7b9a7102fe3494996b9a9
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'examples/multimedia')
-rw-r--r-- | examples/multimedia/audiosource/audiosource.py | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/examples/multimedia/audiosource/audiosource.py b/examples/multimedia/audiosource/audiosource.py index 5b476af9b..555e0b937 100644 --- a/examples/multimedia/audiosource/audiosource.py +++ b/examples/multimedia/audiosource/audiosource.py @@ -12,11 +12,12 @@ Note: This Python example is not fully complete as compared to its C++ counterpa Only the push mode works at the moment. For the pull mode to work, the class QIODevice have python bindings that needs to be fixed. """ +import os import sys from typing import Optional import PySide6 -from PySide6.QtCore import QByteArray, QMargins, Qt, Slot +from PySide6.QtCore import QByteArray, QMargins, Qt, Slot, qWarning from PySide6.QtGui import QPainter, QPalette from PySide6.QtMultimedia import ( QAudio, @@ -32,8 +33,13 @@ from PySide6.QtWidgets import ( QSlider, QVBoxLayout, QWidget, + QLabel ) +is_android = os.environ.get('ANDROID_ARGUMENT') + +if is_android: + from PySide6.QtCore import QCoreApplication, QMicrophonePermission class AudioInfo: def __init__(self, format: QAudioFormat): @@ -95,6 +101,22 @@ class InputTest(QWidget): super().__init__() self.m_devices = QMediaDevices(self) self.m_pullMode = False + self.initialize() + + @Slot() + def initialize(self): + if is_android: + permission = QMicrophonePermission() + permission_status = qApp.checkPermission(permission) + if permission_status == Qt.PermissionStatus.Undetermined: + qApp.requestPermission(permission, self, self.initialize) + return + if permission_status == Qt.PermissionStatus.Denied: + qWarning("Microphone permission is not granted!") + self.initializeErrorWindow() + return + elif permission_status == Qt.PermissionStatus.Granted: + print("[AudioSource] Microphone permission granted") self.initialize_window() self.initialize_audio(QMediaDevices.defaultAudioInput()) @@ -132,6 +154,13 @@ class InputTest(QWidget): self.m_suspend_resume_button.clicked.connect(self.toggle_suspend) self.layout.addWidget(self.m_suspend_resume_button) + def initializeErrorWindow(self): + self.layout = QVBoxLayout(self) + error_label = QLabel(self.tr("Microphone permission is not granted!")) + error_label.setWordWrap(True) + error_label.setAlignment(Qt.AlignCenter) + self.layout.addWidget(error_label) + def initialize_audio(self, device_info: QAudioDevice): format = QAudioFormat() format.setSampleRate(8000) |