使用 Qt for Android 获取并利用手机传感器数据(1)开发环境省心搭建

news/2024/10/17 21:24:30/

现代手机拥有许多传感器,包括地磁、姿态、GPS、光照、温度、气压、摄像、声音、电磁等,完全就是一个高度集成的科学仪器。不夸张的说,一部手机加上一个外围的计算机和控制系统,做一个功能较强的自主移动机器人并不是不可能。但是,很多APP都只是局限于自身的功能,并不喜欢把传感器数据泵出来给其他设备分享。即使有,也是收费的。

有没有可能自己做一个小APP,获得所有的手机传感器数据,榨干手机的感知能力呢?实际上实现起来并不困难,甚至连界面都不需要。笔者准备涉足一下从未实操过的App开发,把旧手机的传感器数据分享出来。

1. 基本思路

分享传感器数据,必然需要一个连接。从应用的场景来说,用手机与消费者的网络距离来分类,可以想到如下几种常见共享思路。

序号连接场景技术要求
0Wifi局域网室内/近距离,低延迟局域网通信需要局域网服务声明与功能发布实现自动发现与连接
1网络热点(无线/USB/蓝牙等)室内/近距离,无需第三方Wifi网络支持,低延迟局域网通信客户端直接获取网关地址而后连接,最简单。
2蓝牙数据连接室内/近距离,无需第三方Wifi需要蓝牙发现与连接功能
3物联云服务远距离,基站覆盖区域内共享,公网端口映射需要注册域名,购买云资源,花钱但简单可靠
4DDNS动态域名远距离,基站覆盖区域内共享,公网端口映射需要自己维护宽带、IP与DDNS,复杂度高但开销小

从简单考虑,我们使用序号1进行开发。手机为其他设备提供互联网热点,并在构造的局域网内直接通过局域网IP段进行传感器内容分发。

2. 开发工具链搭建

如果熟悉Java或者Kotlin开发,当然是用原生的 Android Studio 搞定。不过我比较熟悉C++,准备使用C++ Qt搞定。通过初步的安装,我惊喜的发现新版的Qt(Creator版本 9.0)在线安装真的比4年前方便太多了!基本是按照下面的步骤自动搞定,不需要自己修改环境变量、配置Java。

注意的是,为了后续安装方便,机器上要安装Git客户端,并加入PATH,使得CMD可以找到Git.

2.1 下载并安装 Android Studio

在官网下载 Android Studio, 并进行安装。笔者的下载速度不孬,呼呼叫就下完了,管的狠!

  1. 下载后,最好选择一个大一点的磁盘,进行安装。我不喜欢把SDK之类的东西放到默认的C:\Users\Name\AppData下,所以注意,安装的时候选好文件夹。
  2. 如果一直在手机上物理调试,也可以不安装虚拟机。这样快得多。另外在实际手机调试的体验要比虚拟机好得多。

1.安装
2

在安装完毕后,直接开始(start),首次会提示下载必要的组件。注意为了SDK不污染AppData,选择自定义模式
自定义在这里插入图片描述在这里插入图片描述完成后,关闭程序。注意,目前缺失的很多组件,Qt Creator 9.0会在配置时进行下载。

2.2 在线安装Qt

在官网下载Qt在线安装工具
https://www.qt.io/download-qt-installer
需要注意的是,要有耐心等待网页,真的很慢。而后会进入下载页面。真开始下载后,下载超级快。另外注意的是,虽然是在线安装,但是绿色版的。比如你在学校机房,安装好一台后,直接拷贝到其他机器就全了。只要保证文件夹都一样就可以。如果不一样,用junction创建一个NTFS链接即可。

由于学校不是所有计算机都有D:(有的是光驱+E:),我一般会选择一台C盘大的机器,全部一股脑装到C:\Qt或者 C:\Tools\Qt里(本次放在C:\Android\Qt)。发布到其他电脑的 E:或者D:后,再junction到C。

download在这里插入图片描述
而后,双击下载的文件 “qt-unified-windows-x64-4.5.0-online.exe” 进行安装。注意似乎需要填写账号,还需要提前注册一个。

在这里插入图片描述在选择套件时,直接选择上 Android,就选中了所有的组件。默认当前最新是Qt 6.4.1。像笔者这样已经安装过Qt的用户,直接选升级后,再添加Android组件即可。注意一定要安装9.0以上的QtCreator,真的非常好用。

