我相信逻辑上有问题,但我就是搞不清楚是什么。我试图通过使用加速度计(手机移动)来计算用户行走的时间,如果3秒内没有移动,那么时间应该停止,如果用户再次开始移动,那么时间应该重新开始,并且它应该增加更早实现的时间,但是在没有移动之后,时间不会停止。
public partial class Walking : ContentPage
{
private double lastX;
private double lastHandledX;
private TimeSpan timeForRewards;
Stopwatch stopWatch = new Stopwatch();
public Walking()
{
InitializeComponent();
Accelerometer.ReadingChanged += Accelerometer_ReadingChanged;
}
private void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
{
lastX = e.Reading.Acceleration.X;
acc.Text = $"X: {e.Reading.Acceleration.X}";
}
private bool OnTimerTriggered()
{
if (lastX!=lastHandledX)
{
stopWatch.Start();
walks.Text = "Yay I am walking";
}
else
{
stopWatch.Stop();
timeForRewards += stopWatch.Elapsed;
walks.Text = $"Oh, we've stopped walking! time: {timeForRewards}";
}
lastHandledX = lastX;
return true;
}
void StartWalking_Clicked(object sender, EventArgs e)
{
if (Accelerometer.IsMonitoring)
{
Accelerometer.Stop();
}
else Accelerometer.Start(SensorSpeed.UI);
Accelerometer.ReadingChanged += Accelerometer_ReadingChanged;
Device.StartTimer(new TimeSpan(0, 0, 2), OnTimerTriggered);
}
}}
发布于 2022-01-27 23:20:27
https://stackoverflow.com/questions/70886921
复制相似问题