如何使用加速度传感器(Sensor)API
01月 21st, 2008
N95硬件中隐藏了一个加速度传感器(Accelerometers),该硬件来自STMicroelectronics,型号为LIS302DL。加速度传感器用于将重力或者运动加速度变换为电信号,Accelerometers很可能是继GPS之后的下一个重量级的硬件。Forum Nokia Wiki上有最权威的描述:http://wiki.forum.nokia.com/index.php/N95_sensor
Accelerometers API首先在NokiaResearchCenter(http://research.nokia.com/projects/activity_monitor)发布,目前可以支持N95,N95 8GB,N93i,N82等手机.该plug-in只能用于研究和开发用途,并含有如下Capabilities,根据Symbian安全性规则,你的应用程序不能含有比他更多的Capabilities:
LocalServices ,Location ,NetworkServices ,ReadDeviceData ,ReadUserData
SurroundingsDD ,SwEvent ,UserEnvironment ,WriteDeviceData ,WriteUserData
如何使用Accelerometers plug-in API开发应用程序。
首先下载:N95_RD_Accelerometer(http://research.nokia.com/files/N95_RD_Accelerometer.zip)
1,安装配置:
需要将N95AccelerometerPlugin.sis安装到你的手机(目前可以支持N95,N95 8GB,N93i,N82)
在开发环境中,将RDAccelerometer.h和RDAccelerometerObserver.h头文件放到SDK的\epoc32\include目录中,将*.dso和*.lib文件复制到SDK的\epoc32\release\armv5\LIB目录中
2,具体使用:
- 将库文件RDAccelerometer.lib添加到你应用程序的工程中
- 在你需要的类中继承MRDAccelerometerObserver接口,并实现HandleAccelerationL()函数接收来自加速度传感器的数据
- 创建一个CRDAccelerometer实例,并将上面提到的类作为参数传入
- 当实例创建完成后,加速度传感器数据会自动通过HandleAccelerationL()方法发送到应用程序中。
参数含义如下(参考RDAccelerometerObserver.h 获取更多信息):
- 1G加速度等于64
- 0G加速度等于0
- (-1G)加速度等于(-63)
- 删除CRDAccelerometer实例就可以停止接收来自传感器的数据
3,开发经验:
- 即使你将手机放在桌上不动,通过HandleAccelerationL()得到的数据还是略为有所改变。
- 每秒钟会有30帧的数据传入到HandleAccelerationL()中,非常耗电。
- 应用程序中尽量早地关闭传感器,在需要的时候再开启。
附上显示加速度传感器数据的例子TestSensorCode
Popularity: 38% [?]
Entry Filed under: Symbian开发, Symbian开发技巧
6 Comments Add your own
1. estartcut | 01月 30th, 2008 at 8:37 am
when im can get flipsilent 1.04
2. 何敏 | 02月 1st, 2008 at 12:46 pm
你好,非常感谢你提供的资料和DEMO,在使用你的demo过程中遇到一些问题请教下你。
1、将库文件RDAccelerometer.lib添加到你应用程序的工程中。(我用的是Carbide c++ 1.2 在工程库路径下指明改库的路径。)
但是还是报下面错误:
Undefined symbol: ‘class CRDAccelerometer * CRDAccelerometer::NewL(class MRDAccelerometerObserver &) (?NewL@CRDAccelerometer@@SAPAV1@AAVMRDAccelerometerObserver@@@Z)’[]
我的分析是没链接到RDAccelerometer.lib库。但不知如何解决。
3. tongren | 02月 1st, 2008 at 4:02 pm
在开发环境中,将RDAccelerometer.h和RDAccelerometerObserver.h头文件放到SDK的\epoc32\include目录中,将*.dso和*.lib文件复制到SDK的\epoc32\release\armv5\LIB目录中
上面这个做了吗?
4. zev | 02月 2nd, 2008 at 8:55 pm
Hi TongRen, 好文章,谢谢,加油。 想请教一下 Sensor API (http://www.forum.nokia.com/info/sw.nokia.com/id/4284ae69-d37a-4319-bdf0-d4acdab39700/Sensor_plugin_S60_3rd_ed.html) 和Accelerometer API (R&D Plugin) 是不一样的吧?那么我们应该用哪个API比较妥当?
5. tongren | 02月 5th, 2008 at 11:05 pm
看这儿,可能需要代理。
http://wiki.forum.nokia.com/index.php/N95_sensor
6. xiaoyao | 04月 24th, 2008 at 1:52 pm
你好,我在开发环境中,将RDAccelerometer.h和RDAccelerometerObserver.h头文件放到SDK的\epoc32\include目录中,将*.dso和*.lib文件复制到SDK的\epoc32\release\armv5\LIB目录中
这样做了,还是遇到
你好,非常感谢你提供的资料和DEMO,在使用你的demo过程中遇到一些问题请教下你。
1、将库文件RDAccelerometer.lib添加到你应用程序的工程中。(我用的是Carbide c++ 1.2 在工程库路径下指明改库的路径。)
但是还是报下面错误:
Undefined symbol: ‘class CRDAccelerometer * CRDAccelerometer::NewL(class MRDAccelerometerObserver &) (?NewL@CRDAccelerometer@@SAPAV1@AAVMRDAccelerometerObserver@@@Z)’[]
没链接到RDAccelerometer.lib库我使用的是s60 3.2的SDK,请问你知道如何解决吗??
Leave a Comment
Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>
Trackback this post | Subscribe to the comments via RSS Feed