虽然我没有在Android上使用指南针,但下面显示的基本处理(在JavaScript中)可能适用于您.

它基于加速度计上的低通滤波器,它是由Windows Phone team推荐的,适用于罗盘(每360°循环行为)进行修改.

我假设罗盘读数是以度为单位,浮点数在0-360之间,输出应该相似.

你想在过滤器中完成2件事情:

If the change is small, to prevent gitter, gradually turn to that direction.

If the change is big, to prevent lag, turn to that direction immediatly (and it can be canceled if you want the compass to move only in a smooth way).

为此,我们将有2个常量:

The easing float that defines how smooth the movement will be (1 is no smoothing and 0 is never updating, my default is 0.5). We will call it SmoothFactorCompass.

The threshold in which the distance is big enough to turn immediatly (0 is jump always, 360 is never jumping, my default is 30). We will call it SmoothThresholdCompass.

我们在调用中保存了一个变量,一个称为oldCompass的float,它是算法的结果.

所以可变防御是:

var SmoothFactorCompass = 0.5;

var SmoothThresholdCompass = 30.0;

var oldCompass = 0.0;

并且函数接收newCompass,并返回oldCompass作为结果.

if (Math.abs(newCompass - oldCompass) < 180) {

if (Math.abs(newCompass - oldCompass) > SmoothThresholdCompass) {

oldCompass = newCompass;

}

else {

oldCompass = oldCompass + SmoothFactorCompass * (newCompass - oldCompass);

}

}

else {

if (360.0 - Math.abs(newCompass - oldCompass) > SmoothThresholdCompass) {

oldCompass = newCompass;

}

else {

if (oldCompass > newCompass) {

oldCompass = (oldCompass + SmoothFactorCompass * ((360 + newCompass - oldCompass) % 360) + 360) % 360;

}

else {

oldCompass = (oldCompass - SmoothFactorCompass * ((360 - newCompass + oldCompass) % 360) + 360) % 360;

}

}

}

我看到这个问题在5个月前已经开放了,可能还没有关系,但我确定其他程序员可能会发现它很有用.

Oded Elyada.

android 指南针不稳定,Android指南针方向不可靠(低通滤波器)相关推荐

  1. Android项目开发:指南针(两种方法实现)

    Android项目开发:指南针应用的实现 1.基于方向传感器 activity_main.xml MainActivity.java 2.基于加速度传感器和地磁传感器 在Android中可以使用内置传 ...

  2. android指南针报告,Android 指南针

    xml布局 ... android:id="@+id/imageView" android:layout_width="wrap_content" androi ...

  3. android 自定义指南针,如何在android中制作自定义指南针视图

    上述代码已被弃用.更新的代码可用 here XML布局activty_main android:layout_width="match_parent" android:layout ...

  4. 【Android RTMP】Android Camera 视频数据采集预览 ( 图像传感器方向设置 | Camera 使用流程 | 动态权限申请 )

    文章目录 安卓直播推流专栏博客总结 一. Camera 传感器方向简介 二. Camera 图像传感器横向显示数据 三. Camera 图像传感器纵向显示数据 四. 设置 Camera 预览数据方向 ...

  5. android编程:调节视频画面分辨率,Android编程实现屏幕自适应方向尺寸与分辨率的方法...

    本文实例讲述了Android编程实现屏幕自适应方向尺寸与分辨率的方法.分享给大家供大家参考,具体如下: Android 屏幕自适应方向尺寸与分辨率,包括屏幕界面布局.多分辨率支持.获取屏幕尺寸.屏幕横 ...

  6. android中,实现水平方向上三个按钮左对齐、居中对齐、右对齐效果

    解析:使用FrameLayout 可以很容易解决这个问题, 方法一:View 的上.下.左.右.居中对齐是界面中经常接触到的布局效果.单独某种对齐方式有很多种写法.但同一个方向的各种对齐布局,Fram ...

  7. 2020年Android开发的未来发展方向该如何走?

    作为一名资深的Android 开发者.从2017年下半年开始,就听到各种言论,例如"Android 开发凉凉"."移动端开发没出路了赶紧转行"."要被 ...

  8. android 折叠动画,Android:展开/折叠动画

    Android:展开/折叠动画 假设我有一个垂直linearLayout: [v1] [v2] 默认情况下,v1具有visibily = GONE. 我想用扩展动画展示v1并同时向下推v2. 我试过这 ...

  9. android tee,Trusty TEE  |  Android 开源项目  |  Android Open Source Project

    Trusty 是一种安全的操作系统 (OS),可为 Android 提供可信执行环境 (TEE).Trusty 操作系统与 Android 操作系统在同一处理器上运行,但 Trusty 通过硬件和软件 ...

最新文章

  1. php mysql 时间戳查询_mysql中时间查询函数(包括时间戳)
  2. MySQL主从库--同步异常
  3. 艾弗森、穆大叔遭“姚式幽默”调侃 全场爆笑
  4. java 查询日期行列转换_java中日期格式的转换和应用
  5. Javascript -- 二叉树(先序,中序,后序实现)
  6. linux nginx 清除缓存文件,linux nginx 内置缓存怎么去掉
  7. 深度学习基础(五)—— rectifier function and softplus
  8. python字符串操作方法_python字符串常用操作方法
  9. 计算机网络—数据链路层 网络层 传输层 应用层
  10. cmd跑绿色代码_cmd整人代码(cmd简单游戏代码)
  11. 数据挖掘-理解业务和数据(二)
  12. nv驱动版本linux,NV显卡Linux版驱动双响炮:一正式一测试
  13. 中标麒麟Linux系统串口,中标麒麟操作系统串口调试方法研究-嵌入式-电子工程世界网...
  14. 实时操作系统与分时操作系统原理详解——经典
  15. Vue学习笔记:获取文件唯一标识 md5值
  16. Scan Context回环检测解读和使用
  17. 【.net core】电商平台升级之微服务架构应用实战
  18. 抖音+今日头条副业项目,新玩法,后期收益月入过万
  19. 在uniapp中使用element-ui组件
  20. vue3 + element-plus 动态绑定icon图标

热门文章

  1. termux安装numpy,matplotlib,pandas
  2. web前端期末大作业 魅力广西我的家乡介绍网页制作(HTML+CSS)
  3. 好的博客(给自己翻译用)
  4. c语言自定义函写计算器,C语言实现计算器功能
  5. 想自学编程,先学什么好?给你三个建议,自己斟酌
  6. mfc , 超简单实现动态背景,
  7. 开发一个商城小程序要多少钱
  8. 以逗号为分隔符对字符串进行分隔
  9. Nexus私服 (一)
  10. 如何在线批量转换图片格式为jpg?