aboutsummaryrefslogtreecommitdiffstats
path: root/examples/multimedia
diff options
context:
space:
mode:
authorShyamnath Premnadh <Shyamnath.Premnadh@qt.io>2023-09-20 16:13:50 +0200
committerShyamnath Premnadh <Shyamnath.Premnadh@qt.io>2023-09-25 09:29:56 +0200
commit2e05404b77db17dc9577da19df723e3819377eda (patch)
tree95c349eaed6e223ccd8ba28572102c7dd5fdc26f /examples/multimedia
parent19087316d6d6130a824aa36c8e8bd9adb43a7151 (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.py31
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)