# 运动计步

旧版计步数据获取比较复杂,且无法获取 目标步数、公里数、卡路里 等,故增加 通过「小米健康」获取数据的方式 (仅支持 miui12 使用)

<ExternalCommands>
	<Trigger action="resume">
		<!-- 开屏刷新 运动记录数据 -->
		<BinderCommand name="MiSteps" command="refresh" />
	</Trigger>
</ExternalCommands>

<VariableBinders>
	<!-- 注意:不可卸载 小米健康App -->
	<ContentProviderBinder name="MiSteps" uri="content://com.mi.health.provider.main/activity/steps/brief" column="steps,goal,distance,energy,strength_duration,summary" countName="hasSteps" >
		<Variable name="MiSteps_steps" type="string" column="steps"/>
		<Variable name="MiSteps_goal" type="string" column="goal"/>
		<Variable name="MiSteps_distance" type="string" column="distance"/>
		<Variable name="MiSteps_energy" type="string" column="energy"/>
		<Variable name="MiSteps_strength_duration" type="string" column="strength_duration"/>
		<Variable name="MiSteps_summary" type="string" column="summary"/>
	</ContentProviderBinder>
</VariableBinders>

<Text x="100" y="300" alignV="center" color="#ffffffff" size="42" textExp="'今日步数:' +@MiSteps_steps+ '步'"/>

属性 释义 单位 类型
steps 步数 步 steps string
goal 目标步数 步 steps string
distance 距离 公里 km string
energy 消耗卡路里 千卡 kcal string
strength_duration 运动中高强度时长 分钟 second string
summary 运动是否达标;
0 暂无
1 尚未达标
2 运动不足
3 运动达标
string

获取数据时异常处理,参考下面示例代码:

  • 未安装「小米健康」app 时,点击跳转至应用商店下载页面
  • 已安装 但从未打开提示用户获取数据,并且点击后跳转 健康运动 页面
<!-- 判断是否有 小米健康应用 -->
<Image name="app_health" x="0" y="0" w="168" h="168" srcType="ApplicationIcon" srcExp="'com.mi.health,com.mi.health.home.HomeActivity'" alpha="0"/>
<Button x="540" y="1000" w="300" h="140" align="center" alignV="center" alignChildren="true">
	<Normal>
		<Rectangle w="300" h="140" fillColor="#33ffffff" cornerRadius="70"/>
	</Normal>
	<Pressed>
		<Rectangle w="300" h="140" fillColor="#66ffffff" cornerRadius="70"/>
	</Pressed>
	<Text x="150" y="70" align="center" alignV="center" color="#ffffffff" size="42" textExp="ifelse(#app_health.bmp_width,'打开','安装')"/>
	<!-- 提示 -->
	<Text x="150" y="-60" align="center" alignV="center" color="#ffffffff" size="39" textExp="ifelse(!#app_health.bmp_width,'无法获取数据,请安装小米健康',strIsEmpty(@MiSteps_goal),'点击获取数据','查看运动详情')"/>
	<Triggers>
		<Trigger action="up">
			<ExternCommand command="unlock"/>
			<!-- 未安装 跳转到应用商店 -->
			<IntentCommand action="android.intent.action.VIEW" uri="market://details?id=com.mi.health&amp;ref=mithemelocksreen" flags="268435456" condition="!#app_health.bmp_width" />
			<!-- 已安装 打开运动页面 -->
			<IntentCommand action="android.intent.action.VIEW" uri="com.mi.health://localhost/d?action=steps&amp;origin=mithemelocksreen" condition="#app_health.bmp_width"/>
		</Trigger>
	</Triggers>
</Button>

注意:上面的新版计步只有MIUI 12支持。
适配MIUI 11时注意设计与制作兼容,在V11的主题版本上可使用下面的旧版代码。

# 旧版计步

# 数据来源 小米计步

<VariableBinders>
  <ContentProviderBinder name="MiStep" uri="content://com.miui.providers.steps/item" columns="_id,_begin_time,_end_time,_mode,_steps" countName="hassteps" whereFormat="_begin_time>='%d'" whereParas="int((#time_sys-#hour24*3600000-#minute*60000-#second*1000)/1000)*1000">
    <Variable name="Mi_step" type="string[]" column="_steps"/>
    <Variable name="Mi_begin_time" type="string[]" column="_begin_time"/>
    <Variable name="Mi_end_time" type="string[]" column="_end_time"/>
    <Trigger>
      <!-- 初始化今天的总步数 -->
      <VariableCommand name="step_today" expression="0" />
      <!-- 计算今天的总步数 -->
      <LoopCommand count="#hassteps" indexName="__s">
        <VariableCommand name="step_today" expression="#step_today+int(@Mi_step[#__s])" />
      </LoopCommand>
    </Trigger>
  </ContentProviderBinder>
</VariableBinders>
<Text x="100" y="100" color="#ffffff" size="40" textExp="#step_today"/>
参数名称 含义 类型
_id 记录在 sqlite 的 id,从 1 开始计 string[]
_begin_time 计步打点开始时间(计步每次打点都有个开始时间和结束时间,隔一段时间存储到手机一次) string[]
_end_time 计步打点结束时间(计步每次打点都有个开始时间和结束时间,隔一段时间存储到手机一次) string[]
_steps 每次打点的步数 string[]
_mode 计步模式: 0:不支持模式, 1:静止, 2:走路, 3:跑步, 11:骑车, 12:交通工具 string[]

最近更新时间: 12/30/2020, 8:00:48 AM