【问题标题】:Windows Phone: how to manage shake events?Windows Phone:如何管理抖动事件?
【发布时间】:2015-06-17 10:14:54
【问题描述】:

加速度计已激活(如果我设置 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");
    }
 }
}

【问题讨论】:

    标签: event-handling windows-phone accelerometer win-universal-app shake


    【解决方案1】:

    如果您介意,有一个名为 ShakeGestures 的帮助程序库来处理 windows phone 8 的摇动手势。请查看question

    【讨论】:

      【解决方案2】:

      如果您运行的是 Windows Phone 8,Shaken 事件不会触发,也不会根据MSDN page 引发任何错误。

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

      【讨论】:

      • 设备显示 Windows Phone 8.1 更新
      【解决方案3】:

      您可以调用 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();
                  });
              }
          }
      }
      

      【讨论】:

      • 你把“等待”部分放在哪里?但是我认为您打算使用 readingChanged 事件,但我想要框架提供的 Shaken 事件
      • 如果我想进行 UI 更新,我会使用调度程序,但我使用的是 Debug 类向 Visual Studio 发送消息
      • 问题是处理程序永远不会被调用
      猜你喜欢
      • 1970-01-01
      • 2015-05-23
      • 1970-01-01
      • 2020-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-12
      相关资源
      最近更新 更多