Posts Tagged ‘qt-mobility’

利用QtMobility中的Location API获得位置信息

因为QtMobility是独立于Qt的一个模块,如果想在代码中使用QtMobility则需在.pro文件中加入下面的代码
CONFIG += mobility
MOBILITY = location bearer
第一行将QtMobility进行了使能。
第二句则将定位功能和网络连接管理(某些定位方法需要网络支持)加入编译。
除此之外,如果是Symbian系统还需为工程增加相应的几个签名能力,在.pro中加入下面内容
symbian {
TARGET.CAPABILITY += NetworkServices Location ReadUserData
}
要取得位置信息,则需要有一个位置信息提供源QGeoPositionInfoSource,该信息源可以通过下面函数获得
QGeoPositionInfoSource *source = QGeoPositionInfoSource::createDefaultSource(this);
每当位置信息发生变化时,QGeoPositionInfoSource都会发送一个位置更新的信号SIGNAL(positionUpdated(QGeoPositionInfo)),QGeoPositionInfo中包含了经纬度和精确度等一些信息,我们只需将该信号关联到我们的slot函数中,对数据做进一步处理即可。
connect(source, SIGNAL(positionUpdated(QGeoPositionInfo)),this, SLOT(positionUpdated(QGeoPositionInfo)));
这里是我的一个非常简单源码geoinfo,将获得的坐标信息显示在标签上,在N97上测试成功。
要保证测试成功,需要在N97上做的一点设置。
1. 如果在室外的话,不用做改动,一会就能获得数据。
2. 如果在室内做测试,需要在另外一个叫”定位“的应用中,将定位方法中的”A-GPS”和”GPS”禁止掉,只保留”使用网络定位“,则很快能够获得数据。

Read More...

Tags: , ,
Posted on July 28th, 2010 in Qt技术, s60 | No Comments ».

S60 Qt Mobility Beta 版尝鲜

注:本文Qt版本为Qt-4.6.2
这QtMobility Beta版都出了1个月也没去光顾一下,有点说不过去。
如果说tp(technical preview)只是让你瞧瞧这是什么东西的话,那么Beta版则是真枪实弹的可以让你玩玩那看了。事实证明Beta版确实比tp版好了很多,至少能装在手机上,从源码编译也完全没有问题。为了在手机上和SDK上都保持版本一致,我选择了编译好的版本(更真正的原因是我现在还没搞明白把多个编译好的文件打包到一个.sis文件里,汗一个)。有编译控和源码控的同学可以自己来编这个QtMobility
下载安装包和源代码
Qt Mobility 的项目入口在http://qt.nokia.com/developer/new-qt-apis,要找最新的链接就在那找
当前Beta版本安装包地址: http://get.qt.nokia.com/qt/solutions/qt-mobility-symbian-1.0.0-beta1.zip
当前Beta版本源码地址: http://get.qt.nokia.com/qt/solutions/qt-mobility-src-1.0.0-beta1.tar.gz
解压安装包
解压安装包后有两个目录三个文件
install_to_deviceinstall_to_sdk
install.txt
mobility.prf
qt-mobility-1.0.0-beta1-template.pkg
install.txt是安装指南,你可以选择不看,接着往下看文章。
安装Qt-Mobility
安装到手机上
安装到手机上的相对简单一点,install_to_device里的一个qt-mobility-1.0.0-beta1.sis文件,甭管你的手机S60是3.1/3.2版或者第5版,都用的同一个安装文件
安装到S60 SDK上
稍微麻烦点,install_to_sdk里有三个文件分别对应3.1,3.2和5.0版本的.zip文件,需要分别解压,解压后都是名字为epoc32的目录,各自解压将epoc32*拷贝到对应SDK目录下的epoc32里。除了epoc32之外,还有一个mobility.prf文件需要拷贝到Qt的mkspecsfeatures目录下,默认安装的话路径是C:Qt4.6.2mkspecsfeatures目录下。
可以写Qt-Mobility了
不想从头开始写就从下载的源代码里的example里找个工程来编译看看。 编译命令很简单
qmake;make 就可以了。如果想运行的话执行make run
需要注意的是绝大部分的.pro里都会include一个example.pri文件,把那一行删掉或注释掉,它是用于编译整个QtMobility源码系统和所有example时的一些共用选项,我们只编一个应用不需要它,否则会出错。 要用到QtMobility模块的话, .pro里都会有一句”Qt+=mobility”,这就是要用到mobility.prf文件的地方了。
如果你不喜欢用命令行方式编译的话,从Carbide或QtCreator中引入一个QtMobility example 工程也能正常编译。
想运行到手机上?
没问题,命令行方式的话,在执行qmake后,执行make release-gcce ; make sis 命令就会给你编出一个.sis文件来。直接把.sis文件拷贝到手机上安装就可以了。不过因为QtMobility需要比较高级的一些系统权限,你会发现有些应用利用自签名没法安装,那么你需要将你的应用传到symbiansigned.com上去做个签名,然后下载,就能装到手机上了。

