Android计步模块优化(今日步数)

本文介绍了在Android项目中优化计步模块的过程,包括从加速度传感器到计步传感器的升级,以及针对不同手机型号的优化策略,如解决计步器清零、后台保活等问题。作者分享了github上的计步模块库,供开发者参考和交流。
摘要由CSDN通过智能技术生成

简书地址:https://www.jianshu.com/p/cfc2a200e46d
github地址:https://github.com/jiahongfei/TodayStepCounter

最近在项目中研究计步模块,主要功能记录当天步数,类似微信运动,支付宝计步,咕咚今日步数。
开发之前的调研工作,搜遍baidu,google,github都没有找到我想要的demo和文章,大多数都是需要Service保活。
对于各大手机厂商为了提高电池的续航里程AlertManager、BOOT_COMPLETED、Service的START_STICKY基本上都是不起作用的,Service后台保活更是不可能。
下面是我实现的计步模块和大家一起学习
github地址
之前也有一篇文章写计步模块,这篇文章是对上面文章的优化,github代码已经更新到最新了。
Android计步模块(类似微信运动)

App计步模块优化的三个过程

第一个过程上线:
由于功能着急上线,项目最开始计步模块单独使用加速度传感器Sensor.TYPE_ACCELEROMETER进行计算步数,同时Service需要在后台存活才能计步,否则不能计步。

第二个过程计步器:
项目运行一段时间公司开始推广走路计步这个模块,所以开始重新开发计步模块,这次使用了Android4.4以上提供的计步传感器Sensor.TYPE_STEP_COUNTER来完成,这次重新开发整个计步模块有了质的飞跃,由于采用了计步传感器不在需要后台保活Service,同时计步传感器的功耗特别低,整个模块也更省电了。

第三个过程优化计步:
用户量变大了投诉也变多了,android各种各样的机型真是让人蛋疼,终于到了第三个阶段优化阶段。
目前最多的问题:
1.Android4.4以上的系统但是手机没有计步协处理器
2.部分手机步数出现暴增现象,有可能一天几十万步
3.部分手机出现一天清零好多次。
4.开机计步不能自启动,需要打开app(我已经监听BOOT_COMPLETED广播)
5.隔天分隔(0点分隔)不好用每天早上需要打开app(我已经设置AlertManager)

这篇文章就来介绍现在app的计步模块,已经解决上述问题1、2、3,至于4、5问题是系统问题正在寻找解决方案,大家也可以帮帮忙在评论中给我提示。
已经将计步模块单独封装成libModule上传github如果有开发者需要的或者想交流的可以很方便的使用下载,点击这里下载

计步方式背景知识

1.加速度传感器Sensor.TYPE_ACCELEROMETER计步方式:
这种方式是有开源的算法根据加速度传感器进行计算步数,点击这里查看原作者源码
优点:只要有加速度传感器的设备都可以使用,相对来说可以使用的设备较多。
缺点:步数的准确性取决于算法且算法比较难优化;需要后台保活Service否则不能计步;计步算法比较费电;部分手机锁屏不能计步;

2.计步传感器Sensor.TYPE_STEP_COUNTER计步方式:
官方解释翻译(本人英文不是很好根据理解翻译,如有错误请指出):
这个传感器是返回手机系统启动到当前时间的所有步数。手机系统重启传感器返回步数为0。还返回一个时间戳,表示最后一次步数的时间。这个计步传感器是个硬件,功耗非常低。如果你想记录步数,注册该传感器不要注销,他能自动在后台计步,在app唤醒的时候会返回计步总数。应用程序需要注册该传感器,否则不能返回步数。
优点:硬件计步准确性高;功耗小;只要注册不用后台Service自动计步;
缺点:Android4.4系统以上的部分手机;手机系统重启计步器清零;不能返回步数明细(步数对应时间),只是返回当前时间的总步数。

计步模块两种计步方式都采用:
判断是否支持Sensor.TYPE_STEP_CO

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值