手机方向传感器的缺点及解决方法探究
作者:jjwwwww 发布时间:2021-12-27 08:58:58
方向传感器是算法生成的传感器之一,主要借助于磁场传感器的数据。
Android系统自带了方向传感器,不过系统5.0之后方法就被废除了(我们还是可以使用的,只是谷歌不推荐继续使用了)。谷歌提供了一套新的算法来作为替代,运用磁场传感器和加速度传感器来计算方向(可自行搜索调用方法)。
两种方法之间的优劣暂时无法判定,当然我们希望新方法的效果更好。由于没有具体研究两个算法之间的区别,根据我个人使用经验来说,效果应该差不多。
算法的抗干扰能力很弱
我不是要嘲讽谷歌,而是陈述一个事实。我们想象手机中有一个小小的指南针,玩过磁铁的朋友应该知道同性相斥、异性相吸,因此这个小指南针一旦遇到强磁干扰时就会失效。这是算法上的一大缺陷,也是难以克服的。而且市面上几乎所有的手机传感器都会遇到这样一个问题,包括苹果。
手机、电脑、铁制品等容易带磁性的物体,都会对手机的方向造成很大的干扰,一般来说保持合适的距离(手机电脑十五厘米以上,汽车一米以上),干扰就可以忽略不计。但是在车、电梯或者大型仪器设备附近及其内部,方向传感器就很难保持稳定了。
那么手机本身呢?手机本身也可以看作是强磁体,但由于硬件位置是固定的,我们可以把手机本身看作是静态干扰(也就是说干扰是个稳定的值),算出对应的值,做个补偿即可(实际上谷歌的算法中已经考虑到这点,所以并不需要我们多操心)。
一旦受到强磁干扰,此时的传感器在大部分情况下是很难做到自身调节并快速恢复正常的,我们可以拿着手机进行八字形回转来使磁场重新回到正确的值,前提是离开强磁体。
如何克服
合理运用手机的陀螺仪传感器有一定的可能性能降低磁场干扰,陀螺仪给出的是物体旋转时的角速度,理想情况下是正好与我们的方向传感器变化速度(也就是角速度)是一致的,二者相互结合相互印证,就能在一定程度上判断磁场是否受到干扰,可以有效降低手机方向的突变情况。这里提供一种可行的解决思路,具体怎么做,还需要探究。
来源:https://blog.csdn.net/jjwwwww/article/details/83143528


猜你喜欢
- 本文实例为大家分享了Java实现Flappy Bird游戏的具体代码,供大家参考,具体内容如下1.首先在mainActivity.xml中放
- 1.查找概述查找表: 所有需要被查的数据所在的集合,我们给它一个统称叫查找表。查找表(Search Table)是由同一类型的数据元素(或记
- spring-boot-devtools是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。原理是在发现
- DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数
- 上一篇说到Springboot整合Netty,自定义协议实现,本文聊一些拆包/沾包问题。拆包/沾包问题TCP是面向字节流的协议,在发送方发送
- 两种方法,第一种是静态开启方法把application 或者 activity的主题设置为Theme.Holo即可<?xml vers
- 首先让大家有个全局的认识,直接上个项目,看看仅仅通过这几行代码,竟然就能完成如此强悍的功能。下篇再仔细讲讲为什么要这么写。效果图:实现了三个
- 使用poi生成excel通常包含一下几个步骤创建一个工作簿创建一个sheet创建一个Row对象创建一个cell对象(1个row+1个cell
- 简单认识一下Startupnowinandroid项目作为目前google官方来演示MAD(现代Android开发技术)的示例项目,里面大量
- 项目背景最近在项目上对接前端的的时候遇到了几个问题1.经常要问前端要请求参数2.要根据请求参数写大量if...else,代码散步在 Cont
- 本文实例讲述了Android编程实现圆角边框布局效果的方法。分享给大家供大家参考,具体如下:这里用的是TableLayout布局的。先看效果
- 一. 简介 SQLite数据库是一个轻量级的DBMS(数据库管理系统)。SQLite使用单个文件存储数据,Android标准库包含SQLit
- 前言最近在学习java8,所以接下来会给大家介绍一系列的Java8学习内容,那么让我们先从lambda表达式开始。众所周知从java8出现以
- 摘要:本文演示如何构建起一个优秀的后端接口体系,体系构建好了自然就有了规范,同时再构建新的后端接口也会十分轻松。一个后端接口大致分为四个部分
- 也许是本人不才,初识Maven时,被各种不明所以的教程搞得一头雾水,而在后来的使用中,我发现Maven大部分功能没有想象的那么困难。本片文章
- 本文实例为大家分享了Android联系人字母排序的具体代码,供大家参考,具体内容如下实现思路:首先说下布局,整个是一个相对布局,最下面是一个
- 配置文件-yaml在spring Boot开发中推荐使用yaml来作为配置文件。基本语法:key: value;kv之间有空格大小写敏感使用
- 目录概述1 技术工具2 构建Spring Boot工程3 开始编写测试和代码1 Controller2 Service3 Repositor
- 内置的连接池目前spring Boot中默认支持的连接池有dbcp,dbcp2, tomcat, hikari三种连接池。 数据库连接可以使
- 一、注解@PostConstruct使用注解@PostConstruct是最常见的一种方式,存在的问题是如果执行的方法耗时过长,会导致项目在