summaryrefslogtreecommitdiffstats
path: root/src/plugins/android/src/wrappers/jni/androidcamera.cpp
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2017-06-07 12:06:52 +0200
committerLiang Qi <liang.qi@qt.io>2017-06-07 12:52:58 +0200
commit7fdb88a86b0782e7170eefe3dfe7ab3e9c81f847 (patch)
tree0fb34738dd5b4abd222ffac7b25f904c456006d9 /src/plugins/android/src/wrappers/jni/androidcamera.cpp
parentbadecdbc46df6ada383f1dfd006fa3dfff1706c6 (diff)
parenta6cc1af0546ab10701c10475315139ebb50ad1e5 (diff)
Merge remote-tracking branch 'origin/5.9' into dev
Conflicts: .qmake.conf Change-Id: I20470ed193e818eefedd975d89f755fb9d673241
Diffstat (limited to 'src/plugins/android/src/wrappers/jni/androidcamera.cpp')
-rw-r--r--src/plugins/android/src/wrappers/jni/androidcamera.cpp14
1 files changed, 14 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);