summaryrefslogtreecommitdiffstats
path: root/src/plugins/android/src/qandroidmediaserviceplugin.cpp
diff options
context:
space:
mode:
authorYoann Lopes <yoann.lopes@digia.com>2014-02-03 19:47:33 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-28 14:10:22 +0100
commitb2f40ef75dac238be650b5ade013d39d6a741871 (patch)
treee1ae508d72f01e35880f93f92f0e07f9d003855e /src/plugins/android/src/qandroidmediaserviceplugin.cpp
parentf783c48a170c8ec86e4904b786a46dae5f07dfa7 (diff)
Android: implement QCameraInfoControl.
VideoOutput will now take into account the camera sensor orientation to adjust the viewport orientation, we don't need to apply a rotation on the Android Camera anymore. Change-Id: Ia7639f0a5711ab6cc6f80b9716bc1a6f389499b4 Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Diffstat (limited to 'src/plugins/android/src/qandroidmediaserviceplugin.cpp')
-rw-r--r--src/plugins/android/src/qandroidmediaserviceplugin.cpp36
1 files changed, 29 insertions, 7 deletions
diff --git a/src/plugins/android/src/qandroidmediaserviceplugin.cpp b/src/plugins/android/src/qandroidmediaserviceplugin.cpp
index 03c2b287c..005def8cf 100644
--- a/src/plugins/android/src/qandroidmediaserviceplugin.cpp
+++ b/src/plugins/android/src/qandroidmediaserviceplugin.cpp
@@ -43,8 +43,9 @@
#include "qandroidmediaservice.h"
#include "qandroidcaptureservice.h"
-#include "qandroidvideodeviceselectorcontrol.h"
#include "qandroidaudioinputselectorcontrol.h"
+#include "qandroidcamerainfocontrol.h"
+#include "qandroidcamerasession.h"
#include "jmediaplayer.h"
#include "jsurfacetexture.h"
#include "jsurfacetextureholder.h"
@@ -98,16 +99,21 @@ QMediaServiceProviderHint::Features QAndroidMediaServicePlugin::supportedFeature
QByteArray QAndroidMediaServicePlugin::defaultDevice(const QByteArray &service) const
{
- if (service == Q_MEDIASERVICE_CAMERA)
- return QAndroidVideoDeviceSelectorControl::defaultDeviceName();
+ if (service == Q_MEDIASERVICE_CAMERA && !QAndroidCameraSession::availableCameras().isEmpty())
+ return QAndroidCameraSession::availableCameras().first().name;
return QByteArray();
}
QList<QByteArray> QAndroidMediaServicePlugin::devices(const QByteArray &service) const
{
- if (service == Q_MEDIASERVICE_CAMERA)
- return QAndroidVideoDeviceSelectorControl::availableDevices();
+ if (service == Q_MEDIASERVICE_CAMERA) {
+ QList<QByteArray> devices;
+ const QList<AndroidCameraInfo> &cameras = QAndroidCameraSession::availableCameras();
+ for (int i = 0; i < cameras.count(); ++i)
+ devices.append(cameras.at(i).name);
+ return devices;
+ }
if (service == Q_MEDIASERVICE_AUDIOSOURCE)
return QAndroidAudioInputSelectorControl::availableDevices();
@@ -117,8 +123,14 @@ QList<QByteArray> QAndroidMediaServicePlugin::devices(const QByteArray &service)
QString QAndroidMediaServicePlugin::deviceDescription(const QByteArray &service, const QByteArray &device)
{
- if (service == Q_MEDIASERVICE_CAMERA)
- return QAndroidVideoDeviceSelectorControl::availableDeviceDescription(device);
+ if (service == Q_MEDIASERVICE_CAMERA) {
+ const QList<AndroidCameraInfo> &cameras = QAndroidCameraSession::availableCameras();
+ for (int i = 0; i < cameras.count(); ++i) {
+ const AndroidCameraInfo &info = cameras.at(i);
+ if (info.name == device)
+ return info.description;
+ }
+ }
if (service == Q_MEDIASERVICE_AUDIOSOURCE)
return QAndroidAudioInputSelectorControl::availableDeviceDescription(device);
@@ -126,6 +138,16 @@ QString QAndroidMediaServicePlugin::deviceDescription(const QByteArray &service,
return QString();
}
+QCamera::Position QAndroidMediaServicePlugin::cameraPosition(const QByteArray &device) const
+{
+ return QAndroidCameraInfoControl::position(device);
+}
+
+int QAndroidMediaServicePlugin::cameraOrientation(const QByteArray &device) const
+{
+ return QAndroidCameraInfoControl::orientation(device);
+}
+
Q_DECL_EXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void * /*reserved*/)
{