Android: Adapt the multimedia plugin to new QJNI API

Change-Id: Id87f5518724eed6c9de6d5d3b8141860bd511643
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
This commit is contained in:
Christian Strømme
2013-09-12 13:14:56 +02:00
committed by The Qt Project
parent 17480111ed
commit ac029c65f2
19 changed files with 229 additions and 253 deletions

View File

@@ -41,7 +41,7 @@
#include "qandroidvideorendercontrol.h" #include "qandroidvideorendercontrol.h"
#include <QtPlatformSupport/private/qjnihelpers_p.h> #include <QtCore/private/qjni_p.h>
#include "jsurfacetextureholder.h" #include "jsurfacetextureholder.h"
#include <QAbstractVideoSurface> #include <QAbstractVideoSurface>
#include <QOpenGLContext> #include <QOpenGLContext>
@@ -268,7 +268,7 @@ jobject QAndroidVideoRendererControl::surfaceHolder()
return 0; return 0;
if (!m_surfaceHolder) { if (!m_surfaceHolder) {
m_androidSurface = new QJNIObject("android/view/Surface", m_androidSurface = new QJNIObjectPrivate("android/view/Surface",
"(Landroid/graphics/SurfaceTexture;)V", "(Landroid/graphics/SurfaceTexture;)V",
m_surfaceTexture->object()); m_surfaceTexture->object());

View File

@@ -90,7 +90,7 @@ private:
bool m_useImage; bool m_useImage;
QSize m_nativeSize; QSize m_nativeSize;
QJNIObject *m_androidSurface; QJNIObjectPrivate *m_androidSurface;
JSurfaceTexture *m_surfaceTexture; JSurfaceTexture *m_surfaceTexture;
JSurfaceTextureHolder *m_surfaceHolder; JSurfaceTextureHolder *m_surfaceHolder;
uint m_externalTex; uint m_externalTex;

View File

@@ -45,7 +45,7 @@
#include "qandroidcamerasession.h" #include "qandroidcamerasession.h"
#include "jmultimediautils.h" #include "jmultimediautils.h"
#include "qandroidmultimediautils.h" #include "qandroidmultimediautils.h"
#include <QtPlatformSupport/private/qjnihelpers_p.h> #include <QtCore/private/qjni_p.h>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
@@ -466,22 +466,20 @@ void QAndroidCaptureSession::onCameraOpened()
QAndroidCaptureSession::CaptureProfile QAndroidCaptureSession::getProfile(int id) QAndroidCaptureSession::CaptureProfile QAndroidCaptureSession::getProfile(int id)
{ {
CaptureProfile profile; CaptureProfile profile;
bool hasProfile = QJNIObject::callStaticMethod<jboolean>("android/media/CamcorderProfile", bool hasProfile = QJNIObjectPrivate::callStaticMethod<jboolean>("android/media/CamcorderProfile",
"hasProfile", "hasProfile",
"(II)Z", "(II)Z",
m_cameraSession->camera()->cameraId(), m_cameraSession->camera()->cameraId(),
id); id);
if (hasProfile) { if (hasProfile) {
QJNILocalRef<jobject> ref = QJNIObject::callStaticObjectMethod<jobject>("android/media/CamcorderProfile", QJNIObjectPrivate obj = QJNIObjectPrivate::callStaticObjectMethod("android/media/CamcorderProfile",
"get", "get",
"(II)Landroid/media/CamcorderProfile;", "(II)Landroid/media/CamcorderProfile;",
m_cameraSession->camera()->cameraId(), m_cameraSession->camera()->cameraId(),
id); id);
QJNIObject obj(ref.object());
profile.outputFormat = JMediaRecorder::OutputFormat(obj.getField<jint>("fileFormat")); profile.outputFormat = JMediaRecorder::OutputFormat(obj.getField<jint>("fileFormat"));
profile.audioEncoder = JMediaRecorder::AudioEncoder(obj.getField<jint>("audioCodec")); profile.audioEncoder = JMediaRecorder::AudioEncoder(obj.getField<jint>("audioCodec"));
profile.audioBitRate = obj.getField<jint>("audioBitRate"); profile.audioBitRate = obj.getField<jint>("audioBitRate");

View File

@@ -43,7 +43,6 @@
#include "qandroidcamerasession.h" #include "qandroidcamerasession.h"
#include "jcamera.h" #include "jcamera.h"
#include <QtPlatformSupport/private/qjnihelpers_p.h>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
@@ -103,12 +102,12 @@ void QAndroidVideoDeviceSelectorControl::update()
m_names.clear(); m_names.clear();
m_descriptions.clear(); m_descriptions.clear();
QJNIObject cameraInfo("android/hardware/Camera$CameraInfo"); QJNIObjectPrivate cameraInfo("android/hardware/Camera$CameraInfo");
int numCameras = QJNIObject::callStaticMethod<jint>("android/hardware/Camera", int numCameras = QJNIObjectPrivate::callStaticMethod<jint>("android/hardware/Camera",
"getNumberOfCameras"); "getNumberOfCameras");
for (int i = 0; i < numCameras; ++i) { for (int i = 0; i < numCameras; ++i) {
QJNIObject::callStaticMethod<void>("android/hardware/Camera", QJNIObjectPrivate::callStaticMethod<void>("android/hardware/Camera",
"getCameraInfo", "getCameraInfo",
"(ILandroid/hardware/Camera$CameraInfo;)V", "(ILandroid/hardware/Camera$CameraInfo;)V",
i, cameraInfo.object()); i, cameraInfo.object());

View File

@@ -1,5 +1,5 @@
TARGET = qtmedia_android TARGET = qtmedia_android
QT += multimedia-private gui-private platformsupport-private network QT += multimedia-private core-private network
PLUGIN_TYPE = mediaservice PLUGIN_TYPE = mediaservice
PLUGIN_CLASS_NAME = QAndroidMediaServicePlugin PLUGIN_CLASS_NAME = QAndroidMediaServicePlugin

View File

@@ -41,7 +41,7 @@
#include "jcamera.h" #include "jcamera.h"
#include <QtPlatformSupport/private/qjnihelpers_p.h> #include <QtCore/private/qjni_p.h>
#include <qstringlist.h> #include <qstringlist.h>
#include <qdebug.h> #include <qdebug.h>
#include "qandroidmultimediautils.h" #include "qandroidmultimediautils.h"
@@ -53,9 +53,8 @@ static QMap<int, JCamera*> g_objectMap;
static QRect areaToRect(jobject areaObj) static QRect areaToRect(jobject areaObj)
{ {
QJNIObject area(areaObj); QJNIObjectPrivate area(areaObj);
QJNILocalRef<jobject> rectRef = area.getObjectField<jobject>("rect", "android/graphics/Rect"); QJNIObjectPrivate rect = area.getObjectField("rect", "android/graphics/Rect");
QJNIObject rect(rectRef.object());
return QRect(rect.getField<jint>("left"), return QRect(rect.getField<jint>("left"),
rect.getField<jint>("top"), rect.getField<jint>("top"),
@@ -63,17 +62,17 @@ static QRect areaToRect(jobject areaObj)
rect.callMethod<jint>("height")); rect.callMethod<jint>("height"));
} }
static QJNILocalRef<jobject> rectToArea(const QRect &rect) static QJNIObjectPrivate rectToArea(const QRect &rect)
{ {
QJNIObject jrect("android/graphics/Rect", QJNIObjectPrivate jrect("android/graphics/Rect",
"(IIII)V", "(IIII)V",
rect.left(), rect.top(), rect.right(), rect.bottom()); rect.left(), rect.top(), rect.right(), rect.bottom());
QJNIObject area("android/hardware/Camera$Area", QJNIObjectPrivate area("android/hardware/Camera$Area",
"(Landroid/graphics/Rect;I)V", "(Landroid/graphics/Rect;I)V",
jrect.object(), 500); jrect.object(), 500);
return QJNILocalRef<jobject>(QAttachedJNIEnv()->NewLocalRef(area.object())); return area;
} }
// native method for QtCamera.java // native method for QtCamera.java
@@ -105,27 +104,25 @@ static void notifyPictureCaptured(JNIEnv *env, jobject, int id, jbyteArray data)
JCamera::JCamera(int cameraId, jobject cam) JCamera::JCamera(int cameraId, jobject cam)
: QObject() : QObject()
, QJNIObject(cam) , QJNIObjectPrivate(cam)
, m_cameraId(cameraId) , m_cameraId(cameraId)
, m_info(0)
, m_parameters(0)
, m_hasAPI14(false) , m_hasAPI14(false)
{ {
if (isValid()) { if (isValid()) {
g_objectMap.insert(cameraId, this); g_objectMap.insert(cameraId, this);
m_info = new QJNIObject("android/hardware/Camera$CameraInfo"); m_info = QJNIObjectPrivate("android/hardware/Camera$CameraInfo");
callStaticMethod<void>("android/hardware/Camera", callStaticMethod<void>("android/hardware/Camera",
"getCameraInfo", "getCameraInfo",
"(ILandroid/hardware/Camera$CameraInfo;)V", "(ILandroid/hardware/Camera$CameraInfo;)V",
cameraId, m_info->object()); cameraId, m_info.object());
QJNILocalRef<jobject> params = callObjectMethod<jobject>("getParameters", QJNIObjectPrivate params = callObjectMethod("getParameters",
"()Landroid/hardware/Camera$Parameters;"); "()Landroid/hardware/Camera$Parameters;");
m_parameters = new QJNIObject(params.object()); m_parameters = QJNIObjectPrivate(params);
// Check if API 14 is available // Check if API 14 is available
QAttachedJNIEnv env; QJNIEnvironmentPrivate env;
jclass clazz = env->FindClass("android/hardware/Camera"); jclass clazz = env->FindClass("android/hardware/Camera");
if (env->ExceptionCheck()) { if (env->ExceptionCheck()) {
clazz = 0; clazz = 0;
@@ -147,20 +144,18 @@ JCamera::~JCamera()
{ {
if (isValid()) if (isValid())
g_objectMap.remove(m_cameraId); g_objectMap.remove(m_cameraId);
delete m_parameters;
delete m_info;
} }
JCamera *JCamera::open(int cameraId) JCamera *JCamera::open(int cameraId)
{ {
QAttachedJNIEnv env; QJNIEnvironmentPrivate env;
QJNILocalRef<jobject> camera = callStaticObjectMethod<jobject>(g_qtCameraClass, QJNIObjectPrivate camera = callStaticObjectMethod(g_qtCameraClass,
"open", "open",
"(I)Lorg/qtproject/qt5/android/multimedia/QtCamera;", "(I)Lorg/qtproject/qt5/android/multimedia/QtCamera;",
cameraId); cameraId);
if (camera.isNull()) if (!camera.isValid())
return 0; return 0;
else else
return new JCamera(cameraId, camera.object()); return new JCamera(cameraId, camera.object());
@@ -184,30 +179,28 @@ void JCamera::reconnect()
void JCamera::release() void JCamera::release()
{ {
m_previewSize = QSize(); m_previewSize = QSize();
delete m_parameters; m_parameters = QJNIObjectPrivate();
m_parameters = 0;
callMethod<void>("release"); callMethod<void>("release");
} }
JCamera::CameraFacing JCamera::getFacing() JCamera::CameraFacing JCamera::getFacing()
{ {
return CameraFacing(m_info->getField<jint>("facing")); return CameraFacing(m_info.getField<jint>("facing"));
} }
int JCamera::getNativeOrientation() int JCamera::getNativeOrientation()
{ {
return m_info->getField<jint>("orientation"); return m_info.getField<jint>("orientation");
} }
QSize JCamera::getPreferredPreviewSizeForVideo() QSize JCamera::getPreferredPreviewSizeForVideo()
{ {
if (!m_parameters || !m_parameters->isValid()) if (!m_parameters.isValid())
return QSize(); return QSize();
QJNILocalRef<jobject> sizeRef = m_parameters->callObjectMethod<jobject>("getPreferredPreviewSizeForVideo", QJNIObjectPrivate size = m_parameters.callObjectMethod("getPreferredPreviewSizeForVideo",
"()Landroid/hardware/Camera$Size;"); "()Landroid/hardware/Camera$Size;");
QJNIObject size(sizeRef.object());
return QSize(size.getField<jint>("width"), size.getField<jint>("height")); return QSize(size.getField<jint>("width"), size.getField<jint>("height"));
} }
@@ -215,16 +208,14 @@ QList<QSize> JCamera::getSupportedPreviewSizes()
{ {
QList<QSize> list; QList<QSize> list;
if (m_parameters && m_parameters->isValid()) { if (m_parameters.isValid()) {
QJNILocalRef<jobject> sizeListRef = m_parameters->callObjectMethod<jobject>("getSupportedPreviewSizes", QJNIObjectPrivate sizeList = m_parameters.callObjectMethod("getSupportedPreviewSizes",
"()Ljava/util/List;"); "()Ljava/util/List;");
QJNIObject sizeList(sizeListRef.object());
int count = sizeList.callMethod<jint>("size"); int count = sizeList.callMethod<jint>("size");
for (int i = 0; i < count; ++i) { for (int i = 0; i < count; ++i) {
QJNILocalRef<jobject> sizeRef = sizeList.callObjectMethod<jobject>("get", QJNIObjectPrivate size = sizeList.callObjectMethod("get",
"(I)Ljava/lang/Object;", "(I)Ljava/lang/Object;",
i); i);
QJNIObject size(sizeRef.object());
list.append(QSize(size.getField<jint>("width"), size.getField<jint>("height"))); list.append(QSize(size.getField<jint>("width"), size.getField<jint>("height")));
} }
@@ -236,12 +227,12 @@ QList<QSize> JCamera::getSupportedPreviewSizes()
void JCamera::setPreviewSize(const QSize &size) void JCamera::setPreviewSize(const QSize &size)
{ {
if (!m_parameters || !m_parameters->isValid()) if (!m_parameters.isValid())
return; return;
m_previewSize = size; m_previewSize = size;
m_parameters->callMethod<void>("setPreviewSize", "(II)V", size.width(), size.height()); m_parameters.callMethod<void>("setPreviewSize", "(II)V", size.width(), size.height());
applyParameters(); applyParameters();
emit previewSizeChanged(); emit previewSizeChanged();
@@ -254,35 +245,33 @@ void JCamera::setPreviewTexture(jobject surfaceTexture)
bool JCamera::isZoomSupported() bool JCamera::isZoomSupported()
{ {
if (!m_parameters || !m_parameters->isValid()) if (!m_parameters.isValid())
return false; return false;
return m_parameters->callMethod<jboolean>("isZoomSupported"); return m_parameters.callMethod<jboolean>("isZoomSupported");
} }
int JCamera::getMaxZoom() int JCamera::getMaxZoom()
{ {
if (!m_parameters || !m_parameters->isValid()) if (!m_parameters.isValid())
return 0; return 0;
return m_parameters->callMethod<jint>("getMaxZoom"); return m_parameters.callMethod<jint>("getMaxZoom");
} }
QList<int> JCamera::getZoomRatios() QList<int> JCamera::getZoomRatios()
{ {
QList<int> ratios; QList<int> ratios;
if (m_parameters && m_parameters->isValid()) { if (m_parameters.isValid()) {
QJNILocalRef<jobject> ratioListRef = m_parameters->callObjectMethod<jobject>("getZoomRatios", QJNIObjectPrivate ratioList = m_parameters.callObjectMethod("getZoomRatios",
"()Ljava/util/List;"); "()Ljava/util/List;");
QJNIObject ratioList(ratioListRef.object());
int count = ratioList.callMethod<jint>("size"); int count = ratioList.callMethod<jint>("size");
for (int i = 0; i < count; ++i) { for (int i = 0; i < count; ++i) {
QJNILocalRef<jobject> zoomRatioRef = ratioList.callObjectMethod<jobject>("get", QJNIObjectPrivate zoomRatio = ratioList.callObjectMethod("get",
"(I)Ljava/lang/Object;", "(I)Ljava/lang/Object;",
i); i);
QJNIObject zoomRatio(zoomRatioRef.object());
ratios.append(zoomRatio.callMethod<jint>("intValue")); ratios.append(zoomRatio.callMethod<jint>("intValue"));
} }
} }
@@ -292,18 +281,18 @@ QList<int> JCamera::getZoomRatios()
int JCamera::getZoom() int JCamera::getZoom()
{ {
if (!m_parameters || !m_parameters->isValid()) if (!m_parameters.isValid())
return 0; return 0;
return m_parameters->callMethod<jint>("getZoom"); return m_parameters.callMethod<jint>("getZoom");
} }
void JCamera::setZoom(int value) void JCamera::setZoom(int value)
{ {
if (!m_parameters || !m_parameters->isValid()) if (!m_parameters.isValid())
return; return;
m_parameters->callMethod<void>("setZoom", "(I)V", value); m_parameters.callMethod<void>("setZoom", "(I)V", value);
applyParameters(); applyParameters();
} }
@@ -316,11 +305,11 @@ QString JCamera::getFlashMode()
{ {
QString value; QString value;
if (m_parameters && m_parameters->isValid()) { if (m_parameters.isValid()) {
QJNILocalRef<jstring> flashMode = m_parameters->callObjectMethod<jstring>("getFlashMode", QJNIObjectPrivate flashMode = m_parameters.callObjectMethod("getFlashMode",
"()Ljava/lang/String;"); "()Ljava/lang/String;");
if (!flashMode.isNull()) if (flashMode.isValid())
value = qt_convertJString(flashMode.object()); value = flashMode.toString();
} }
return value; return value;
@@ -328,12 +317,12 @@ QString JCamera::getFlashMode()
void JCamera::setFlashMode(const QString &value) void JCamera::setFlashMode(const QString &value)
{ {
if (!m_parameters || !m_parameters->isValid()) if (!m_parameters.isValid())
return; return;
m_parameters->callMethod<void>("setFlashMode", m_parameters.callMethod<void>("setFlashMode",
"(Ljava/lang/String;)V", "(Ljava/lang/String;)V",
qt_toJString(value).object()); QJNIObjectPrivate::fromString(value).object());
applyParameters(); applyParameters();
} }
@@ -346,11 +335,11 @@ QString JCamera::getFocusMode()
{ {
QString value; QString value;
if (m_parameters && m_parameters->isValid()) { if (m_parameters.isValid()) {
QJNILocalRef<jstring> focusMode = m_parameters->callObjectMethod<jstring>("getFocusMode", QJNIObjectPrivate focusMode = m_parameters.callObjectMethod("getFocusMode",
"()Ljava/lang/String;"); "()Ljava/lang/String;");
if (!focusMode.isNull()) if (focusMode.isValid())
value = qt_convertJString(focusMode.object()); value = focusMode.toString();
} }
return value; return value;
@@ -358,40 +347,39 @@ QString JCamera::getFocusMode()
void JCamera::setFocusMode(const QString &value) void JCamera::setFocusMode(const QString &value)
{ {
if (!m_parameters || !m_parameters->isValid()) if (!m_parameters.isValid())
return; return;
m_parameters->callMethod<void>("setFocusMode", m_parameters.callMethod<void>("setFocusMode",
"(Ljava/lang/String;)V", "(Ljava/lang/String;)V",
qt_toJString(value).object()); QJNIObjectPrivate::fromString(value).object());
applyParameters(); applyParameters();
} }
int JCamera::getMaxNumFocusAreas() int JCamera::getMaxNumFocusAreas()
{ {
if (!m_hasAPI14 || !m_parameters || !m_parameters->isValid()) if (!m_hasAPI14 || !m_parameters.isValid())
return 0; return 0;
return m_parameters->callMethod<jint>("getMaxNumFocusAreas"); return m_parameters.callMethod<jint>("getMaxNumFocusAreas");
} }
QList<QRect> JCamera::getFocusAreas() QList<QRect> JCamera::getFocusAreas()
{ {
QList<QRect> areas; QList<QRect> areas;
if (m_hasAPI14 && m_parameters && m_parameters->isValid()) { if (m_hasAPI14 && m_parameters.isValid()) {
QJNILocalRef<jobject> listRef = m_parameters->callObjectMethod<jobject>("getFocusAreas", QJNIObjectPrivate list = m_parameters.callObjectMethod("getFocusAreas",
"()Ljava/util/List;"); "()Ljava/util/List;");
if (!listRef.isNull()) { if (list.isValid()) {
QJNIObject list(listRef.object());
int count = list.callMethod<jint>("size"); int count = list.callMethod<jint>("size");
for (int i = 0; i < count; ++i) { for (int i = 0; i < count; ++i) {
QJNILocalRef<jobject> areaRef = list.callObjectMethod<jobject>("get", QJNIObjectPrivate area = list.callObjectMethod("get",
"(I)Ljava/lang/Object;", "(I)Ljava/lang/Object;",
i); i);
areas.append(areaToRect(areaRef.object())); areas.append(areaToRect(area.object()));
} }
} }
} }
@@ -401,14 +389,14 @@ QList<QRect> JCamera::getFocusAreas()
void JCamera::setFocusAreas(const QList<QRect> &areas) void JCamera::setFocusAreas(const QList<QRect> &areas)
{ {
if (!m_hasAPI14 || !m_parameters || !m_parameters->isValid()) if (!m_hasAPI14 || !m_parameters.isValid())
return; return;
QJNILocalRef<jobject> list(0); QJNIObjectPrivate list;
if (!areas.isEmpty()) { if (!areas.isEmpty()) {
QAttachedJNIEnv env; QJNIEnvironmentPrivate env;
QJNIObject arrayList("java/util/ArrayList", "(I)V", areas.size()); QJNIObjectPrivate arrayList("java/util/ArrayList", "(I)V", areas.size());
for (int i = 0; i < areas.size(); ++i) { for (int i = 0; i < areas.size(); ++i) {
arrayList.callMethod<jboolean>("add", arrayList.callMethod<jboolean>("add",
"(Ljava/lang/Object;)Z", "(Ljava/lang/Object;)Z",
@@ -416,10 +404,10 @@ void JCamera::setFocusAreas(const QList<QRect> &areas)
if (env->ExceptionCheck()) if (env->ExceptionCheck())
env->ExceptionClear(); env->ExceptionClear();
} }
list = env->NewLocalRef(arrayList.object()); list = arrayList;
} }
m_parameters->callMethod<void>("setFocusAreas", "(Ljava/util/List;)V", list.object()); m_parameters.callMethod<void>("setFocusAreas", "(Ljava/util/List;)V", list.object());
applyParameters(); applyParameters();
} }
@@ -437,93 +425,93 @@ void JCamera::cancelAutoFocus()
bool JCamera::isAutoExposureLockSupported() bool JCamera::isAutoExposureLockSupported()
{ {
if (!m_hasAPI14 || !m_parameters || !m_parameters->isValid()) if (!m_hasAPI14 || !m_parameters.isValid())
return false; return false;
return m_parameters->callMethod<jboolean>("isAutoExposureLockSupported"); return m_parameters.callMethod<jboolean>("isAutoExposureLockSupported");
} }
bool JCamera::getAutoExposureLock() bool JCamera::getAutoExposureLock()
{ {
if (!m_hasAPI14 || !m_parameters || !m_parameters->isValid()) if (!m_hasAPI14 || !m_parameters.isValid())
return false; return false;
return m_parameters->callMethod<jboolean>("getAutoExposureLock"); return m_parameters.callMethod<jboolean>("getAutoExposureLock");
} }
void JCamera::setAutoExposureLock(bool toggle) void JCamera::setAutoExposureLock(bool toggle)
{ {
if (!m_hasAPI14 || !m_parameters || !m_parameters->isValid()) if (!m_hasAPI14 || !m_parameters.isValid())
return; return;
m_parameters->callMethod<void>("setAutoExposureLock", "(Z)V", toggle); m_parameters.callMethod<void>("setAutoExposureLock", "(Z)V", toggle);
applyParameters(); applyParameters();
} }
bool JCamera::isAutoWhiteBalanceLockSupported() bool JCamera::isAutoWhiteBalanceLockSupported()
{ {
if (!m_hasAPI14 || !m_parameters || !m_parameters->isValid()) if (!m_hasAPI14 || !m_parameters.isValid())
return false; return false;
return m_parameters->callMethod<jboolean>("isAutoWhiteBalanceLockSupported"); return m_parameters.callMethod<jboolean>("isAutoWhiteBalanceLockSupported");
} }
bool JCamera::getAutoWhiteBalanceLock() bool JCamera::getAutoWhiteBalanceLock()
{ {
if (!m_hasAPI14 || !m_parameters || !m_parameters->isValid()) if (!m_hasAPI14 || !m_parameters.isValid())
return false; return false;
return m_parameters->callMethod<jboolean>("getAutoWhiteBalanceLock"); return m_parameters.callMethod<jboolean>("getAutoWhiteBalanceLock");
} }
void JCamera::setAutoWhiteBalanceLock(bool toggle) void JCamera::setAutoWhiteBalanceLock(bool toggle)
{ {
if (!m_hasAPI14 || !m_parameters || !m_parameters->isValid()) if (!m_hasAPI14 || !m_parameters.isValid())
return; return;
m_parameters->callMethod<void>("setAutoWhiteBalanceLock", "(Z)V", toggle); m_parameters.callMethod<void>("setAutoWhiteBalanceLock", "(Z)V", toggle);
applyParameters(); applyParameters();
} }
int JCamera::getExposureCompensation() int JCamera::getExposureCompensation()
{ {
if (!m_parameters || !m_parameters->isValid()) if (!m_parameters.isValid())
return 0; return 0;
return m_parameters->callMethod<jint>("getExposureCompensation"); return m_parameters.callMethod<jint>("getExposureCompensation");
} }
void JCamera::setExposureCompensation(int value) void JCamera::setExposureCompensation(int value)
{ {
if (!m_parameters || !m_parameters->isValid()) if (!m_parameters.isValid())
return; return;
m_parameters->callMethod<void>("setExposureCompensation", "(I)V", value); m_parameters.callMethod<void>("setExposureCompensation", "(I)V", value);
applyParameters(); applyParameters();
} }
float JCamera::getExposureCompensationStep() float JCamera::getExposureCompensationStep()
{ {
if (!m_parameters || !m_parameters->isValid()) if (!m_parameters.isValid())
return 0; return 0;
return m_parameters->callMethod<jfloat>("getExposureCompensationStep"); return m_parameters.callMethod<jfloat>("getExposureCompensationStep");
} }
int JCamera::getMinExposureCompensation() int JCamera::getMinExposureCompensation()
{ {
if (!m_parameters || !m_parameters->isValid()) if (!m_parameters.isValid())
return 0; return 0;
return m_parameters->callMethod<jint>("getMinExposureCompensation"); return m_parameters.callMethod<jint>("getMinExposureCompensation");
} }
int JCamera::getMaxExposureCompensation() int JCamera::getMaxExposureCompensation()
{ {
if (!m_parameters || !m_parameters->isValid()) if (!m_parameters.isValid())
return 0; return 0;
return m_parameters->callMethod<jint>("getMaxExposureCompensation"); return m_parameters.callMethod<jint>("getMaxExposureCompensation");
} }
QStringList JCamera::getSupportedSceneModes() QStringList JCamera::getSupportedSceneModes()
@@ -535,11 +523,11 @@ QString JCamera::getSceneMode()
{ {
QString value; QString value;
if (m_parameters && m_parameters->isValid()) { if (m_parameters.isValid()) {
QJNILocalRef<jstring> sceneMode = m_parameters->callObjectMethod<jstring>("getSceneMode", QJNIObjectPrivate sceneMode = m_parameters.callObjectMethod("getSceneMode",
"()Ljava/lang/String;"); "()Ljava/lang/String;");
if (!sceneMode.isNull()) if (sceneMode.isValid())
value = qt_convertJString(sceneMode.object()); value = sceneMode.toString();
} }
return value; return value;
@@ -547,12 +535,12 @@ QString JCamera::getSceneMode()
void JCamera::setSceneMode(const QString &value) void JCamera::setSceneMode(const QString &value)
{ {
if (!m_parameters || !m_parameters->isValid()) if (!m_parameters.isValid())
return; return;
m_parameters->callMethod<void>("setSceneMode", m_parameters.callMethod<void>("setSceneMode",
"(Ljava/lang/String;)V", "(Ljava/lang/String;)V",
qt_toJString(value).object()); QJNIObjectPrivate::fromString(value).object());
applyParameters(); applyParameters();
} }
@@ -565,11 +553,11 @@ QString JCamera::getWhiteBalance()
{ {
QString value; QString value;
if (m_parameters && m_parameters->isValid()) { if (m_parameters.isValid()) {
QJNILocalRef<jstring> wb = m_parameters->callObjectMethod<jstring>("getWhiteBalance", QJNIObjectPrivate wb = m_parameters.callObjectMethod("getWhiteBalance",
"()Ljava/lang/String;"); "()Ljava/lang/String;");
if (!wb.isNull()) if (wb.isValid())
value = qt_convertJString(wb.object()); value = wb.toString();
} }
return value; return value;
@@ -577,12 +565,12 @@ QString JCamera::getWhiteBalance()
void JCamera::setWhiteBalance(const QString &value) void JCamera::setWhiteBalance(const QString &value)
{ {
if (!m_parameters || !m_parameters->isValid()) if (!m_parameters.isValid())
return; return;
m_parameters->callMethod<void>("setWhiteBalance", m_parameters.callMethod<void>("setWhiteBalance",
"(Ljava/lang/String;)V", "(Ljava/lang/String;)V",
qt_toJString(value).object()); QJNIObjectPrivate::fromString(value).object());
applyParameters(); applyParameters();
emit whiteBalanceChanged(); emit whiteBalanceChanged();
@@ -590,10 +578,10 @@ void JCamera::setWhiteBalance(const QString &value)
void JCamera::setRotation(int rotation) void JCamera::setRotation(int rotation)
{ {
if (!m_parameters || !m_parameters->isValid()) if (!m_parameters.isValid())
return; return;
m_parameters->callMethod<void>("setRotation", "(I)V", rotation); m_parameters.callMethod<void>("setRotation", "(I)V", rotation);
applyParameters(); applyParameters();
} }
@@ -601,16 +589,14 @@ QList<QSize> JCamera::getSupportedPictureSizes()
{ {
QList<QSize> list; QList<QSize> list;
if (m_parameters && m_parameters->isValid()) { if (m_parameters.isValid()) {
QJNILocalRef<jobject> sizeListRef = m_parameters->callObjectMethod<jobject>("getSupportedPictureSizes", QJNIObjectPrivate sizeList = m_parameters.callObjectMethod("getSupportedPictureSizes",
"()Ljava/util/List;"); "()Ljava/util/List;");
QJNIObject sizeList(sizeListRef.object());
int count = sizeList.callMethod<jint>("size"); int count = sizeList.callMethod<jint>("size");
for (int i = 0; i < count; ++i) { for (int i = 0; i < count; ++i) {
QJNILocalRef<jobject> sizeRef = sizeList.callObjectMethod<jobject>("get", QJNIObjectPrivate size = sizeList.callObjectMethod("get",
"(I)Ljava/lang/Object;", "(I)Ljava/lang/Object;",
i); i);
QJNIObject size(sizeRef.object());
list.append(QSize(size.getField<jint>("width"), size.getField<jint>("height"))); list.append(QSize(size.getField<jint>("width"), size.getField<jint>("height")));
} }
@@ -622,19 +608,19 @@ QList<QSize> JCamera::getSupportedPictureSizes()
void JCamera::setPictureSize(const QSize &size) void JCamera::setPictureSize(const QSize &size)
{ {
if (!m_parameters || !m_parameters->isValid()) if (!m_parameters.isValid())
return; return;
m_parameters->callMethod<void>("setPictureSize", "(II)V", size.width(), size.height()); m_parameters.callMethod<void>("setPictureSize", "(II)V", size.width(), size.height());
applyParameters(); applyParameters();
} }
void JCamera::setJpegQuality(int quality) void JCamera::setJpegQuality(int quality)
{ {
if (!m_parameters || !m_parameters->isValid()) if (!m_parameters.isValid())
return; return;
m_parameters->callMethod<void>("setJpegQuality", "(I)V", quality); m_parameters.callMethod<void>("setJpegQuality", "(I)V", quality);
applyParameters(); applyParameters();
} }
@@ -657,27 +643,25 @@ void JCamera::applyParameters()
{ {
callMethod<void>("setParameters", callMethod<void>("setParameters",
"(Landroid/hardware/Camera$Parameters;)V", "(Landroid/hardware/Camera$Parameters;)V",
m_parameters->object()); m_parameters.object());
} }
QStringList JCamera::callStringListMethod(const char *methodName) QStringList JCamera::callStringListMethod(const char *methodName)
{ {
QStringList stringList; QStringList stringList;
if (m_parameters && m_parameters->isValid()) { if (m_parameters.isValid()) {
QJNILocalRef<jobject> listRef = m_parameters->callObjectMethod<jobject>(methodName, QJNIObjectPrivate list = m_parameters.callObjectMethod(methodName,
"()Ljava/util/List;"); "()Ljava/util/List;");
if (!listRef.isNull()) { if (list.isValid()) {
QJNIObject list(listRef.object());
int count = list.callMethod<jint>("size"); int count = list.callMethod<jint>("size");
for (int i = 0; i < count; ++i) { for (int i = 0; i < count; ++i) {
QJNILocalRef<jobject> stringRef = list.callObjectMethod<jobject>("get", QJNIObjectPrivate string = list.callObjectMethod("get",
"(I)Ljava/lang/Object;", "(I)Ljava/lang/Object;",
i); i);
QJNIObject string(stringRef.object()); stringList.append(string.toString());
stringList.append(qt_convertJString(string.callObjectMethod<jstring>("toString").object()));
} }
} }
} }

View File

@@ -43,13 +43,13 @@
#define JCAMERA_H #define JCAMERA_H
#include <qobject.h> #include <qobject.h>
#include <QtPlatformSupport/private/qjniobject_p.h> #include <QtCore/private/qjni_p.h>
#include <qsize.h> #include <qsize.h>
#include <qrect.h> #include <qrect.h>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class JCamera : public QObject, public QJNIObject class JCamera : public QObject, public QJNIObjectPrivate
{ {
Q_OBJECT Q_OBJECT
public: public:
@@ -153,8 +153,8 @@ private:
QStringList callStringListMethod(const char *methodName); QStringList callStringListMethod(const char *methodName);
int m_cameraId; int m_cameraId;
QJNIObject *m_info; QJNIObjectPrivate m_info;
QJNIObject *m_parameters; QJNIObjectPrivate m_parameters;
QSize m_previewSize; QSize m_previewSize;

View File

@@ -41,21 +41,14 @@
#include "jmediametadataretriever.h" #include "jmediametadataretriever.h"
#include <QtPlatformSupport/private/qjnihelpers_p.h> #include <QtCore/private/qjnihelpers_p.h>
#include <qpa/qplatformnativeinterface.h> #include <QtCore/private/qjni_p.h>
#include <qguiapplication.h>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
static jobject g_activity = 0;
JMediaMetadataRetriever::JMediaMetadataRetriever() JMediaMetadataRetriever::JMediaMetadataRetriever()
: QJNIObject("android/media/MediaMetadataRetriever") : QJNIObjectPrivate("android/media/MediaMetadataRetriever")
{ {
if (!g_activity) {
QPlatformNativeInterface *nativeInterface = QGuiApplication::platformNativeInterface();
g_activity = static_cast<jobject>(nativeInterface->nativeResourceForIntegration("QtActivity"));
}
} }
JMediaMetadataRetriever::~JMediaMetadataRetriever() JMediaMetadataRetriever::~JMediaMetadataRetriever()
@@ -66,11 +59,11 @@ QString JMediaMetadataRetriever::extractMetadata(MetadataKey key)
{ {
QString value; QString value;
QJNILocalRef<jstring> metadata = callObjectMethod<jstring>("extractMetadata", QJNIObjectPrivate metadata = callObjectMethod("extractMetadata",
"(I)Ljava/lang/String;", "(I)Ljava/lang/String;",
jint(key)); jint(key));
if (!metadata.isNull()) if (metadata.isValid())
value = qt_convertJString(metadata.object()); value = metadata.toString();
return value; return value;
} }
@@ -82,22 +75,22 @@ void JMediaMetadataRetriever::release()
bool JMediaMetadataRetriever::setDataSource(const QUrl &url) bool JMediaMetadataRetriever::setDataSource(const QUrl &url)
{ {
QAttachedJNIEnv env; QJNIEnvironmentPrivate env;
bool loaded = false; bool loaded = false;
QJNILocalRef<jstring> string = qt_toJString(url.toString()); QJNIObjectPrivate string = QJNIObjectPrivate::fromString(url.toString());
QJNILocalRef<jobject> uri = callStaticObjectMethod<jobject>("android/net/Uri", QJNIObjectPrivate uri = callStaticObjectMethod("android/net/Uri",
"parse", "parse",
"(Ljava/lang/String;)Landroid/net/Uri;", "(Ljava/lang/String;)Landroid/net/Uri;",
string.object()); string.object());
if (env->ExceptionCheck()) { if (env->ExceptionCheck()) {
env->ExceptionClear(); env->ExceptionClear();
} else { } else {
callMethod<void>("setDataSource", callMethod<void>("setDataSource",
"(Landroid/content/Context;Landroid/net/Uri;)V", "(Landroid/content/Context;Landroid/net/Uri;)V",
g_activity, QtAndroidPrivate::activity(),
uri.object()); uri.object());
if (env->ExceptionCheck()) if (env->ExceptionCheck())
env->ExceptionClear(); env->ExceptionClear();
@@ -110,11 +103,13 @@ bool JMediaMetadataRetriever::setDataSource(const QUrl &url)
bool JMediaMetadataRetriever::setDataSource(const QString &path) bool JMediaMetadataRetriever::setDataSource(const QString &path)
{ {
QAttachedJNIEnv env; QJNIEnvironmentPrivate env;
bool loaded = false; bool loaded = false;
callMethod<void>("setDataSource", "(Ljava/lang/String;)V", qt_toJString(path).object()); callMethod<void>("setDataSource",
"(Ljava/lang/String;)V",
QJNIObjectPrivate::fromString(path).object());
if (env->ExceptionCheck()) if (env->ExceptionCheck())
env->ExceptionClear(); env->ExceptionClear();
else else

View File

@@ -42,12 +42,12 @@
#ifndef JMEDIAMETADATARETRIEVER_H #ifndef JMEDIAMETADATARETRIEVER_H
#define JMEDIAMETADATARETRIEVER_H #define JMEDIAMETADATARETRIEVER_H
#include <QtPlatformSupport/private/qjniobject_p.h> #include <QtCore/private/qjni_p.h>
#include <qurl.h> #include <qurl.h>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class JMediaMetadataRetriever : public QJNIObject class JMediaMetadataRetriever : public QJNIObjectPrivate
{ {
public: public:
enum MetadataKey { enum MetadataKey {

View File

@@ -42,9 +42,9 @@
#include "jmediaplayer.h" #include "jmediaplayer.h"
#include <QString> #include <QString>
#include <qpa/qplatformnativeinterface.h> #include <QtCore/private/qjni_p.h>
#include <qguiapplication.h> #include <QtCore/private/qjnihelpers_p.h>
#include <QtPlatformSupport/private/qjnihelpers_p.h> #include <QMap>
namespace { namespace {
@@ -60,19 +60,17 @@ bool JMediaPlayer::mActivitySet = false;
JMediaPlayer::JMediaPlayer() JMediaPlayer::JMediaPlayer()
: QObject() : QObject()
, QJNIObject(mediaPlayerClass, "(J)V", reinterpret_cast<jlong>(this)) , QJNIObjectPrivate(mediaPlayerClass, "(J)V", reinterpret_cast<jlong>(this))
, mId(reinterpret_cast<jlong>(this)) , mId(reinterpret_cast<jlong>(this))
, mDisplay(0) , mDisplay(0)
{ {
mplayers.insert(mId, this); mplayers.insert(mId, this);
if (!mActivitySet) { if (!mActivitySet) {
QPlatformNativeInterface *nativeInterface = QGuiApplication::platformNativeInterface(); QJNIObjectPrivate::callStaticMethod<void>(mediaPlayerClass,
jobject activity = static_cast<jobject>(nativeInterface->nativeResourceForIntegration("QtActivity"));
QJNIObject::callStaticMethod<void>(mediaPlayerClass,
"setActivity", "setActivity",
"(Landroid/app/Activity;)V", "(Landroid/app/Activity;)V",
activity); QtAndroidPrivate::activity());
mActivitySet = true; mActivitySet = true;
} }
} }
@@ -164,7 +162,7 @@ void JMediaPlayer::setMuted(bool mute)
void JMediaPlayer::setDataSource(const QString &path) void JMediaPlayer::setDataSource(const QString &path)
{ {
QJNILocalRef<jstring> string = qt_toJString(path); QJNIObjectPrivate string = QJNIObjectPrivate::fromString(path);
callMethod<void>("setMediaPath", "(Ljava/lang/String;)V", string.object()); callMethod<void>("setMediaPath", "(Ljava/lang/String;)V", string.object());
} }

View File

@@ -43,11 +43,11 @@
#define QANDROIDMEDIAPLAYER_H #define QANDROIDMEDIAPLAYER_H
#include <QObject> #include <QObject>
#include <QtPlatformSupport/private/qjniobject_p.h> #include <QtCore/private/qjni_p.h>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class JMediaPlayer : public QObject, public QJNIObject class JMediaPlayer : public QObject, public QJNIObjectPrivate
{ {
Q_OBJECT Q_OBJECT
public: public:

View File

@@ -42,7 +42,7 @@
#include "jmediarecorder.h" #include "jmediarecorder.h"
#include "jcamera.h" #include "jcamera.h"
#include <QtPlatformSupport/private/qjnihelpers_p.h> #include <QtCore/private/qjni_p.h>
#include <qmap.h> #include <qmap.h>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
@@ -66,7 +66,7 @@ static void notifyInfo(JNIEnv* , jobject, jlong id, jint what, jint extra)
JMediaRecorder::JMediaRecorder() JMediaRecorder::JMediaRecorder()
: QObject() : QObject()
, QJNIObject(g_qtMediaRecorderClass, "(J)V", reinterpret_cast<jlong>(this)) , QJNIObjectPrivate(g_qtMediaRecorderClass, "(J)V", reinterpret_cast<jlong>(this))
, m_id(reinterpret_cast<jlong>(this)) , m_id(reinterpret_cast<jlong>(this))
{ {
if (isValid()) if (isValid())
@@ -85,7 +85,7 @@ void JMediaRecorder::release()
bool JMediaRecorder::prepare() bool JMediaRecorder::prepare()
{ {
QAttachedJNIEnv env; QJNIEnvironmentPrivate env;
callMethod<void>("prepare"); callMethod<void>("prepare");
if (env->ExceptionCheck()) { if (env->ExceptionCheck()) {
env->ExceptionClear(); env->ExceptionClear();
@@ -101,7 +101,7 @@ void JMediaRecorder::reset()
bool JMediaRecorder::start() bool JMediaRecorder::start()
{ {
QAttachedJNIEnv env; QJNIEnvironmentPrivate env;
callMethod<void>("start"); callMethod<void>("start");
if (env->ExceptionCheck()) { if (env->ExceptionCheck()) {
env->ExceptionClear(); env->ExceptionClear();
@@ -112,7 +112,7 @@ bool JMediaRecorder::start()
void JMediaRecorder::stop() void JMediaRecorder::stop()
{ {
QAttachedJNIEnv env; QJNIEnvironmentPrivate env;
callMethod<void>("stop"); callMethod<void>("stop");
if (env->ExceptionCheck()) if (env->ExceptionCheck())
env->ExceptionClear(); env->ExceptionClear();
@@ -125,7 +125,7 @@ void JMediaRecorder::setAudioChannels(int numChannels)
void JMediaRecorder::setAudioEncoder(AudioEncoder encoder) void JMediaRecorder::setAudioEncoder(AudioEncoder encoder)
{ {
QAttachedJNIEnv env; QJNIEnvironmentPrivate env;
callMethod<void>("setAudioEncoder", "(I)V", int(encoder)); callMethod<void>("setAudioEncoder", "(I)V", int(encoder));
if (env->ExceptionCheck()) if (env->ExceptionCheck())
env->ExceptionClear(); env->ExceptionClear();
@@ -143,7 +143,7 @@ void JMediaRecorder::setAudioSamplingRate(int samplingRate)
void JMediaRecorder::setAudioSource(AudioSource source) void JMediaRecorder::setAudioSource(AudioSource source)
{ {
QAttachedJNIEnv env; QJNIEnvironmentPrivate env;
callMethod<void>("setAudioSource", "(I)V", int(source)); callMethod<void>("setAudioSource", "(I)V", int(source));
if (env->ExceptionCheck()) if (env->ExceptionCheck())
env->ExceptionClear(); env->ExceptionClear();
@@ -151,13 +151,13 @@ void JMediaRecorder::setAudioSource(AudioSource source)
void JMediaRecorder::setCamera(JCamera *camera) void JMediaRecorder::setCamera(JCamera *camera)
{ {
QJNILocalRef<jobject> cam = camera->getObjectField<jobject>("m_camera", "Landroid/hardware/Camera;"); QJNIObjectPrivate cam = camera->getObjectField("m_camera", "Landroid/hardware/Camera;");
callMethod<void>("setCamera", "(Landroid/hardware/Camera;)V", cam.object()); callMethod<void>("setCamera", "(Landroid/hardware/Camera;)V", cam.object());
} }
void JMediaRecorder::setVideoEncoder(VideoEncoder encoder) void JMediaRecorder::setVideoEncoder(VideoEncoder encoder)
{ {
QAttachedJNIEnv env; QJNIEnvironmentPrivate env;
callMethod<void>("setVideoEncoder", "(I)V", int(encoder)); callMethod<void>("setVideoEncoder", "(I)V", int(encoder));
if (env->ExceptionCheck()) if (env->ExceptionCheck())
env->ExceptionClear(); env->ExceptionClear();
@@ -170,7 +170,7 @@ void JMediaRecorder::setVideoEncodingBitRate(int bitRate)
void JMediaRecorder::setVideoFrameRate(int rate) void JMediaRecorder::setVideoFrameRate(int rate)
{ {
QAttachedJNIEnv env; QJNIEnvironmentPrivate env;
callMethod<void>("setVideoFrameRate", "(I)V", rate); callMethod<void>("setVideoFrameRate", "(I)V", rate);
if (env->ExceptionCheck()) if (env->ExceptionCheck())
env->ExceptionClear(); env->ExceptionClear();
@@ -178,7 +178,7 @@ void JMediaRecorder::setVideoFrameRate(int rate)
void JMediaRecorder::setVideoSize(const QSize &size) void JMediaRecorder::setVideoSize(const QSize &size)
{ {
QAttachedJNIEnv env; QJNIEnvironmentPrivate env;
callMethod<void>("setVideoSize", "(II)V", size.width(), size.height()); callMethod<void>("setVideoSize", "(II)V", size.width(), size.height());
if (env->ExceptionCheck()) if (env->ExceptionCheck())
env->ExceptionClear(); env->ExceptionClear();
@@ -186,7 +186,7 @@ void JMediaRecorder::setVideoSize(const QSize &size)
void JMediaRecorder::setVideoSource(VideoSource source) void JMediaRecorder::setVideoSource(VideoSource source)
{ {
QAttachedJNIEnv env; QJNIEnvironmentPrivate env;
callMethod<void>("setVideoSource", "(I)V", int(source)); callMethod<void>("setVideoSource", "(I)V", int(source));
if (env->ExceptionCheck()) if (env->ExceptionCheck())
env->ExceptionClear(); env->ExceptionClear();
@@ -194,7 +194,7 @@ void JMediaRecorder::setVideoSource(VideoSource source)
void JMediaRecorder::setOrientationHint(int degrees) void JMediaRecorder::setOrientationHint(int degrees)
{ {
QAttachedJNIEnv env; QJNIEnvironmentPrivate env;
callMethod<void>("setOrientationHint", "(I)V", degrees); callMethod<void>("setOrientationHint", "(I)V", degrees);
if (env->ExceptionCheck()) if (env->ExceptionCheck())
env->ExceptionClear(); env->ExceptionClear();
@@ -202,7 +202,7 @@ void JMediaRecorder::setOrientationHint(int degrees)
void JMediaRecorder::setOutputFormat(OutputFormat format) void JMediaRecorder::setOutputFormat(OutputFormat format)
{ {
QAttachedJNIEnv env; QJNIEnvironmentPrivate env;
callMethod<void>("setOutputFormat", "(I)V", int(format)); callMethod<void>("setOutputFormat", "(I)V", int(format));
if (env->ExceptionCheck()) if (env->ExceptionCheck())
env->ExceptionClear(); env->ExceptionClear();
@@ -210,8 +210,10 @@ void JMediaRecorder::setOutputFormat(OutputFormat format)
void JMediaRecorder::setOutputFile(const QString &path) void JMediaRecorder::setOutputFile(const QString &path)
{ {
QAttachedJNIEnv env; QJNIEnvironmentPrivate env;
callMethod<void>("setOutputFile", "(Ljava/lang/String;)V", qt_toJString(path).object()); callMethod<void>("setOutputFile",
"(Ljava/lang/String;)V",
QJNIObjectPrivate::fromString(path).object());
if (env->ExceptionCheck()) if (env->ExceptionCheck())
env->ExceptionClear(); env->ExceptionClear();
} }

View File

@@ -43,14 +43,14 @@
#define JMEDIARECORDER_H #define JMEDIARECORDER_H
#include <qobject.h> #include <qobject.h>
#include <QtPlatformSupport/private/qjniobject_p.h> #include <QtCore/private/qjni_p.h>
#include <qsize.h> #include <qsize.h>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class JCamera; class JCamera;
class JMediaRecorder : public QObject, public QJNIObject class JMediaRecorder : public QObject, public QJNIObjectPrivate
{ {
Q_OBJECT Q_OBJECT
public: public:

View File

@@ -41,7 +41,7 @@
#include "jmultimediautils.h" #include "jmultimediautils.h"
#include <QtPlatformSupport/private/qjnihelpers_p.h> #include <QtCore/private/qjni_p.h>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
@@ -49,7 +49,7 @@ static jclass g_qtMultimediaUtilsClass = 0;
JMultimediaUtils::JMultimediaUtils() JMultimediaUtils::JMultimediaUtils()
: QObject() : QObject()
, QJNIObject(g_qtMultimediaUtilsClass) , QJNIObjectPrivate(g_qtMultimediaUtilsClass)
{ {
} }
@@ -65,11 +65,11 @@ int JMultimediaUtils::getDeviceOrientation()
QString JMultimediaUtils::getDefaultMediaDirectory(MediaType type) QString JMultimediaUtils::getDefaultMediaDirectory(MediaType type)
{ {
QJNILocalRef<jstring> path = callStaticObjectMethod<jstring>(g_qtMultimediaUtilsClass, QJNIObjectPrivate path = callStaticObjectMethod(g_qtMultimediaUtilsClass,
"getDefaultMediaDirectory", "getDefaultMediaDirectory",
"(I)Ljava/lang/String;", "(I)Ljava/lang/String;",
jint(type)); jint(type));
return qt_convertJString(path.object()); return path.toString();
} }
void JMultimediaUtils::registerMediaFile(const QString &file) void JMultimediaUtils::registerMediaFile(const QString &file)
@@ -77,7 +77,7 @@ void JMultimediaUtils::registerMediaFile(const QString &file)
callStaticMethod<void>(g_qtMultimediaUtilsClass, callStaticMethod<void>(g_qtMultimediaUtilsClass,
"registerMediaFile", "registerMediaFile",
"(Ljava/lang/String;)V", "(Ljava/lang/String;)V",
qt_toJString(file).object()); QJNIObjectPrivate::fromString(file).object());
} }
bool JMultimediaUtils::initJNI(JNIEnv *env) bool JMultimediaUtils::initJNI(JNIEnv *env)

View File

@@ -43,11 +43,11 @@
#define JMULTIMEDIAUTILS_H #define JMULTIMEDIAUTILS_H
#include <qobject.h> #include <qobject.h>
#include <QtPlatformSupport/private/qjniobject_p.h> #include <QtCore/private/qjni_p.h>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class JMultimediaUtils : public QObject, public QJNIObject class JMultimediaUtils : public QObject, public QJNIObjectPrivate
{ {
Q_OBJECT Q_OBJECT
public: public:

View File

@@ -40,7 +40,7 @@
****************************************************************************/ ****************************************************************************/
#include "jsurfacetexture.h" #include "jsurfacetexture.h"
#include <QtPlatformSupport/private/qjnihelpers_p.h> #include <QtCore/private/qjni_p.h>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
@@ -57,7 +57,7 @@ static void notifyFrameAvailable(JNIEnv* , jobject, int id)
JSurfaceTexture::JSurfaceTexture(unsigned int texName) JSurfaceTexture::JSurfaceTexture(unsigned int texName)
: QObject() : QObject()
, QJNIObject(g_qtSurfaceTextureClass, "(I)V", jint(texName)) , QJNIObjectPrivate(g_qtSurfaceTextureClass, "(I)V", jint(texName))
, m_texID(int(texName)) , m_texID(int(texName))
{ {
if (isValid()) if (isValid())
@@ -72,7 +72,7 @@ JSurfaceTexture::~JSurfaceTexture()
QMatrix4x4 JSurfaceTexture::getTransformMatrix() QMatrix4x4 JSurfaceTexture::getTransformMatrix()
{ {
QAttachedJNIEnv env; QJNIEnvironmentPrivate env;
QMatrix4x4 matrix; QMatrix4x4 matrix;
jfloatArray array = env->NewFloatArray(16); jfloatArray array = env->NewFloatArray(16);

View File

@@ -43,13 +43,13 @@
#define JSURFACETEXTURE_H #define JSURFACETEXTURE_H
#include <qobject.h> #include <qobject.h>
#include <QtPlatformSupport/private/qjniobject_p.h> #include <QtCore/private/qjni_p.h>
#include <QMatrix4x4> #include <QMatrix4x4>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class JSurfaceTexture : public QObject, public QJNIObject class JSurfaceTexture : public QObject, public QJNIObjectPrivate
{ {
Q_OBJECT Q_OBJECT
public: public:

View File

@@ -46,7 +46,7 @@ QT_BEGIN_NAMESPACE
static jclass g_qtSurfaceTextureHolderClass = 0; static jclass g_qtSurfaceTextureHolderClass = 0;
JSurfaceTextureHolder::JSurfaceTextureHolder(jobject surface) JSurfaceTextureHolder::JSurfaceTextureHolder(jobject surface)
: QJNIObject(g_qtSurfaceTextureHolderClass, "(Landroid/view/Surface;)V", surface) : QJNIObjectPrivate(g_qtSurfaceTextureHolderClass, "(Landroid/view/Surface;)V", surface)
{ {
} }

View File

@@ -42,11 +42,11 @@
#ifndef JSURFACETEXTUREHOLDER_H #ifndef JSURFACETEXTUREHOLDER_H
#define JSURFACETEXTUREHOLDER_H #define JSURFACETEXTUREHOLDER_H
#include <QtPlatformSupport/private/qjniobject_p.h> #include <QtCore/private/qjni_p.h>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class JSurfaceTextureHolder : public QJNIObject class JSurfaceTextureHolder : public QJNIObjectPrivate
{ {
public: public:
JSurfaceTextureHolder(jobject surface); JSurfaceTextureHolder(jobject surface);