作者freemantw (阿伦)
看板AndroidDev
标题Re: [问题] 有关Ecompass校准的实现
时间Thu Oct 27 23:42:06 2011
各位高手~
不好意思喔! 小弟我刚刚进入这行><
满天问号~
请多多包涵~
我不知道您们一直提的daemon,是否就是指厂商所提供的一个.a档(在HAL层中)~
可是我前辈说那个档案好像被锁住了,因此只能放弃不用~
变成现在的局面~
要自己写校准程式~
现在碰到最大的问题是~
上层有没有一个触发机制告诉底程按了calibration键~
如果有的话可以告知我在那吗?
如果没有~
那底程一直calibration~
就磁场校准的原理看来~
当我去了强磁场影响区~
获得的x, y, z轴的磁场max与min~
一般会大於弱磁场影响区的磁场max或min校准值~
那我再回来弱磁场影响区时做校准时~
不就无法覆盖强磁场区所产生的max或min值~
这样磁场校准值不就出错了~
还是一般厂商会定时清空磁场的max与min校准值?
您们说的proprietary code有可以参考的吗?还是都是不公开的~
我都找不到相关资讯><
还有akm daemon好像也找不到code~
※ 引述《bluestar8783 (蓝星)》之铭言:
: 工作刚好是做这块,所以来回答一下
: 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的状况,显然会没辄
请问一下JNI层要怎麽去开关daemon来校准流程阿~
就我目前所看到机器回传LOG
一般的APP不就只是一直触发data__poll,读取想要的资料
如果accuracy这参数是由底程提供给java层~
那是否意味着daemon这个程序自己会判断现在的磁场准不准~
不然是什麽把accuracy由状态High拉成状态Low呢?
: 从以前1.5做到现在,对於HAL层总共改了3次架构(改多改少),要实做不是太难
: 但是要了解整个流程〔SensorManager(JAVA&JNI)、SensorService(JAVA&JNI)、HAL〕
: 还是需要花些力气才行
: 献丑了...
太谦虚了您><
很谢谢各位前辈细心的指导~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.228.84.91
1F:推 gpc:上层应该是没吧 都在硬体层吧 你是做IC的吗 10/28 01:36
2F:→ gpc:做手机应该不会弄到这边的CODE吧 除非你在发哥 10/28 01:36
3F:→ gpc:那些不公开的CODE都会签NDA吧..除非你有很要好的朋友 10/28 01:37
4F:→ gpc:不然应该不可能看到CODE 10/28 01:37
5F:→ freemantw:我是做手机的~可是前辈说量不大~因此厂商有锁CODE~ 10/28 12:27
6F:→ freemantw:才会变成我现在要自己写calibraton的code~囧 10/28 12:29
7F:推 gpc:买版子的时候不会送吗 10/28 12:55
8F:→ freemantw:有送耶~可是因为我们量不大~好像有功能被锁~等我下礼拜 10/29 22:19
9F:→ freemantw:先试试才能知道能否使用~谢谢您的帮助^^ 10/29 22:20