示例#1
0
        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}");
                }
            }
        }
示例#2
0
 public Task <bool> GetAvailabilityAsync()
 {
     return(Task.Run(() =>
     {
         var device = PhoneDevice.GetDefault();
         return device != null;
     }));
 }
示例#3
0
 private static Task <VibrationDevice?> GetDefaultTaskAsync()
 {
     if (PhoneVibrationDevice.GetDefault() != null)
     {
         return(Task.FromResult <VibrationDevice?>(new VibrationDevice()));
     }
     return(Task.FromResult <VibrationDevice?>(null));
 }
示例#4
0
        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
        }
示例#5
0
 public Task VibrateAsync()
 {
     return(Task.Run(() =>
     {
         var device = PhoneDevice.GetDefault();
         if (device != null)
         {
             device.Vibrate(TimeSpan.FromMilliseconds(200));
         }
     }));
 }