summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAssam Boudjelthia <assam.boudjelthia@qt.io>2021-05-06 13:07:54 +0300
committerAssam Boudjelthia <assam.boudjelthia@qt.io>2021-05-10 11:17:58 +0000
commit23c34f415c17146f928e5a3b88320709342dc438 (patch)
treee57a5dee34bd5d53eb9ab732fc4f261f7bdabd2f /src
parentbc43937fe9d085ff1068420d6f43972fb1297bba (diff)
Android: use new public jni apis
Replace use of QJNIObjectPrivate with QJniObject. Get context() and sdkVersion() from QNativeInterface::QAndroidApplication. Fixes: QTBUG-92550 Change-Id: I625b2269ef253e1a1f76f82edebac236de184c2c Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/sensors/android/sensormanager.cpp32
-rw-r--r--src/plugins/sensors/android/sensormanager.h17
2 files changed, 28 insertions, 21 deletions
diff --git a/src/plugins/sensors/android/sensormanager.cpp b/src/plugins/sensors/android/sensormanager.cpp
index f60ed961..f48f920b 100644
--- a/src/plugins/sensors/android/sensormanager.cpp
+++ b/src/plugins/sensors/android/sensormanager.cpp
@@ -1,5 +1,6 @@
/****************************************************************************
**
+** Copyright (C) 2021 The Qt Company Ltd.
** Copyright (C) 2019 BogDan Vatra <bogdan@kde.org>
** Contact: https://www.qt.io/licensing/
**
@@ -37,12 +38,18 @@
**
****************************************************************************/
#include "sensormanager.h"
+#include <QtCore/qcoreapplication.h>
+
#include <dlfcn.h>
SensorManager::SensorManager()
{
- auto sensorService = QJNIObjectPrivate::getStaticObjectField("android.content.Context", "SENSOR_SERVICE", "Ljava/lang/String;");
- m_sensorManager = QJNIObjectPrivate{QtAndroidPrivate::context()}.callObjectMethod("getSystemService", "(Ljava/lang/String;)Ljava/lang/Object;", sensorService.object());
+ auto sensorService = QJniObject::getStaticObjectField("android.content.Context",
+ "SENSOR_SERVICE", "Ljava/lang/String;");
+ QJniObject context = QNativeInterface::QAndroidApplication::context();
+ m_sensorManager = context.callObjectMethod("getSystemService",
+ "(Ljava/lang/String;)Ljava/lang/Object;",
+ sensorService.object());
setObjectName("QtSensorsLooperThread");
start();
m_waitForStart.acquire();
@@ -54,9 +61,10 @@ SensorManager::~SensorManager()
wait();
}
-QJNIObjectPrivate SensorManager::javaSensor(const ASensor *sensor) const
+QJniObject SensorManager::javaSensor(const ASensor *sensor) const
{
- return m_sensorManager.callObjectMethod("getDefaultSensor", "(I)Landroid/hardware/Sensor;", ASensor_getType(sensor));
+ return m_sensorManager.callObjectMethod("getDefaultSensor", "(I)Landroid/hardware/Sensor;",
+ ASensor_getType(sensor));
}
QSharedPointer<SensorManager> &SensorManager::instance()
@@ -72,19 +80,18 @@ ALooper *SensorManager::looper() const
static inline ASensorManager* androidManager()
{
+ QJniObject context = QNativeInterface::QAndroidApplication::context();
+ auto packageName = context.callObjectMethod("getPackageName", "()Ljava/lang/String;")
+ .toString().toUtf8();
#if __ANDROID_API__ >= 26
- return ASensorManager_getInstanceForPackage(QJNIObjectPrivate{QtAndroidPrivate::context()}
- .callObjectMethod("getPackageName", "()Ljava/lang/String;")
- .toString().toUtf8().constData());
+ return ASensorManager_getInstanceForPackage(packageName.constData());
#else
- if (QtAndroidPrivate::androidSdkVersion() >= 26) {
+ if (QNativeInterface::QAndroidApplication::sdkVersion() >= 26) {
using GetInstanceForPackage = ASensorManager *(*)(const char *);
auto handler = dlopen("libandroid.so", RTLD_NOW);
auto function = GetInstanceForPackage(dlsym(handler, "ASensorManager_getInstanceForPackage"));
if (function) {
- auto res = function(QJNIObjectPrivate{QtAndroidPrivate::context()}
- .callObjectMethod("getPackageName", "()Ljava/lang/String;")
- .toString().toUtf8().constData());
+ auto res = function(packageName.constData());
dlclose(handler);
return res;
}
@@ -101,7 +108,8 @@ ASensorManager *SensorManager::manager() const
QString SensorManager::description(const ASensor *sensor) const
{
- return QString::fromUtf8(ASensor_getName(sensor)) + " " + ASensor_getVendor(sensor) + " v" + QString::number(javaSensor(sensor).callMethod<jint>("getVersion"));
+ return QString::fromUtf8(ASensor_getName(sensor)) + " " + ASensor_getVendor(sensor)
+ + " v" + QString::number(javaSensor(sensor).callMethod<jint>("getVersion"));
}
double SensorManager::getMaximumRange(const ASensor *sensor) const
diff --git a/src/plugins/sensors/android/sensormanager.h b/src/plugins/sensors/android/sensormanager.h
index dc7ffe1f..dd15e04f 100644
--- a/src/plugins/sensors/android/sensormanager.h
+++ b/src/plugins/sensors/android/sensormanager.h
@@ -1,5 +1,6 @@
/****************************************************************************
**
+** Copyright (C) 2021 The Qt Company Ltd.
** Copyright (C) 2019 BogDan Vatra <bogdan@kde.org>
** Contact: https://www.qt.io/licensing/
**
@@ -40,13 +41,11 @@
#ifndef SENSORMANAGER_H
#define SENSORMANAGER_H
-#include <QThread>
-#include <QSemaphore>
-#include <QMutex>
-#include <QWaitCondition>
-
-#include <private/qjni_p.h>
-#include <private/qjnihelpers_p.h>
+#include <QtCore/qthread.h>
+#include <QtCore/qsemaphore.h>
+#include <QtCore/qmutex.h>
+#include <QtCore/qwaitcondition.h>
+#include <QtCore/qjniobject.h>
#include <android/sensor.h>
@@ -58,7 +57,7 @@ public:
ALooper *looper() const;
ASensorManager *manager() const;
- QJNIObjectPrivate javaSensor(const ASensor *sensor) const;
+ QJniObject javaSensor(const ASensor *sensor) const;
QString description(const ASensor *sensor) const;
double getMaximumRange(const ASensor *sensor) const;
@@ -71,7 +70,7 @@ private:
QAtomicInt m_quit{0};
ALooper *m_looper = nullptr;
QSemaphore m_waitForStart;
- QJNIObjectPrivate m_sensorManager;
+ QJniObject m_sensorManager;
};
#endif // SENSORMANAGER_H