TL;博士:
非常感谢有关 Android 的任何额外信息
抽象类 Vibrator 与 performHapticFeedback
最好避免使用Vibrator class
和优先级performHapticFeedback
来规避必须向用户询问权限,并且仅依赖于他们的系统偏好。
设想:
我正在与 Xamarin 合作,尝试为 Android 和 iOS 实现触觉反馈。
现在,虽然 iOS 文档有一个简短的解释,但我已经实现如下:
void Platform.Vibrate(HapticsIntensity HapticsIntensity)
{
UIKit.UIImpactFeedbackGenerator ImpactFeedbackGenerator;
switch (HapticsIntensity)
{
case HapticsIntensity.Light:
ImpactFeedbackGenerator = new UIKit.UIImpactFeedbackGenerator(UIKit.UIImpactFeedbackStyle.Light);
break;
case HapticsIntensity.Medium:
ImpactFeedbackGenerator = new UIKit.UIImpactFeedbackGenerator(UIKit.UIImpactFeedbackStyle.Medium);
break;
case HapticsIntensity.Heavy:
ImpactFeedbackGenerator = new UIKit.UIImpactFeedbackGenerator(UIKit.UIImpactFeedbackStyle.Heavy);
break;
default:
ImpactFeedbackGenerator = null;
break;
};
if (ImpactFeedbackGenerator != null)
{
ImpactFeedbackGenerator.Prepare();
ImpactFeedbackGenerator.ImpactOccurred();
}
}
Haptic Feedback的 Android 文档指出方法performHapticFeedback需要一个HapticFeedbackConstant作为参数。
public boolean performHapticFeedback (int feedbackConstant)
可用的feedbackConstant在这里,但它们之间似乎没有区别。
来电:
长按
Engine.AndroidActivity.Window.DecorView.PerformHapticFeedback(Android.Views.FeedbackConstants.LongPress);
和VirtualKey的效果一样
Engine.AndroidActivity.Window.DecorView.PerformHapticFeedback(Android.Views.FeedbackConstants.VirtualKey);
或 键盘敲击
Engine.AndroidActivity.Window.DecorView.PerformHapticFeedback(Android.Views.FeedbackConstants.KeyboardTap);
此外,一些FeedbackConstants甚至不会产生触觉反馈。
有谁知道我在哪里可以找到有关此问题的更多文档?
我问的原因是我正在使用发明在 Xamarin 上实现一个抽象层,我的意图是让我的方法调用如下:
Vibrate(HapticsIntensity.Light);
Vibrate(HapticsIntensity.Medium);
Vibrate(HapticsIntensity.Heavy);
这在今天有效,但在 iOS 上,我在哪里获得轻、中和重振动的触觉反馈,在 Android 上,我无法区分它们。
现在,我知道 Android 有一个Vibrate
类(参见此处),它允许进行精细控制;但是,要使用它,我需要添加到我的清单或为我的应用程序请求特定权限(android.permission.VIBRATE
),这不是最佳选择。
此外,如果我将android.permission.VIBRATE
权限添加到我的清单,看起来(如果设备在其设置中启用了触觉反馈),我什至不需要将Vibrate()
方法调用添加到我的按钮` onClick
; 他们已经提供了触觉反馈(BZZZTT!!1!)。