From 6cc5b4ab300ed9446c3fec64e5b94c7c4ba69fbc Mon Sep 17 00:00:00 2001 From: Juha Vuolle Date: Thu, 11 Aug 2022 11:16:10 +0300 Subject: Unstringify QtSensors Android parts Qt 6.4 introduced the new facilities to reduce the plain strings with Android methods/signatures. Fixes: QTBUG-104185 Change-Id: I28a2d588fdaff2ef6d2e0f55663d741ea6a0c4e5 Reviewed-by: Ivan Solovev Reviewed-by: Lorn Potter --- src/plugins/sensors/android/sensormanager.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/plugins/sensors/android/sensormanager.cpp b/src/plugins/sensors/android/sensormanager.cpp index 66a61017..96d3cf1c 100644 --- a/src/plugins/sensors/android/sensormanager.cpp +++ b/src/plugins/sensors/android/sensormanager.cpp @@ -6,14 +6,17 @@ #include +Q_DECLARE_JNI_CLASS(AndroidContext, "android/content/Context") +Q_DECLARE_JNI_TYPE(Sensor, "Landroid/hardware/Sensor;") + SensorManager::SensorManager() { - auto sensorService = QJniObject::getStaticObjectField("android.content.Context", - "SENSOR_SERVICE", "Ljava/lang/String;"); + auto sensorService = + QJniObject::getStaticField("SENSOR_SERVICE"); + QJniObject context = QNativeInterface::QAndroidApplication::context(); - m_sensorManager = context.callObjectMethod("getSystemService", - "(Ljava/lang/String;)Ljava/lang/Object;", - sensorService.object()); + m_sensorManager = context.callMethod("getSystemService", + sensorService.object()); setObjectName("QtSensorsLooperThread"); start(); m_waitForStart.acquire(); @@ -27,8 +30,8 @@ SensorManager::~SensorManager() QJniObject SensorManager::javaSensor(const ASensor *sensor) const { - return m_sensorManager.callObjectMethod("getDefaultSensor", "(I)Landroid/hardware/Sensor;", - ASensor_getType(sensor)); + return m_sensorManager.callMethod("getDefaultSensor", + ASensor_getType(sensor)); } QSharedPointer &SensorManager::instance() @@ -45,8 +48,8 @@ ALooper *SensorManager::looper() const static inline ASensorManager* androidManager() { QJniObject context = QNativeInterface::QAndroidApplication::context(); - auto packageName = context.callObjectMethod("getPackageName", "()Ljava/lang/String;") - .toString().toUtf8(); + auto packageName = context.callMethod("getPackageName").toString().toUtf8(); + #if __ANDROID_API__ >= 26 return ASensorManager_getInstanceForPackage(packageName.constData()); #else -- cgit v1.2.3