Windows Phone:如何管理抖动事件?
Posted
技术标签:
【中文标题】Windows Phone:如何管理抖动事件?【英文标题】:Windows Phone: how to manage shake events? 【发布时间】: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");
【问题讨论】:
【参考方案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 发送消息 问题是处理程序永远不会被调用以上是关于Windows Phone:如何管理抖动事件?的主要内容,如果未能解决你的问题,请参考以下文章
windows phone 8 长列表选择器。如何在长列表选择器中添加新项目。目前我正在使用 ItemRealized 事件
Windows Phone 应用程序仅适用于 Windows Phone 7?
Windows Phone 8 用户控件的 VisibleChanged 事件在哪里?
如何从列表框绑定 Windows Phone 7 中选择一个项目
从 Windows Phone 7 中的 GeoCoordinateWatcher.StatusChanged 事件返回位置数据