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

news2024/11/24 12:58:43

现代手机拥有许多传感器,包括地磁、姿态、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.coloradmin.cn/o/52712.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【wpf】 当用了数据模板之后如何获取控件的Item?

背景 我对一个treeview使用了数据模板 <TreeView.ItemTemplate> <!--子项的绑定--><HierarchicalDataTemplate DataType"{x:Type local_md:ToolsNodeItem}" ItemsSource"{Binding PathChildren}"><StackPanel Orie…

史上最全的Python包管理工具:Anaconda教程

事实上Anaconda 和 Jupyter notebook已成为数据分析的标准环境。 简单来说&#xff0c;Anaconda是包管理器和环境管理器&#xff0c;Jupyter notebook 可以将数据分析的代码、图像和文档全部组合到一个web文档中。 接下来我详细介绍下Anaconda&#xff0c;并在最后给出Jupyte…

[oeasy]python0022_框架标题的制作_banner_结尾字符串_end

结尾字符串(end) 回忆上次内容 ​python3​​ 的程序是一个 5.3M 的可执行文件 ​​python3​​ 里面存的是 cpu 指令可以执行的那种我们可以把指令对应的汇编找到 ​​objdump -d ~/python3 > python3.asm​​ 汇编语句是和当前机器架构的指令集相关的 ​​uname -a​​可…

【文件I/O】标准IO:库函数

标准IO&#xff1a;库函数一、基本概念1.文件类型2.标准I/O介绍3.流的概念4.文本流和二进制流5.流的缓冲类型6.标准I/O流&#xff08;stdin、stdout、stderr&#xff09;二、标准I/O函数1.fopen、fclose、errrno、strerror、perror&#xff08;打开、关闭文件&#xff0c;输出错…

[附源码]计算机毕业设计SpringBoot四川景区管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

SpringBoot实用开发之热部署

目录 热部署 手动启动热部署 自动启动热部署 热部署范围布置 关闭热部署 热部署 能学到spring boot实用开发篇的相信都已经对IDEA和maven了如指掌了&#xff0c;我就基于这些前置知识来说一下热部署&#xff0c;其实也很简单。 手动启动热部署 首先可以在你的pom.xml文…

cubeIDE开发,I2C协议采集传感器数据(SHTC1、LTR-553ALS、BMP280、LSM6DSL、MMC3680KJ)

一、I2C总线协议 I2C&#xff08;Inter Integrated Circuit&#xff09;总线是 PHILIPS 公司开发的一种半双工、双向二线制同步串行总线。I2C 总线传输数据时只需两根信号线&#xff0c;一根是双向数据线 SDA&#xff08;serial data&#xff09;&#xff0c;另一根是双向时钟线…

EMQX Enterprise 4.4.11 发布:CRL/OCSP Stapling、Google Cloud Pub/Sub 集成、预定义 API 密钥

我们很高兴地告诉大家&#xff0c;EMQX Enterprise 4.4.11 版本正式发布&#xff01; 在此版本中&#xff0c;我们发布了 CRL 与 OCSP Stapling 为客户端提供更灵活的安全防护&#xff0c;新增了 Google Cloud Pub/Sub 集成帮助您通过 Google Cloud 各类服务发掘更多物联网数据…

[附源码]Python计算机毕业设计Django高校学生信息采集系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

2022爱分析· 信创厂商全景报告 | 爱分析报告

报告编委 张扬 爱分析联合创始人&首席分析师 孙文瑞 爱分析高级分析师 戴甜 爱分析分析师 王命航 爱分析分析师 目录 研究范围定义市场洞察厂商全景地图市场定义与厂商评估厂商入选列表 1.研究范围定义 1.1研究背景 近年来&#xff0c;受中美贸易战、科技战等内外部多重因…

java -数据结构,单向链表

顺序表的问题及思考&#xff1a; 顺序表中间/头部的插入删除&#xff0c;时间复杂度为O(N)增容需要申请新空间&#xff0c;拷贝数据&#xff0c;释放旧空间。会有不小的消耗。增容一般是呈2倍的增长&#xff0c;势必会有一定的空间浪费。例如当前容量为100&#xff0c;满了以后…

HTTP和HTTPS协议(必备知识)

文章目录1、什么是HTTP协议2、HTTP协议格式<1>HTTP请求方法<2>HTTP的状态码3、HTTP是不保存状态的协议<1>使用Cookie的状态管理3、HTTPS<1>加密方式<2>理解HTTPS加密过程1、什么是HTTP协议 HTTP协议常被称为超文本传输协议&#xff0c;HTTP协议…

【网安神器篇】——mimikatz系统取证工具

作者名&#xff1a;Demo不是emo 主页面链接&#xff1a;主页传送门 创作初心&#xff1a;舞台再大&#xff0c;你不上台&#xff0c;永远是观众&#xff0c;没人会关心你努不努力&#xff0c;摔的痛不痛&#xff0c;他们只会看你最后站在什么位置&#xff0c;然后羡慕或鄙夷座…

C语言第十二课(中):操作符详解【单目、关系、逻辑、条件操作符】

目录 前言&#xff1a; 一、单目操作符&#xff01;、-、、&、sizeof、~、--、、*、(类型)&#xff1a; 1.逻辑反操作&#xff01;&#xff1a; 2.正负值操作符-、&#xff1a; 3.取地址操作符 &与解引用操作符 *&#xff1a; ①.取地址操作符&&#xff1a; ②.解…

数据结构与算法基础(王卓)(3)

前置&#xff1a; //#include<iostream> #include<stdlib.h>//存放exit#define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 #define MAXlength 100 //初始大小为100&…

小程序开发音视频问题汇总及解决方案

目录 问题一&#xff1a;开发音视频&#xff0c;必用的两个小程序组件live-player和live-pusher&#xff0c;他们做什么用的&#xff0c;怎么才能使用&#xff1f; 问题二&#xff1a;一个页面只能插入一个 问题三&#xff1a;真机调试图片预览及视频全屏无反应 问题四&am…

图库 | 图存储的基础概念

前言 图存储的全称叫图数据库存储引擎或图数据库存储层&#xff08;组件&#xff09;。在功能层面&#xff0c;它负责图数据库或图数仓的数据的持久化存储。因为存储距离用户层的应用较图计算更为遥远&#xff0c;过往很少有论著会专门讲述图存储环节&#xff0c;但笔者要说的…

Python搭建虚拟环境

一、简介 1.特点&#xff1a; python的虚拟环境类似于虚拟机&#xff0c;能够创建一个独立的python运行环境&#xff0c; 虚拟环境中的安装的第三方依赖包和全局环境中的包相互独立。 2.环境 1. python3.3以上版本(自带venv模块&#xff0c;若已安装则可直接改变环境变量来…

【软件安装】Linux中RabbitMQ的安装

① 本篇是基于Linux操作系统中的安装&#xff0c;故先准备一个干净的Linux操作系统。本文中所有的操作基于CentOS8进行安装演示&#xff1b; ② 接下来的演示文本中&#xff0c;红色字体为操作步骤&#xff0c;黑色字体为解释说明&#xff1b; ③ 确保Linux系统中已经安装好必…

LightGBM 实现基于内容的个性化推荐

大家好&#xff0c;本文中&#xff0c;我将和大家一起学习如何训练 LightGBM 模型来估计电子商务广告的点击率的推荐系统的例子。将在Criteo数据集上训练一个基于LightGBM的模型。 LightGBM是一个基于树的梯度提升学习算法框架。是基于分布式框架设计的&#xff0c;因而非常高…