安卓开发 --实现计步功能

发布时间:2026/6/21 19:37:47
安卓开发 --实现计步功能 关键代码OverridepublicvoidonSensorChanged(SensorEventevent){// 不是系统累计总步数if(event.sensor.getType()!Sensor.TYPE_STEP_COUNTER)return;// 总步数longtotalSteps(long)event.values[0];// 检查是否跨天StringcurrentDategetTodayDate();StringtodayDateMMKVUtils.decodeRecentUseDate();// 今天之前为止的步数longrecentStepsMMKVUtils.decodeRecentSteps();// 计算今天的步数longtodayStepstotalSteps-recentSteps;// 防止负数设备重启等情况if(todaySteps0){// 同一天if(currentDate.equals(todayDate)){longstepsMMKVUtils.decodeSteps();todayStepstotalStepssteps;}else{// 跨天todayStepstotalSteps;MMKVUtils.encodeRecentUseDate(currentDate);}MMKVUtils.encodeRecentSteps(0);}else{// 跨天if(!currentDate.equals(todayDate)){longstepsMMKVUtils.decodeSteps();todayStepstotalSteps-recentSteps-steps;// 指针前移MMKVUtils.encodeRecentSteps(recentStepstodaySteps);MMKVUtils.encodeRecentUseDate(currentDate);}}// 保存累计步数MMKVUtils.encodeSteps(todaySteps);// 发送广播更新UIsendStepUpdateBroadcast();Log.d(TAG,String.format(总步数: %d, 今日步数: %d,totalSteps,todaySteps));}分析总共有四种情况距离上一次打开应用并第一次移动手机未重启的情况下 是同一天今天之内此刻之前打开过app 或 不是同一天也就是从昨天最后一次使用应用到此刻没有重启过距离上一次打开应用并第一次移动手机重启过的情况下 是同一天今天之内此刻之前打开过app并且重启过手机或 不是同一天今天之内此刻之前没打开过app且上一次打开app到现在重启过手机。图解分析