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


相关推荐

  • 二阶微分方程龙格库塔法_二阶龙格库塔法公式

    二阶微分方程龙格库塔法_二阶龙格库塔法公式一、计算公式对于形如以下的常微分方程:采用四阶龙格库塔法的计算公式:四阶龙格库塔法精度为4,属于单步递推法。单步递推法的基本思想是从(x(i),y(i))点出发,以某一斜率沿直线达到(x(i+1),y(i+1))点。二、实例计算对于下述二阶方程:f(q)为分段函数1、基本思想:令位移q为y(1),q的一阶导dq/dt为y(2),因此可得:dq/dt=y(2)令f(q)=fy令q的二阶导ddq/dt^2=-2*eptheton*y(2)-fy+Fm

    2025年5月22日
    4
  • html表格菜鸟教程_exls表格

    html表格菜鸟教程_exls表格HTML基础之表格文章目录HTML基础之表格1.表格的定义2.表格的标签3.单元格边框(border)4.合并单元格4.1合并行单元格(colspan)4.2合并列单元格(rowspan)5.表格格式设置5.1单元格的对齐(align)(居中,左对齐,右对齐)5.2.背景色&图片(bgcolor&background)5.2.1单元格背景色&图片5.2.2表格背景色&图片5.3单元格的边距(cellpadding)5.4单元格间的距离(cel

    2022年8月11日
    5
  • Vue最简洁最全的入门教程

    Vue最简洁最全的入门教程最近在学vue,主要从以下几个方面学习:•环境安装•模板语法(怎么写)•指令•选项、生命周期(写在哪儿)•vuejs-devtools(怎么调试)1.Vue.js简介Vue.js是一套构建用户界面的UI框架,它专注于MVVM模型的ViewModel层,通过双向数据绑定把View层和Model层链接起来。2.Vue.js特点•模板双向绑定机制•利用指令…

    2022年5月4日
    47
  • 简述C/S和B/S模式的区别[通俗易懂]

    简述C/S和B/S模式的区别[通俗易懂]简述C/S和B/S模式的区别

    2022年4月23日
    57
  • 【Python】 【绘图】plt.figure()的使用

    【Python】 【绘图】plt.figure()的使用1.figure语法及操作(1)figure语法说明figure(num=None,figsize=None,dpi=None,facecolor=None,edgecolor=None,frameon=True)num:图像编号或名称,数字为编号,字符串为名称 figsize:指定figure的宽和高,单位为英寸; dpi参数指定绘图对象的分辨率,即每英寸多少个像素,…

    2022年6月29日
    49
  • x86平台inline hook原理和实现

    x86平台inline hook原理和实现概念inlinehook是一种通过修改机器码的方式来实现hook的技术。原理对于正常执行的程序,它的函数调用流程大概是这样的:0x1000地址的call指令执行后跳转到0x3000地址处执行

    2022年7月2日
    24

发表回复

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

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