QT之Android下获取手机传感器数据学习笔记

QT之Android下获取手机传感器数据学习笔记QT+=coreguisensorspositioning其中sensors是获取手机上传感器数据的组件,positioning是获取位置信息的组件1、获取陀螺仪传感器数据#include<QGyroscope>QGyroscope*gyroscope;QGyroscopeReading*reader;gyroscope=newQGyro…

大家好,又见面了,我是你们的朋友全栈君。

QT += core gui sensors positioning

其中sensors是获取手机上传感器数据的组件,positioning是获取位置信息的组件

1、获取陀螺仪传感器数据

#include <QGyroscope>

QGyroscope *gyroscope;
QGyroscopeReading *reader;

gyroscope = new QGyroscope(this);
gyroscope->start();
reader = gyroscope->reading();
qreal x = reader->x();
qreal y = reader->y();
qreal z = reader->z();

2、获取加速度传感器数据

#include <QAccelerometer>

QAccelerometer *acceler;
QAccelerometerReading *accelereader;

acceler = new QAccelerometer(this);
acceler->setAccelerationMode(QAccelerometer::Combined);
acceler->start();
accelereader = acceler->reading();

qreal x = accelereader->x();
qreal y = accelereader->y();
qreal z = accelereader->z();

3、获取光线强度传感器数据

#include <QLightSensor>

QLightSensor *lightSensor;
QLightReading *lightReading;

lightSensor = new QLightSensor(this);
lightSensor->start();
lightReading = lightSensor->reading();
qreal lux = lightReading->lux();

4、获取电磁传感器数据

#include <QMagnetometer>

QMagnetometer *magnetoMeter;
QMagnetometerReading *magnetometerReading;

magnetoMeter = new QMagnetometer(this);
magnetoMeter->start();
magnetometerReading = magnetoMeter->reading();
x = magnetometerReading->x();
y = magnetometerReading->y();
z = magnetometerReading->z();

5、获取接近传感器数据

#include <QProximitySensor>

QProximitySensor *proximitySensor;
QProximityReading *proximityReading;

proximitySensor = new QProximitySensor(this);
proximitySensor->start();
proximityReading = proximitySensor->reading();
if(proximityReading->close())
{
   ui->label_30->setText("接近传感器:接近");
}
else
{
   ui->label_30->setText("接近传感器:远离");
}

6、旋转传感器数据读取

#include <QRotationSensor>

QRotationSensor *rotationSensor;
QRotationReading *rotationReading;

rotationSensor = new QRotationSensor(this);
rotationSensor->start();
rotationReading = rotationSensor->reading();
ui->lcdNumber_11->display(rotationReading->x());
ui->lcdNumber_12->display(rotationReading->y());
ui->lcdNumber_13->display(rotationReading->z());

7、获取手机位置相关信息

#include <QGeoPositionInfoSource>
#include <QGeoCoordinate>
#include <QGeoPositionInfo>

double nowGroundSpeed=0.0;
double nowVerticalSpeed=0.0;
double nowMagneticVariation=0.0;
double nowHorizontalAccuracy=0.0;
double nowVerticalAccuracy=0.0;
double nowLongitude=0.0;
double nowLatitude=0.0;
double nowDirection=0.0;
QString nowTimes="";

QGeoPositionInfoSource *source;

source = QGeoPositionInfoSource::createDefaultSource(this);
if (source) {
    connect(source, SIGNAL(positionUpdated(const QGeoPositionInfo&)),
        this, SLOT(positionUpdated(const QGeoPositionInfo&)));
    source->setUpdateInterval(200);//设置刷新时间 单位毫秒
    source->startUpdates();//启动设备
}

void MainWindow::positionUpdated(const QGeoPositionInfo &info)
{
    nowLongitude = info.coordinate().longitude();//经度
    nowLatitude = info.coordinate().latitude();//纬度
    nowDirection = info.attribute(QGeoPositionInfo::Direction);
    nowGroundSpeed = info.attribute(QGeoPositionInfo::GroundSpeed);
    nowVerticalSpeed = info.attribute(QGeoPositionInfo::VerticalSpeed);
    nowMagneticVariation = info.attribute(QGeoPositionInfo::MagneticVariation);
    nowHorizontalAccuracy = info.attribute(QGeoPositionInfo::HorizontalAccuracy);
    nowVerticalAccuracy = info.attribute(QGeoPositionInfo::VerticalAccuracy);
    nowTimes = info.timestamp().toString();

    ui->label_10->setText(nowTimes);
    ui->label_12->setText(QString::number(nowLongitude,10,7));
    ui->label_14->setText(QString::number(nowLatitude,10,7));

    ui->label_16->setText(QString::number(nowGroundSpeed,10,7));
    ui->label_18->setText(QString::number(nowVerticalSpeed,10,7));

    ui->label_20->setText(QString::number(nowMagneticVariation,10,7));
    ui->label_22->setText(QString::number(nowDirection,10,7));

    ui->label_24->setText(QString::number(nowHorizontalAccuracy,10,7)+"         
      "+QString::number(nowVerticalAccuracy,10,7));
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158834.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 申请成为EFL Developer.

    申请成为EFL Developer.申请成为EFLDeveloper.

    2022年5月20日
    31
  • Mysql函数FIND_IN_SET()的使用方法

    Mysql函数FIND_IN_SET()的使用方法

    2021年10月24日
    62
  • 怎么在python中安装matplotlib_matplotlib依赖库

    怎么在python中安装matplotlib_matplotlib依赖库您也可以试试直接用第5步的pycharm安装试试,或许会更快。1.快捷键win+R输入cmd打开DOS命令框。2.虽然下载Python的时候自带有pip,但这里更新一下pip,输入更新pip命令:python-mpipinstall–upgradepip3.然后使用pip下载matplotlib:到这里如果直接使用命令:pipinstallmatplotlib基本很难成功。在安装模块时指定国内镜像:pipinstall包名-ihttp://pypi

    2022年8月28日
    1
  • C# int int16 Int32 Int64的介绍[通俗易懂]

    C# int int16 Int32 Int64的介绍[通俗易懂]C#intint16Int32Int64的介绍今天看到别人的代码中用到Int32,UInt32相关,想到自己平时用的都是int类型整数,就心生好奇的翻了一下资料:Int32值类型表示值介于-2,147,483,648到+2,147,483,647之间的有符号整数。Int16值类型表示值介于-32768到+32767之间的有符号整数。Int64值类型表示值介于-9

    2022年8月15日
    1
  • Bilateral Filters(双边滤波算法)原理及实现

    Bilateral Filters(双边滤波算法)原理及实现双边滤波算法原理:双边滤波算法实现:双边滤波算法实例:参考:http://people.csail.mit.edu/sparis/bf/http://blog.csdn.net/fightingforcv/article/details/52723376http://blog.csdn.net/mumu

    2022年5月2日
    28
  • Ubuntu18.04安装gcc——史上最全安装教程

    Ubuntu18.04安装gcc——史上最全安装教程心路历程:花了整个周末的时间,最终没有安装好gcc,使用的Linux版本是Ubuntu18.04。但是,历尽千辛万苦,第二天晚上终于搞好!!第一步首先在命令行里面输入pingwww.baidu.com。这一步测试Ubuntu是否有网络,若出现如图2所示的信息,可以跳过第二步进行第三步。第二步设置网络,首先在虚拟器-设置-网络适配器里面选择NAT模式。然后再进行第一步操作,有些同学还是没有网络,先别急,还需继续设置,Win+R输入services.msc调出服务,分别右键VMwareDHCP

    2022年7月24日
    57

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号