我最近迷上了捣鼓这个叫《生命的竞赛安卓》的小程序,也不是什么高大上的东西,就是想自己实现一个能准确记录步数的后台服务,再搞个简单地图界面,能看到自己的步数进度条跟一个“幽灵”跑者比赛,看能不能跑赢昨天的自己。

动手,从步数传感器开始

刚开始动手的时候,我以为很简单,直接调用Android系统自带的那个`*_STEP_COUNTER`,一分钟就能搞定。结果?真是天真得可以。一跑起来,我的个天,那数据跳得比猴子还欢,丢步、误判是家常便饭。手机一锁屏,数据立马断崖式下跌,完全没法用。我赶紧停下了这种粗暴的做法。

我心想这不行,竞赛,数据不准还比个屁?

  • 我第一步是完全抛弃了那个自带的计数器。
  • 第二步是转向了最原始的加速度传感器,就是那个`TYPE_ACCELEROMETER`。

这下麻烦来了。拿到原始数据,那就是一堆乱七八糟的数字,得自己去判断什么是“一步”。我硬着头皮,开始在网上扒拉各种算法。什么峰值检测、什么低通滤波,我这个半吊子看得是云里雾里。整整三天,我的电脑屏幕上全是密密麻麻的曲线图,我调整那个阈值,测试各种走路姿势,终于算是摸索出了一套还算靠谱的判断逻辑。但光是这个步数准了,程序一后台,手机立马给我杀掉,前功尽弃。

为什么我非得自己搞这个破玩意儿?

小编温馨提醒:本站只提供游戏介绍,下载游戏请前往89游戏主站,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区

说来话长。我这么较真地去扣一个步数精度,是源于几年前那次惨痛的教训。那时候我因为一次意外把膝盖给弄伤了,医生明确要求我每天必须完成固定的步数,不能多也不能少,因为那是康复训练的一部分,多走了怕二次损伤,少走了恢复就慢。每天我都要战战兢兢地看数据。

我的旧手机当时自带的健康应用,天天给我喂假数据。有时候明明只走了几百步,它告诉我三千了;有时候我溜达了一下午,它才给我记了一千多。有一次我就是信了它的邪,多走了一公里,结果疼了一个星期。我那会儿就火了,这哪是帮人健康,这是害人。从那时起,我就萌生了自己做一个绝对可靠的步数记录器的念头,这个所谓的“生命的竞赛”对我来说,不只是个程序,它就是我当时康复的真实写照,真的是在跟时间、跟疼痛赛跑。

与安卓系统斗智斗勇

这个实践记录最磨人的是跟安卓系统后台的较量。我好不容易把峰值算法调好了,实现了步数稳定记录。但安卓系统对后台运行的服务是零容忍,一言不合就给干掉!为了让程序在熄屏状态下也能持续工作,我不得不研究了各种“保活”机制。

  • 尝试了用`START_STICKY`让系统重启服务。
  • 尝试了使用`Wakelock`,结果发现耗电太恐怖,放弃了。
  • 定下来的办法是搞了个前台服务,就是屏幕上方常驻一个小小的通知栏图标。别看它丑,但这是告诉系统:“老子正在干活,你别杀我!”。

为了让这个前台服务没那么招人烦,我简化了那个通知的内容,只显示一个当前的步数。虽然牺牲了一点点美观,但换来了后台记录的稳定性,这是我最大的胜利。我的这个“竞赛”应用,哪怕手机在口袋里待一整天,步数记录也几乎不会丢失。我现在每天都用它来跟昨天的自己比,那感觉太踏实了。虽然界面还是粗糙得像个半成品,但至少核心功能被我彻底搞定了。

免责声明:喜欢请购买正版授权并合法使用,此软件只适用于测试试用版本。来源于转载自各大媒体和网络。 此仅供爱好者测试及研究之用,版权归发行公司所有。任何组织或个人不得传播或用于任何商业用途,否则一切后果由该组织及个人承担!我方将不承担任何法律及连带责任。 对使用本测试版本后产生的任何不良影响,我方不承担任何法律及连带责任。 请自觉于下载后24小时内删除。如果喜欢本游戏,请购买正版授权并合法使用。 本站内容侵犯了原著者的合法权益,可联系我们进行处理。