加速度计被激活(如果我将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");
}
}
}
答案 0 :(得分:2)
如果你介意的话,有一个名为ShakeGestures的助手librairy来处理Windows Phone 8的摇动手势。检查question
答案 1 :(得分:0)
如果您正在运行Windows Phone 8,则Shaken事件不会触发,也不会根据MSDN page引发任何错误。
否则对我来说这似乎是一个奇怪的错误,我无法找到有关它的任何信息。
答案 2 :(得分:0)
您可以调用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();
});
}
}
}