如何在 xamarin 中使用加速度计移动椭圆

how to move ellipse using an Accelerometer in xamarin

我想在 phone

上使用加速度计移动非常基本的椭圆或图像

下面我已经设置了 xamarin Essentials Acceleromter,但椭圆没有移动并且 Z 坐标丢失。有人知道我做错了什么吗?

查看

<StackLayout VerticalOptions="CenterAndExpand" HorizontalOptions="CenterAndExpand">
    <Ellipse x:Name="ballEllipse" Fill="Green" WidthRequest="50" HeightRequest="50"/>
</StackLayout>

视图后端

public partial class AccelerometerPage2 : ContentPage
{
    public AccelerometerPage2()
    {
        InitializeComponent();

        if (Accelerometer.IsMonitoring)
            return;

        // Register and Staart Accelermeter
        Accelerometer.ReadingChanged += Accelerometer_ReadingChanged;
        Accelerometer.Start(SensorSpeed.UI);
    }

    void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
    {
        await ballEllipse.TranslateTo(e.Reading.Acceleration.X, 
            e.Reading.Acceleration.Y, 1000);
    }
}

其实应该可以,因为Acceleration.XAcceleration.Y的值太小了,椭圆看起来不像在动,可以尝试把值扩大到看到它在移动。另外,这里你没有捕获Z坐标,所以你可以尝试打印它的值。

async void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
    {
        var data = e.Reading;
        Console.WriteLine($"Reading: X: {data.Acceleration.X}, Y: {data.Acceleration.Y}, Z: {data.Acceleration.Z}");
        await ballEllipse.TranslateTo(e.Reading.Acceleration.X*100,
            e.Reading.Acceleration.Y*100, 1000);
    }