Qt安卓教程(4):传感器
该文章原创于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进来import QtSensors 5.02. 增加一个加速度计的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,也可以看看这个例子的代码(几十行而已)
(加班忙。。。没时间写下去了,请见谅)
xflcx1991 发表于 2014-2-12 09:12 static/image/common/back.gif
感谢楼主提供教程。等这一段时间忙过去了,楼主还能继续么。
看看吧,真不好说,有时间就写 顶楼主,要坚持写下去啊:Q 终于开始更新了,楼主加油! 支持楼主!一直关注! 最近在做相关的事,参考一下,不错 你是怎么同时安装qt-for-android 和qt-for-win的??我同时安装出现问题的 liyingju001 发表于 2014-2-20 10:32 static/image/common/back.gif
你是怎么同时安装qt-for-android 和qt-for-win的??我同时安装出现问题的
我的是Linux版,平时基本不用win。
如果你怕出问题的话,你可以下载一个在线安装版,里面可以选择你需要的组件,这里就可以同时选上android和win :lol加速度计已经在手机里滚起来了。
楼主加油~~~ 楼主万岁 ,感谢啊 正好能用上
页:
[1]