我正在使用Expo计步器:(https://docs.expo.io/versions/latest/sdk/pedometer/), 并有一个有效的计步器,可以在我的应用的一页上工作。
在我打开屏幕并握住手机并使用状态存储currentSteps的同时,它会按预期行走。但是,当我关闭手机屏幕/锁定手机时,走路时步伐不会增加-仅当屏幕打开时它才起作用。
我一直在阅读有关世博任务管理器的信息:https://docs.expo.io/versions/latest/sdk/task-manager/ 但是我真的不知道该怎么做...
export default class Steps extends Component {
constructor(props) {
super(props)
this.state = {
goalSteps: 10000,
isPedometerAvailable: "checking",
pastStepCount: 0,
currentStepCount: 0
}
}
componentDidMount() {
this._subscribe();
}
componentWillUnmount() {
this._unsubscribe();
}
_subscribe = () => {
this._subscription = Pedometer.watchStepCount(result => {
this.setState({
currentStepCount: result.steps
}, () => {
console.log(this.state.currentStepCount)
});
});
Pedometer.isAvailableAsync().then(
result => {
this.setState({
isPedometerAvailable: String(result)
});
},
error => {
this.setState({
isPedometerAvailable: "Could not get isPedometerAvailable: " + error
});
}
);
const end = new Date();
const start = new Date();
start.setDate(end.getDate() - 1);
Pedometer.getStepCountAsync(start, end).then(
result => {
this.setState({ pastStepCount: result.steps });
},
error => {
this.setState({
pastStepCount: "Could not get stepCount: " + error
});
}
);
};
_unsubscribe = () => {
this._subscription && this._subscription.remove();
this._subscription = null;
};
//...
render() {
return(
<View>
<Text>{this.state.currentStepCount}</Text>
</View>
)
我希望能够计算步数并在用户行走时将其存储,因此当他们打开应用程序以检查其步数时,会向他们显示他们一天中已完成的步数。并非如此;它只是将其设置回0,因为这是在“ currentStepCount:0”中设置的初始状态。
我希望在实现此后台功能方面有所帮助。