public void SendHapticFeedback(SimpleHapticsControllerFeedback feedback) { if (feedback is null) { throw new ArgumentNullException(nameof(feedback)); } if (ContextHelper.Current == null) { throw new InvalidOperationException($"Context must be initialized before {nameof(SendHapticFeedback)} is called."); } try { var activity = (Activity)ContextHelper.Current; var androidFeedback = FeedbackToAndroidFeedback(feedback); bool hapticFeedbackEnabled = Settings.System.GetInt(activity.ContentResolver, Settings.System.HapticFeedbackEnabled, 0) != 0; if (hapticFeedbackEnabled) { var executed = activity.Window?.DecorView.PerformHapticFeedback(androidFeedback) ?? false; if (!executed && PhoneVibrationDevice.GetDefault() is { } vibrationDevice) { // Fall back to VibrationDevice vibrationDevice.Vibrate(feedback.Duration); } } } catch (Exception ex) { if (this.Log().IsEnabled(LogLevel.Error)) { this.Log().LogError($"Could not send haptic feedback: {ex}"); } } }
public Task <bool> GetAvailabilityAsync() { return(Task.Run(() => { var device = PhoneDevice.GetDefault(); return device != null; })); }
private static Task <VibrationDevice?> GetDefaultTaskAsync() { if (PhoneVibrationDevice.GetDefault() != null) { return(Task.FromResult <VibrationDevice?>(new VibrationDevice())); } return(Task.FromResult <VibrationDevice?>(null)); }
private VibrationDevice() { #if __ANDROID__ _vibrator = (Vibrator)Plugin.CurrentActivity.CrossCurrentActivity.Current.Activity.GetSystemService(Context.VibratorService); #elif TIZEN _vibrator = Tizen.System.Vibrator.Vibrators[0]; #elif WINDOWS_UWP || WINDOWS_PHONE_APP || WINDOWS_PHONE _device = Windows.Phone.Devices.Notification.VibrationDevice.GetDefault(); #endif }
public Task VibrateAsync() { return(Task.Run(() => { var device = PhoneDevice.GetDefault(); if (device != null) { device.Vibrate(TimeSpan.FromMilliseconds(200)); } })); }