我確信邏輯有問題,但我無法弄清楚是什么。我試圖通過使用加速度計(手機移動)來計算用戶步行的時間,如果 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);
}
}
}
uj5u.com熱心網友回復:
利用 Stopwatch.Restart()
停止時間間隔測量,將經過時間重置為零,然后開始測量經過時間。
代替 Stopwatch.Start()
開始或恢復,測量間隔的經過時間。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/422320.html
標籤:
