/// <summary> /// Requests a vibration on Android for the specified pattern, amplitude and optional repeat /// </summary> /// <param name="pattern">Pattern.</param> /// <param name="amplitudes">Amplitudes.</param> /// <param name="repeat">Repeat : -1 : no repeat, 0 : infinite, 1 : repeat once, 2 : repeat twice, etc</param> public static void AndroidVibrate(long[] pattern, int[] amplitudes, int repeat, bool threaded = false) { if (!MMNVPlatform.Android()) { return; } if ((pattern == null) || (amplitudes == null)) { return; } if ((pattern.Length == 0) || (amplitudes.Length == 0)) { return; } if ((AndroidSDKVersion() < 26)) { AndroidVibrator.Call("vibrate", pattern, repeat); } else { if (threaded) { if (_androidVibrateThread == null) { _androidVibrateThread = new MMNVAltThread <MMNVAndroidVibrateThreadData>(); _androidVibrateThreadData = new MMNVAndroidVibrateThreadData(); } _androidVibrateThreadData.Pattern = pattern; _androidVibrateThreadData.Amplitudes = amplitudes; _androidVibrateThreadData.Repeat = repeat; _androidVibrateThread.Run(AndroidVibrateThread, _androidVibrateThreadData); } else { AndroidVibrateNoThread(pattern, amplitudes, repeat); } } }
/// <summary> /// A method to call once you're done with haptics on Android, usually OnDisable, to avoid memory leaks /// </summary> public static void ClearThreads() { _androidVibrateThread = null; _androidVibrateThread?.CloseThread(); }