JS技术

计步器算法简述和模块使用 - Mystra - 博客频道 - CSDN.NET Mystra 知及之,仁不能守之,虽得之

字号+ 作者:H5之家 来源:H5之家 2015-12-13 13:02 我要评论( )

苹果风愈刮愈烈,不仅iOS随着iPhone、iPad的流行而广泛获得认可,Mac OS X凭借其华丽简洁的用户界面和iOS开发环境,其占有率也突飞猛进,特别是深受程序员们的喜

计步器作为算法功能模块, 本应该和业务模块分离, 解耦合. 这样也可以更加专注于算法的升级. 我来简述一下计步器算法的实现原理, 给大家一些启发.

演示

1. 算法

对于所有计步器而言, 早期必然是使用加速度传感器(Accelerometer Sensor)测量步数, 随后谷歌推出计步传感器(Step Counter Sensor), 由硬件或系统计算步数的变化, 使得算法简化. 有些手机, 未提供计步传感器; 有些手机, 在待机过程中关闭计步传感器.

简单介绍一下实现算法.
1. 加速度传感器(Accelerometer Sensor):
算法根据加速度传感器空间位置(XYZ轴)的变化, 绘制空间曲线, 根据两次波峰波谷之间的时间间隔, 判断步行或其他状态. 在短时间内出现连续波峰, 即为步行; 波峰出现的时间间隔较长, 则认为停止行走. 同时, 屏蔽轻微与初始扰动, 提升准确性; 通过调整参数, 适配不同手机的传感器差异, 提升鲁棒性.
2. 计步传感器(Step Counter Sensor):
算法读取计步传感器的数值, 与本地缓存数值匹配, 判断步数的增加与否. 在屏幕关闭时, 启动BatchMode模式, 配合协处理器, 延迟获取数值, 节约电量. 当计步传感器停止时(有些手机在屏幕关闭时会停止部分传感器), 自适应切换加速度传感器, 启动时, 再次切换计步传感器.
3. 自适应性(Self-Adaption):
根据系统参数, 算法优先选择计步传感器, 当计步传感器无法使用时, 选择加速度传感器.

2. 使用方式

本算法已经生成SDK包, 可以独立使用.
首先初始化计步器管理器(PedometerManager), 传入上下文(Context)和步数回调, 当步数增加时, 会自动调用回调. 应用根据UI界面样式, 使用步数. 其次启动步数服务(PedometerService), 服务根据系统状态变化自启动, 确保实时监控步数.

/** * 使用方式, 传入Context和步数回调, 当步数增加时会自动调用回调, 添加StepRate参数, 实现锁屏计步. */ PedometerManager.getInstance().init(MainActivity.this.getApplicationContext(), new StepCallback() { () { // 步频(StepRate)参数, 亮屏默认是1, 锁屏根自适应调整 mStep += PedometerManager.getStepRate(); mTvStep.setText(String.valueOf(mStep + "步")); Log.e(TAG, "Step: " + mStep); } }); /** * 初始时启动服务, 服务会自动保持连接, 并处理系统异常. */ startService(new Intent(this, PedometerService.class));

在项目最外层的build.gradle, 添加Maven库的地址, 传入账号和密码.

allprojects { repositories { mavenCentral() maven { url "http://maven.chunyu.mobi/content/groups/public/" credentials { username maven_user password maven_password } } } repositories { jcenter() } }

在项目中添加依赖, 即[GROUP_ID]:[ARTIFACT_ID]:[VERSION].

compile 'me.chunyu.android:pedometer:0.3.0' 3. 版本迭代 0.1.0:

初始化项目, 提供简单的计步功能.

0.2.0:
  • 当锁屏时, 加速度传感器频率降低, 导致无法计步. 修改算法实现锁屏低频计步.
  • 使用时, 添加步频(StepRate)参数, 亮屏默认是1, 锁屏根据传感器频率自适应调整.
  • 0.3.0:

    添加上传应用激活信息功能.

    外部合作:
    本算法目前仅在公司内部使用,
    如需合作请联系春雨医生官网的推广合作(xiaoyao@chunyu.me).

    OK, That’s all.

  • 上一篇开发首屏广告(Android)简述
  • 下一篇上传Apk至测试服务器
  • 顶 1 踩 0

    我的同类文章

    猜你在找

    查看评论

    * 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

    个人资料


    u012515223

  • 访问:868980次
  • 积分:17344
  • 等级:

    积分:17344

  • 排名:第267名
  • 自我简介

    本人代码娴熟, 涉猎广泛.

    文章搜索

    文章分类

  • Android开发(4)
  • RN开发(7)
  • Work随笔(5)
  • Android(165)
  • IOS(33)
  • Python(42)
  • Java(35)
  • C++(102)
  • Algorithm(92)
  • Design Pattern(27)
  • 文章存档

    阅读排行

  • Microsoft Visual Studio 2012 (VS2012) 更改编码格式 "UTF-8"(16794)
  • Android - Android Studio修改字体(font)大小(size)(11827)
  • 模式识别 - 局部二值模式(Local Binary Patterns) 简介 及 代码(9582)
  • Python - 字符串(string) 详解 及 代码(9291)
  • C++ - "emplace_back" 和 "push_back" 的区别(8681)
  • OpenCV - cv::Mat 和 IplImage 的转换(8346)
  • Android - Android Studio 安装 及 设置 [最新](7802)
  • Android - Android Studio 自动(auto)添加import 语句(7367)
  • Eclipse - "Eclipse CDT" (Eclipse C++) 安装 与 配置 (支持C++11)(6519)
  • 笔试 - 高德软件有限公司python试题 及 答案(5912)
  •  

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • 冒泡算法的三种JavaScript表示_javascript教程教程

      冒泡算法的三种JavaScript表示_javascript教程教程

      2015-10-07 10:14

    • Javascript代码压缩、加密算法的破解分析及工具实现

      Javascript代码压缩、加密算法的破解分析及工具实现

      2014-11-17 20:00

    • 冒泡算法的三种JavaScript表示

      冒泡算法的三种JavaScript表示

      2014-11-17 20:00

    • Mansory算法分析

      Mansory算法分析

      2014-11-16 22:20

    网友点评
    v