在这里插入图片描述在这里插入图片描述Ok

2.3 自动配置Android工具链

首次启动QtCreator后,底部会有提示,配置安卓
在这里插入图片描述直接点击,选择刚才的SDK路径后,会发现很多项都是红色的。
在这里插入图片描述点击“设置SDK”,进行配置
在这里插入图片描述
在这里插入图片描述
而后,再次选择同一个SDK文件夹,就会触发下一步配置

在这里插入图片描述

在这里插入图片描述
注意许可证要一路点击同意
在这里插入图片描述
在这里插入图片描述

完毕后,主干功能全部变绿。如果配置了Git,则卡伊自动克隆openssl,所有功能变绿。

在这里插入图片描述此时,重启 QtCreator,会发现Kits里已经出现了完好的工具链。

在这里插入图片描述

3. 创建第一个安卓应用

可以直接新建第一个应用了,也可以打开一个例子。注意,在release版本的构建选项里,要创建一个用于app签名的证书,否则release版本的apk生成会有问题。

在这里插入图片描述
注意首次编译会下载 Downloading https://services.gradle.org/distributions/gradle-7.4.2-bin.zip,如果网络不好,可能会超时。多试几次就可以了。要注意有些编译提示是UTF-8的,需要修改QtCreator的默认编码,这样才能显示中文错误提示。

在这里插入图片描述
编译后,即可运行例子

在这里插入图片描述


http://www.ppmy.cn/news/792.html

相关文章

keil5打开keil4工程无法编译的情况解决办法!!!!!!

目录 1.情况 1.keil5使用(打开)keil4文件工程的时候报错 2.解决办法 如果是kei5打开kei4工程文件出现 步骤1: 步骤2: 步骤3: 1.情况 1.keil5使用(打开)keil4文件工程的时候报错 --- Erro…

Spring MVC中的拦截器

在之前学习JAVAWEB 的时候,我们学习了过滤器的知识。过滤器的作用是保护请求的服务器资源,在请求资源被执行之前,如果请求地址符合拦截范围,则会先执行过滤器。过滤器的执行时机,是在Servlet之前执行的。但是在使用了S…

终极版Facebook广告管理工具新手教程!赶紧收藏!(下篇)

广告管理工具是一款用于创建和管理Facebook广告的工具。用户可以查看和修改所有Facebook广告系列、广告组和广告,以及查看相关结果。Facebook是很多跨境人不会错过的海外社媒营销平台,所以很多新手都会迫切地想要学习Facebook广告管理工具相关的知识点&a…

Linux部署WordPress(宝塔版)

宝塔手册宝塔安装 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh 宝塔配置 1.帮助命令:bt2.修改用户名(童心同萌):bt 63.修改密码(123456):bt 54.修改端口(888…

lintcode 125 · 背包问题(二)

描述 有 n 个物品和一个大小为 m 的背包. 给定数组 A 表示每个物品的大小和数组 V 表示每个物品的价值. 问最多能装入背包的总价值是多大? A[i], V[i], n, m 均为整数你不能将物品进行切分你所挑选的要装入背包的物品的总大小不能超过 m每个物品只能取一次m < 1000m<…

大数据 | Hadoop、Hive、Spark的关系

文章总括图 数据存储 单机数据库时代 所有数据在单机都能存的下&#xff0c;数据处理的任务都是IO密集型&#xff0c;更谈不上分布式系统 一个典型的2U服务器可以插6块硬盘&#xff0c;每块硬盘4T&#xff0c;共24T原始容量&#xff0c;再加上一些数据包的可用冗余&#xf…

1.2 无监督学习和强化学习

1.2 无监督学习和强化学习无监督学习定义无监督学习与监督学习的区别相关概念流程图强化学习无监督学习 定义 无监督学习 (Unsupervised Learning&#xff09;是指从无标注数据中学习预测模型的机器学习问题&#xff0c;其本质是学习数据中的统计规律或潜在结构。 无监督学习…

unity---Mesh网格编程(六)

目录 1.模型切割 2.代码 1.模型切割 如图&#xff0c;对3D模型的Mesh网格进行切割&#xff0c;会经过若干个三角面。而切割后&#xff0c;将会产生新的面来组成左右两边的物体。 要记录每个顶点与顶点下标&#xff0c;新的面要顺时针绘制&#xff0c; 2.代码 using System.…