Windows Phone 8.1 VibrationDevice不能停止振动

本文关键字:不能 VibrationDevice Phone Windows | 更新日期: 2023-09-27 18:18:35

我在Windows Phone 8.1 XAML应用程序中发现了以下振动设备问题。

的代码
var vibrationDevice = VibrationDevice.GetDefault();
vibrationDevice.Vibrate(TimeSpan.FromMilliseconds(50));

第一次被调用时,振动开始并且直到下一次调用才停止。下面的通话正常-电话震动一小段时间然后停止。

它在Lumia 920上以100%的通话率再现,在Lumia 930上以1%的通话率再现。可在WP 8.0和WP 8.1上复制

Windows Phone 8.1 VibrationDevice不能停止振动

这是框架中的一个bug。我使用的是在与振动持续时间相同的延迟后在任务中取消它:

private const int DefaultVibrationDuration = 20;
if (this.EnableVibration)
{
    VibrationDevice.GetDefault().Vibrate(TimeSpan.FromMilliseconds(DefaultVibrationDuration));
    // Run task to cancel vibration (this is an error in phone framework where the vibration does
    // not stop after running the first time)
    Task.Run(async () =>
    {
        await Task.Delay(DefaultVibrationDuration);
        VibrationDevice.GetDefault().Cancel();
    });
}