Event handling Windows Phone:如何管理震动事件?

Event handling Windows Phone:如何管理震动事件?,event-handling,windows-phone,accelerometer,win-universal-app,shake,Event Handling,Windows Phone,Accelerometer,Win Universal App,Shake,加速计被激活(如果我设置了ReadingChanged,它就会工作)。 为什么不处理震动事件 namespace AppExample { public sealed partial class MainPage : Page { private Accelerometer accel; public MainPage() { this.InitializeComponent(); this.NavigationCacheMode =

加速计被激活(如果我设置了ReadingChanged,它就会工作)。 为什么不处理震动事件

namespace AppExample
{
 public sealed partial class MainPage : Page
 {
    private Accelerometer accel;

    public MainPage()
    {
        this.InitializeComponent();
        this.NavigationCacheMode = NavigationCacheMode.Required;

        accel = Accelerometer.GetDefault();
        //accel.ReadingChanged += accel_ReadingChanged;
        accel.Shaken += accel_Shaken;
    }

    void accel_Shaken(Accelerometer sender, AccelerometerShakenEventArgs args)
    {
        Debug.WriteLine("shaken");
    }
 }
}

如果您正在运行Windows Phone 8,则不会触发Shaken事件,并且不会根据引发任何错误


否则,它对我来说似乎是一个奇怪的bug,我找不到任何关于它的信息。

您可以调用Dispatcher,以便在主线程上显示结果

namespace AppExample
{
    public sealed partial class MainPage : Page
    {
        Accelerometer accel;

        public MainPage()
        {
            this.InitializeComponent();

            accel = Accelerometer.GetDefault();
            accel.ReadingChanged += accel_ReadingChanged;
            accel.Shaken += accel_Shaken;
        }

        await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
        {
            LabelTest.Text = "Shaken!! " +  args.Reading.AccelerationX.ToString();
        });

        async private void accel_Shaken(object sender, AccelerometerShakenEventArgs e)
        {
            await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                _shakeCount++;
                ScenarioOutputText.Text = _shakeCount.ToString();
            });
        }
    }
}

如果您不介意的话,有一个名为ShakePictures的助手库,用于处理windows phone 8的抖动手势。检查此项

设备显示Windows Phone 8.1更新“等待”部分放在哪里?然而,我认为您打算使用readingChanged事件,但我想要的是震动事件,由Framework提供。如果我想进行UI更新,我会使用dispatcher,但我使用Debug类向Visual Studio发送消息。问题是从未调用处理程序