Windows Phone: 如何管理抖动事件?
Windows Phone: how to manage shake events?
加速度计已激活(如果我设置了 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 ,根据 MSDN page.[=11=,Shaken 事件将不会触发并且不会引发任何错误]
否则我觉得这是个奇怪的错误,我找不到任何相关信息。
您可以调用 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();
});
}
}
}
如果您介意,可以使用名为 Shake Gestures 的帮助程序库来处理 windows phone 的摇动手势 8. 检查此 question
加速度计已激活(如果我设置了 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 ,根据 MSDN page.[=11=,Shaken 事件将不会触发并且不会引发任何错误]
否则我觉得这是个奇怪的错误,我找不到任何相关信息。
您可以调用 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();
});
}
}
}
如果您介意,可以使用名为 Shake Gestures 的帮助程序库来处理 windows phone 的摇动手势 8. 检查此 question