Symbian, Blog, Innovation

如何使用加速度传感器(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: 26% [?]

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

Required

Required, hidden

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


标签

Calendar

01月 2008
« Dec   Feb »
 123456
78910111213
14151617181920
21222324252627
28293031  

Most Recent Posts