作者bluestar8783 (蓝星)
看板AndroidDev
标题Re: [问题] 有关Ecompass校准的实现
时间Thu Oct 27 09:56:23 2011
工作刚好是做这块,所以来回答一下
Android App就是注册sensor,然後API捉方位角或是重力值
而sensor HAL层是把daemon中的计算结果给回报到SensorManager,然後再往上报
所以,所提到的校正和计算角度,全都由daemon中的演算法提供
当然accuracy这个参数,也是由daemon所填写
但就我追踪的结果akmd无论在怎样的环境下面都是报High
系统厂通常从chip商那里只会拿到HAL+daemon的code,且都是会通的(为了整合
其他sensor,有可能会提供source code)。当然最重要的演算法部份,是binary
格式,根本没机会看到内部运算
有些人提到,甩甩就可以正常,一半对一半不对
对的是,校正时需要做动作;不对的是,动作做错可能会校正失败
校正的动作需要三个旋转轴都转到,所以最常请End-User做划8动作
但有些人在划8时候,没有翻面而导致校正一直无法通过
现在有些App会在上面有校正的Button,据我推测,不是用JNI的方式来开关daemon
中的校正流程;就是去监测accuracy这参数是否有由Low->High。不过这招若是遇到
都是High的状况,显然会没辄
从以前1.5做到现在,对於HAL层总共改了3次架构(改多改少),要实做不是太难
但是要了解整个流程〔SensorManager(JAVA&JNI)、SensorService(JAVA&JNI)、HAL〕
还是需要花些力气才行
献丑了...
※ 引述《freemantw (阿伦)》之铭言:
: To gpc大大~
: 您之所以感受到甩甩就有校准的功能~
: 原因是因为priv大大所言~
: 底层的程式码不断的在做calibration~
: 以至於您APP有按calibration按键与没按calibration按键并没有差别~
: 我现在写的程式码也是不断的在做calibration~
: 至於一般买到的指北针甩甩就好,那是因为指北针有时指针会被卡住~
: 那应该是指北针的机构设计不良~
: 不过真的很谢谢您提供的相关意见~
: 如果以上有任何错误,也请各位高手更正~
: 还有很谢谢priv大大~
: 至少让我觉得我目前追code是没有白费的~
: 真的跟您讲的情况很像~
: 很期待您明天的讲解~
: 不好意思多问一个~
: SensorManager.java中一个参数: accuracy
: 感觉是用来判断现在Ecompass准不准的参数
: 请问一般APP会使用到此参数判断提示使用者目前需不需要做判断吗?
: 不然java层定义这个参数好像什麽用处耶><
: 谢谢各位神人帮助^^
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.251.198.202
1F:推 gpc:找了一下proprietary果然没看到相关的内容 10/27 10:15
2F:→ gpc:看来是真的只有做IC的人才要管这个 10/27 10:15
3F:→ priv:bsp的proprietary下面只会有Qualcomm的proprietary code啊XD 10/27 10:39
4F:→ priv:看来不需要解释太多了 10/27 11:34
5F:推 tomap41017:推 10/27 13:30