QT之Android下获取手机传感器信息并显示失败

本人最近正在使用QT编写一个能获取手机传感器信息(光,方位,GPS等)的app,但是最后app上呈现不了任何消息,如下是代码截图以及app运行之后的相关截图,请问我是少写了什么吗,还是我哪些地方没有配置好,求帮忙解决,明天截止

img

img

img

img

img

提供参考实例:https://blog.csdn.net/zym326975/article/details/83688564
【QT之Android下获取手机传感器数据学习笔记】,该实例可直接放在工程里面直接使用

更新一下?

首先,需要在AndroidManifest.xml文件中添加相应的传感器权限,例如:

然后,使用QSensor类可以获取传感器信息,需要注意的是,在QSensor中并没有直接获取手机传感器信息的函数,需要使用QSensorReading类来获取。

例如:

// 获取加速度传感器
QSensor *sensor = new QSensor(QSensor::Type::Accelerometer);
// 启动传感器
sensor->start();

// 获取传感器读数
QSensorReading *reading = sensor->reading();
// 获取加速度信息
QVector3D acceleration = reading->value(QAccelerometerReading::Acceleration).value();

// 将加速度信息显示在界面上
ui->label->setText(QString("Acceleration: x = %1, y = %2, z = %3").arg(acceleration.x()).arg(acceleration.y()).arg(acceleration.z()));

如果仍然无法获取传感器信息,可以尝试检查传感器是否正常工作,或者是否有其他应用占用了传感器。

你好!如果你希望获取 Android 设备上的传感器信息并在 QT 中显示,你需要在你的 QT 应用中包含对 Android 传感器的支持。这通常可以通过使用 QT 的 Android 插件来实现。

具体来说,你需要执行以下步骤:
1、将 QT 的 Android 插件作为依赖项添加到你的 QT 应用程序中。这可以通过在你的 .pro 文件中添加以下行来实现:

QT += androidextras

2、使用 Android 的传感器管理器获取传感器信息。这可以通过使用 QAndroidJniObject 类来实现。例如,你可以使用以下代码获取设备上的加速度传感器:

QAndroidJniObject sensorManager = QAndroidJniObject::callStaticObjectMethod("android/content/Context", "getSystemService", "(Ljava/lang/String;)Ljava/lang/Object;", QAndroidJniObject::fromString("sensor").object<jstring>());
QAndroidJniObject accelerometer = sensorManager.callObjectMethod("getDefaultSensor", "(I)Landroid/hardware/Sensor;", QAndroidJniObject::getStaticField<jint>("android/hardware/Sensor", "TYPE_ACCELEROMETER"));

3、创建一个 QSensor 对象,并将其与 Android 传感器关联。你可以使用 QSensor 类的 setNativeHandle 方法来实现这一点:

QSensor *accelerometerSensor = new QSensor;
accelerometerSensor->setType(QSensor::Accelerometer);
accelerometerSensor->setNativeHandle(accelerometer.object());

4、使用 QSensor 对象获取传感器数据。你可以使用 QSensorReading 类的 x(), y(), 和 z() 方法来获取加速度
5、在你的 QT 应用中创建一个传感器读取对象,并将其与传感器关联:

QSensorReading *reading = accelerometerSensor->reading();

6、在你的 QT 应用中创建一个显示传感器数据的 UI 元素,例如 QLabel 或 QLineEdit。
7、使用 QObject::connect 函数将传感器的 readingChanged 信号与你的 UI 元素的槽函数相连接:

QObject::connect(accelerometerSensor, &QSensor::readingChanged, [=]() {
    // 将传感器数据显示在 UI 元素中
    label->setText(QString("X: %1\nY: %2\nZ: %3").arg(reading->x()).arg(reading->y()).arg(reading->z()));
});

8、启动传感器:

accelerometerSensor->start();

这样,当传感器的数据更新时,你的 UI 元素就会显示最新的传感器数据。如果在执行这些步骤时遇到问题,请告诉我你遇到的问题,我将尽力帮助你解决。

QT之Android下获取手机传感器数据
借鉴下
https://blog.csdn.net/zym326975/article/details/83688564