summaryrefslogtreecommitdiffstats
path: root/src/multimedia/platform/android/common/qandroidmultimediautils.cpp
diff options
context:
space:
mode:
authorAssam Boudjelthia <assam.boudjelthia@qt.io>2021-05-06 16:46:37 +0300
committerLars Knoll <lars.knoll@qt.io>2021-05-18 07:53:16 +0000
commit4a2d272886eeb4f61c4830dbe1f3a0421d167fda (patch)
tree1c716a61809b49dfc93abbf85ad3bb76e3819768 /src/multimedia/platform/android/common/qandroidmultimediautils.cpp
parent9c3be78dacfad5817fba1afa8bba44b1c05652d2 (diff)
Android: Use public Jni APIs as possible
* Update usage of JNI APIs (QJniObject, QJniEnvironment) * Avoid usage of QtAndroidPrivate as possible by using QNativeInterface Some instances still use native JNI APIs, because they don't yet have an alternative with the Qt public APIs, those can be fixed later. Task-number: QTBUG-93800 Change-Id: Iae0f18ef450c11a0f93133d948e78dc013c7ff3b Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/multimedia/platform/android/common/qandroidmultimediautils.cpp')
-rw-r--r--src/multimedia/platform/android/common/qandroidmultimediautils.cpp40
1 files changed, 19 insertions, 21 deletions
diff --git a/src/multimedia/platform/android/common/qandroidmultimediautils.cpp b/src/multimedia/platform/android/common/qandroidmultimediautils.cpp
index 738303099..201744444 100644
--- a/src/multimedia/platform/android/common/qandroidmultimediautils.cpp
+++ b/src/multimedia/platform/android/common/qandroidmultimediautils.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2021 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Toolkit.
@@ -41,8 +41,7 @@
#include "qandroidglobal_p.h"
#include <qlist.h>
-#include <QtCore/private/qjni_p.h>
-#include <QtCore/private/qjnihelpers_p.h>
+#include <QtCore/qcoreapplication.h>
QT_BEGIN_NAMESPACE
@@ -109,40 +108,39 @@ AndroidCamera::ImageFormat qt_androidImageFormatFromPixelFormat(QVideoFrameForma
}
}
-static bool androidRequestPermission(const QString &key)
+static bool androidRequestPermission(QPermission::PermisionType key)
{
- using namespace QtAndroidPrivate;
-
- if (androidSdkVersion() < 23)
+ if (QNativeInterface::QAndroidApplication::sdkVersion() < 23)
return true;
- PermissionsResult res = checkPermission(key);
- if (res == PermissionsResult::Granted) // Permission already granted?
+ // Permission already granted?
+ if (QCoreApplication::checkPermission(key).result() == QPermission::Authorized)
return true;
- QJNIEnvironmentPrivate env;
- const auto &results = requestPermissionsSync(env, QStringList() << key);
- if (!results.contains(key)) {
- qCWarning(qtAndroidMediaPlugin, "No permission found for key: %s", qPrintable(key));
+ if (QCoreApplication::requestPermission(key).result() != QPermission::Authorized)
return false;
- }
-
- if (results[key] == PermissionsResult::Denied) {
- qCDebug(qtAndroidMediaPlugin, "%s - Permission denied by user!", qPrintable(key));
- return false;
- }
return true;
}
bool qt_androidRequestCameraPermission()
{
- return androidRequestPermission(QLatin1String("android.permission.CAMERA"));
+ if (!androidRequestPermission(QPermission::Camera)) {
+ qCDebug(qtAndroidMediaPlugin, "Camera permission denied by user!");
+ return false;
+ }
+
+ return true;
}
bool qt_androidRequestRecordingPermission()
{
- return androidRequestPermission(QLatin1String("android.permission.RECORD_AUDIO"));
+ if (!androidRequestPermission(QPermission::Microphone)) {
+ qCDebug(qtAndroidMediaPlugin, "Microphone permission denied by user!");
+ return false;
+ }
+
+ return true;
}
QT_END_NAMESPACE