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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jenkins教程菜鸟_jenkins 入门教程(上)「建议收藏」

    jenkins教程菜鸟_jenkins 入门教程(上)「建议收藏」jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的”自动化”编译、打包、分发部署。jenkins可以很好的支持各种语言(比如:java,c#,php等)的项目构建,也完全兼容ant、maven、gradle等多种第三方构建工具,同时跟svn、git能无缝集成,也支持直接与知名源代码托管网站,比如github、bitbucket直接集成。jenkins官…

    2022年5月14日
    75
  • ipynb可以用pycharm_ipynb文件转换成py文件

    ipynb可以用pycharm_ipynb文件转换成py文件PyCharm中编写ipynb文件首先确认anaconda中安装了Jupyternotebook.如果是2019版,确保使用PyCharm专业版,CommunityEdition不包括Jupyter笔记本集成。另一种是在anaconda的cmd里面,输入jupyternotebook启动服务参考:PyCharm中编写ipynb文件…

    2022年8月25日
    9
  • dubbo框架RPC过程详解「建议收藏」

    转载地址:http://www.cnblogs.com/LBSer/p/4853234.html你应该知道的RPC原理  在学校期间大家都写过不少程序,比如写个helloworld服务类,然后本地调用下,如下所示。这些程序的特点是服务消费方和服务提供方是本地调用关系。  而一旦踏入公司尤其是大型互联网公司就会发现,公司的系统都由成千上万大大小小的服务组成,各服务部署在不同的机器上,由不同的

    2022年4月11日
    54
  • 按位取反怎么运算_补码取反加一

    按位取反怎么运算_补码取反加一读本文前请首先搞懂“反码”,“取反”,“按位取反(~)”,这3个概念是不一样的。取反:0变1,1变0反码:正数的反码是其本身,对于负数其符号位不变其它各位取反(0变1,1变0)按位取反(~):这将是下面要讨论的。“~”运算符在c、c++、java、c#中都有,之前一直没有遇到这个运算符。要弄懂这个运算符的计算方法,首先必须明白二进制数在内存中的存放形式,二

    2022年8月15日
    9
  • JAVA 线上故障排查完整套路,从 CPU、磁盘、内存、网络、GC 一条龙!

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:fredal https://fredal.xin/java-error-check CPU 磁盘 内存 GC…

    2021年6月24日
    93
  • MATLAB fmincon 的初值x0的选取问题[通俗易懂]

    MATLAB fmincon 的初值x0的选取问题[通俗易懂]问题描述:在使用fmincon求解局部(全局)最优值时,我们需要在fmincon函数中输入初值x0,那么这个初值是否要像原始的牛顿法一样初值必须在可行域内(严格可行)?MATLAB在Document(https://cn.mathworks.com/help/optim/ug/fmincon.html?s_tid=doc_ta)中是这样描述的:大译:初始点为实值(fmincon只…

    2022年6月1日
    140

发表回复

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

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