summaryrefslogtreecommitdiffstats
path: root/src/plugins/android/src/wrappers
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/android/src/wrappers')
-rw-r--r--src/plugins/android/src/wrappers/jni/androidcamera.cpp14
-rw-r--r--src/plugins/android/src/wrappers/jni/androidcamera.h1
2 files changed, 15 insertions, 0 deletions
diff --git a/src/plugins/android/src/wrappers/jni/androidcamera.cpp b/src/plugins/android/src/wrappers/jni/androidcamera.cpp
index 0f2a43531..e3afddd59 100644
--- a/src/plugins/android/src/wrappers/jni/androidcamera.cpp
+++ b/src/plugins/android/src/wrappers/jni/androidcamera.cpp
@@ -42,6 +42,7 @@
#include "androidsurfacetexture.h"
#include "androidsurfaceview.h"
#include "qandroidmultimediautils.h"
+#include "qandroidglobal.h"
#include <qstringlist.h>
#include <qdebug.h>
@@ -55,6 +56,11 @@ QT_BEGIN_NAMESPACE
static const char QtCameraListenerClassName[] = "org/qtproject/qt5/android/multimedia/QtCameraListener";
+static QString cameraPermissionKey()
+{
+ return QStringLiteral("android.permission.CAMERA");
+}
+
typedef QHash<int, AndroidCamera *> CameraMap;
Q_GLOBAL_STATIC(CameraMap, cameras)
Q_GLOBAL_STATIC(QReadWriteLock, rwLock)
@@ -756,6 +762,9 @@ QJNIObjectPrivate AndroidCamera::getCameraObject()
int AndroidCamera::getNumberOfCameras()
{
+ if (!requestCameraPermission())
+ return 0;
+
return QJNIObjectPrivate::callStaticMethod<jint>("android/hardware/Camera",
"getNumberOfCameras");
}
@@ -790,6 +799,11 @@ void AndroidCamera::getCameraInfo(int id, AndroidCameraInfo *info)
}
}
+bool AndroidCamera::requestCameraPermission()
+{
+ return qt_androidRequestPermission(cameraPermissionKey());
+}
+
void AndroidCamera::startPreview()
{
Q_D(AndroidCamera);
diff --git a/src/plugins/android/src/wrappers/jni/androidcamera.h b/src/plugins/android/src/wrappers/jni/androidcamera.h
index e58a81f8e..5ae141f01 100644
--- a/src/plugins/android/src/wrappers/jni/androidcamera.h
+++ b/src/plugins/android/src/wrappers/jni/androidcamera.h
@@ -201,6 +201,7 @@ public:
static int getNumberOfCameras();
static void getCameraInfo(int id, AndroidCameraInfo *info);
+ static bool requestCameraPermission();
static bool initJNI(JNIEnv *env);