|
该文章原创于Qter开源社区(www.qter.org),作者Joey_Chan,转载请注明出处!
本系列教程主要讲述与安卓移植版Qt的相关内容,如平台特性、功能限制、特定用户体验和内容发布等,其余与Qt自身非平台相关的内容不会作详细讲述,笔者默认童鞋们已经有一定的Qt功底。
另:请自备安卓机子一台,不推荐用模拟器。此篇教程使用Qt5.2,童鞋们请使用大于等于此版本的Qt。
第四篇:传感器
sensors,顾名思义就是传感器,一种将自然环境的某种特征转换为电子信号的东东。在手机里面,传感器有很多,什么加速度计,GPS,摄像头等,都属于传感器。这里将讲述如何通过Qt的Sensors库来调用这些传感器。
另外此篇教程不只适用于安卓,同样带有传感器的多个系统都适用,如三大桌面系统,手机如IOS,旗鱼,Ubuntu Touch,Tizen,黑莓等,都支持Qt Sensors,这些系统之间也只有少许差别而已。
详细资料请在文档中搜索“Qt Sensors”即可,高手们可以直接在这里跳过我的教程。
下图是一张来自Qt文档的系统兼容列表:
下面以几个例子来讲解如何使用:
1. Qt Sensors - Accel Bubble 这是Qt自带的加速度计例子,example里面有。
截图:
核心代码:(以下代码都是qml)
1. 先把模块import进来2. 增加一个加速度计的qml类型- Accelerometer {
- id: accel
- dataRate: 100
- }
复制代码 3. 激活加速度计- Accelerometer {
- id: accel
- dataRate: 100
- active:true // 不一定要在定义里面,也可以在别的函数里手动激活
- }
复制代码 4. 读取加速度计的数据,并作用在蓝色球上面- onReadingChanged: {
- var newX = (bubble.x + calcRoll(accel.reading.x, accel.reading.y, accel.reading.z) * .1) // x变化值
- var newY = (bubble.y - calcPitch(accel.reading.x, accel.reading.y, accel.reading.z) * .1) // y变化值
- if (newX < 0)
- newX = 0
- if (newX > mainWindow.width - bubble.width)
- newX = mainWindow.width - bubble.width
- if (newY < 18)
- newY = 18
- if (newY > mainWindow.height - bubble.height)
- newY = mainWindow.height - bubble.height
- bubble.x = newX
- bubble.y = newY
- }
-
- // 其实就是计算x和y的函数
- function calcPitch(x,y,z) {
- return -(Math.atan(y / Math.sqrt(x * x + z * z)) * 57.2957795);
- }
- function calcRoll(x,y,z) {
- return -(Math.atan(x / Math.sqrt(y * y + z * z)) * 57.2957795);
- }
复制代码 以上就是加速度计API的最基本用法,具体API可以查看文档
///////////////////////////////////////////////////////////////////////////////
这里就需要说到新的creator 3.0,新的安卓套件的支持将更简便。
先以安卓项目形式打开Accel Bubble例子,然后点击“项目”选项卡,如下图:
在“运行”一栏中,展开“Deploy configurations”即可看到如上图的界面,这时需要点击“create AndroidManifest.xml”按钮,创建安卓apk需要的配置文件。(一般情况下新建的安卓项目已经创建好了,Qt自带例子里面没有才需要手动创建)
注:这里可能有个bug,用api-10可能会导致无法解析安卓配置文件,上图我就使用了api-14.
然后会转到一个配置窗口,这里是安卓apk配置信息修改窗口,可改可不改。然后点击左下角的运行,这时正常情况下会出现设备选择窗口,选择好设备机可以看见程序自动运行了。(Linux下可能会出现一堆问号的不兼容设备,解决方法请看第一篇教程开头的准备工作)
2. Qt Sensors - ShakeIt QML Example 运动手势API
确切来说这是另一种传感器API的封装,个人认为是几种传感器的数据集合重新封装(源码我没看过,猜的而已)。这个API集提供了一套手势识别的接口,Qt也特别提供了这个例子来说明如何使用。
具体可搜索“SensorGesture”来查看怎么使用这个运动手势API,也可以看看这个例子的代码(几十行而已)
(加班忙。。。没时间写下去了,请见谅)
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|