summaryrefslogtreecommitdiffstats
path: root/src/multimedia/android/qandroidmediadevices.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/multimedia/android/qandroidmediadevices.cpp')
-rw-r--r--src/multimedia/android/qandroidmediadevices.cpp26
1 files changed, 20 insertions, 6 deletions
diff --git a/src/multimedia/android/qandroidmediadevices.cpp b/src/multimedia/android/qandroidmediadevices.cpp
index 022e758da..cd6548ac3 100644
--- a/src/multimedia/android/qandroidmediadevices.cpp
+++ b/src/multimedia/android/qandroidmediadevices.cpp
@@ -17,7 +17,26 @@
QT_BEGIN_NAMESPACE
-QAndroidMediaDevices::QAndroidMediaDevices() : QPlatformMediaDevices() { }
+Q_DECLARE_JNI_CLASS(QtAudioDeviceManager,
+ "org/qtproject/qt/android/multimedia/QtAudioDeviceManager");
+
+
+QAndroidMediaDevices::QAndroidMediaDevices() : QPlatformMediaDevices()
+{
+ QtJniTypes::QtAudioDeviceManager::callStaticMethod<void>(
+ "registerAudioHeadsetStateReceiver",
+ QNativeInterface::QAndroidApplication::context());
+}
+
+QAndroidMediaDevices::~QAndroidMediaDevices()
+{
+ // Object of QAndroidMediaDevices type is static. Unregistering will happend only when closing
+ // the application. In such case it is probably not needed, but let's leave it for
+ // compatibility with Android documentation
+ QtJniTypes::QtAudioDeviceManager::callStaticMethod<void>(
+ "unregisterAudioHeadsetStateReceiver",
+ QNativeInterface::QAndroidApplication::context());
+}
QList<QAudioDevice> QAndroidMediaDevices::audioInputs() const
{
@@ -92,11 +111,6 @@ Q_DECL_EXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void * /*reserved*/)
if (!registered)
return JNI_ERR;
- QJniObject::callStaticMethod<void>("org/qtproject/qt/android/multimedia/QtAudioDeviceManager",
- "registerAudioHeadsetStateReceiver",
- "(Landroid/content/Context;)V",
- QNativeInterface::QAndroidApplication::context());
-
return JNI_VERSION_1_6;
}