summaryrefslogtreecommitdiff
path: root/src/plugins/android/src/wrappers/jmediarecorder.cpp
diff options
context:
space:
mode:
authorChristian Strømme <christian.stromme@digia.com>2014-04-07 15:09:00 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-04-08 00:21:41 +0200
commit6fb0d978389f3f578ce43ddeb6a1bad624df4154 (patch)
tree535eafed30ce6374cb39976418f282f492e4fb5a /src/plugins/android/src/wrappers/jmediarecorder.cpp
parenta8854cc5490fee2093093bc4486930bafe2a936c (diff)
downloadqtmultimedia-6fb0d978389f3f578ce43ddeb6a1bad624df4154.tar.gz
Android: Fix QtMediaRecorder
Don't extend the MediaRecorder class as this causes ART to fail when it doesn't find the postEventFromNative() function. Task-number: QTBUG-38166 Change-Id: Ia38ce4558a2cc95a9b4cd05b9f926d41e53fdc0d Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
Diffstat (limited to 'src/plugins/android/src/wrappers/jmediarecorder.cpp')
-rw-r--r--src/plugins/android/src/wrappers/jmediarecorder.cpp20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/plugins/android/src/wrappers/jmediarecorder.cpp b/src/plugins/android/src/wrappers/jmediarecorder.cpp
index 85267286c..675bc5dce 100644
--- a/src/plugins/android/src/wrappers/jmediarecorder.cpp
+++ b/src/plugins/android/src/wrappers/jmediarecorder.cpp
@@ -47,7 +47,7 @@
QT_BEGIN_NAMESPACE
-static jclass g_qtMediaRecorderClass = 0;
+static jclass g_qtMediaRecorderListenerClass = 0;
static QMap<jlong, JMediaRecorder*> g_objectMap;
static void notifyError(JNIEnv* , jobject, jlong id, jint what, jint extra)
@@ -68,9 +68,17 @@ JMediaRecorder::JMediaRecorder()
: QObject()
, m_id(reinterpret_cast<jlong>(this))
{
- m_mediaRecorder = QJNIObjectPrivate(g_qtMediaRecorderClass, "(J)V", m_id);
- if (m_mediaRecorder.isValid())
+ m_mediaRecorder = QJNIObjectPrivate("android/media/MediaRecorder");
+ if (m_mediaRecorder.isValid()) {
+ QJNIObjectPrivate listener(g_qtMediaRecorderListenerClass, "(J)V", m_id);
+ m_mediaRecorder.callMethod<void>("setOnErrorListener",
+ "(Landroid/media/MediaRecorder$OnErrorListener;)V",
+ listener.object());
+ m_mediaRecorder.callMethod<void>("setOnInfoListener",
+ "(Landroid/media/MediaRecorder$OnErrorListener;)V",
+ listener.object());
g_objectMap.insert(m_id, this);
+ }
}
JMediaRecorder::~JMediaRecorder()
@@ -271,13 +279,13 @@ static JNINativeMethod methods[] = {
bool JMediaRecorder::initJNI(JNIEnv *env)
{
- jclass clazz = env->FindClass("org/qtproject/qt5/android/multimedia/QtMediaRecorder");
+ jclass clazz = env->FindClass("org/qtproject/qt5/android/multimedia/QtMediaRecorderListener");
if (env->ExceptionCheck())
env->ExceptionClear();
if (clazz) {
- g_qtMediaRecorderClass = static_cast<jclass>(env->NewGlobalRef(clazz));
- if (env->RegisterNatives(g_qtMediaRecorderClass,
+ g_qtMediaRecorderListenerClass = static_cast<jclass>(env->NewGlobalRef(clazz));
+ if (env->RegisterNatives(g_qtMediaRecorderListenerClass,
methods,
sizeof(methods) / sizeof(methods[0])) < 0) {
return false;