【问题标题】:Windows Phone 8.1 VibrationDevice doesn't stop vbrationWindows Phone 8.1 VibrationDevice 不会停止 vbration
【发布时间】:2023-03-25 23:18:01
【问题描述】:

我在 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 上重现

【问题讨论】:

    标签: c# windows-phone-8 windows-runtime windows-phone-8.1 windows-phone


    【解决方案1】:

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

    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();
        });
    }
    

    【讨论】:

    • 我也用过,但我收到了测试员的报告,他写了“有时它没有帮助,手机振动直到下一个电话”:(
    • 您是刚刚使用了Cancel 方法,还是使用˙Task.Run˙ 将调用封装在一个新的Task 中?我有很多很多用户每天都使用小持续时间的振动,对此没有任何抱怨。
    • 我不包裹在Task.Run,我用下面的Task.Delay(TimeSpan.FromMilliseconds(50)).ContinueWith(t => vibrationDevice.Cancel());
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多