Read More...

Tags: , ,
Posted on March 18th, 2010 in Qt技术, s60 | No Comments ».

Qt 手机扩展简介(Qt Mobile Extension for S60)

在很久很久以前,Qt并不用在S60手机上,更久以前它甚至不是用在手机上的。

所以,Qt本身并没有为手机设计专有的模块。而基于Qt的Linux手机设计,无论Moto的EZX,还是Qtopia都是在Qt系统上重新做了一套框架。其实我们知道Qt自身其实已经是一套比较完善的框架了,再在上面搞一套框架,看起来有点像乌龟盖房子-盖中盖,有点浪费啊。所以,在Nokia在收购了Qt后,决定只是对Qt进行扩展,用于所有手机平台,这样系统瘦身了不小。这个手机扩展的部分就是Qt-Mobility,前面有介绍。那么这个Mobile Extension又是什么呢,目前来看是Qt-Mobility在S60上的替代品。因为开发一套完整的Qt风格Moblie API需要时间。Mobile Extension是独立的API,不是用Qt写的,但是可以被Qt代码调用。

Mobile Extension是用symbian代码写的,所以目前只能是在symbian上使用了。其功能包括Nokia智能手机上绝大部分和手机应用相关的API调用,包括但不限于网络连接,闹铃,日历,拍照,联系人,软件安装,位置标记,方向传感器,加速管理器,震动,设置管理等等,如果想要使用Mobile Extension去做开发或看看演示,可以到下面这个地址去下载
http://www.forum.nokia.com/piazza/wiki/images/b/b4/Mobile_extensions_preview_3.zip

解压以上文件,会看到以下几个目录

如果想在手机上看演示的话,只需把install_to_device下的.sis文件安装到Nokia手机上即可,当然需要装好Qt的库哦,前面一个博客讲了怎么安装Qt库了,如果没有安装,可以过去瞧瞧。如果想在Carbide里做开发的话,需要将install_to_sdk目录下,解压后的epoc32目录内容,拷贝到SDK对应的目录下面。如果默认安装,应该是C:\S60\devices\Nokia_N97_SDK_v1.0\epoc32这样的地址。然后就可以做开发了。
演示和测试代码在extensions目录下,你只需要通过Carbide的工程工具引入(import)一个Qt的.pro工程文件即可。然后编译成.sis文件,拷贝到手机上安装,齐活。

关于Mobile Extension,详细文档可以参考:http://wiki.forum.nokia.com/index.php/Mobile_Extensions都是E文的,如果大家有兴趣,可以翻译过来

Read More...

Tags: ,
Posted on November 5th, 2009 in Qt技术, s60 | 1 Comment ».

Qt-Mobility 概览

在Nokia宣布停止Qt-Extended开发的时候,并非意味着放弃Qt在手机平台上的应用,而是策划一个更完美的架构能够让Qt在symbian,maemo,desktop等平台做到更好的兼容,这个架构就是Qt-Mobility模块,我们知道Qt-Extended是基于Linux的,而Qt-Mobility将会是跨平台的。它汲取了Qt-Extended中一些优秀的设计理念,并保持和Nokia原有应用设计的兼容。
Qt-Mobility的软件源码在http://qt.gitorious.org/qt-mobility,可以看到其支持的功能.
serviceframework
serviceframework提供系统框架服务,比如文档管理/设备管理/多媒体播放等,只需提供请求,具体后台实现可以有不同的插件来完成,这很像Qt-Extended中的Service请求。也类似Android中的intent。
bearermanagement
bearermanagement是用于网络管理的。在Nokia的智能手机里在访问网络的时候,都有不同的网络连接可供选择,比如CMNet,CMWAP,还有无线网络等。bearermanagerment正是管理这些网络接口的功能。
contacts
顾名思义,这个是管理联系人用的,具有名片功能,支持Nokia自带的.vcf格式。可以自己增加新的条目。大部分代码基本上和Qt-Extended中的contacts是一样的。
context
context和Qt-Extended的渊源就更大了。其实就是Qt-Extended中的QValueSpace,它实现的是变量自动更新功能。举例来说,手机屏幕上的电量,信号强度等,都是随着系统中的电量,信号强度自动更新,不需要定时查询。你可以定制自己需要监控的一些变量,在这些变量被改变的时候,会自动发消息给显示界面。比如收到的电子邮件数,短信息等。
location
location实现定位管理功能,可以从GPS设备中读入坐标信息。包括移动的方向,速度等。地图应用会用到这个功能。

Read More...

Tags: , , ,
Posted on August 31st, 2009 in Qt技术, 新闻类 | No Comments ».