Vibration
This article describes how you can use the .NET Multi-platform App UI (.NET MAUI) IVibration interface. This interface lets you start and stop the vibrate functionality for a desired amount of time.
The default implementation of the IVibration
interface is available through the Vibration.Default property. Both the IVibration
interface and Vibration
class are contained in the Microsoft.Maui.Devices
namespace.
Get started
To access the Vibration functionality, the following platform specific setup is required.
The VIBRATE
permission is required, and must be configured in the Android project. This permission can be added in the following ways:
Add the assembly-based permission:
Open the Platforms/Android/MainApplication.cs file and add the following assembly attributes after
using
directives:[assembly: UsesPermission(Android.Manifest.Permission.Vibrate)]
- or -
Update the Android Manifest:
Open the Platforms/Android/AndroidManifest.xml file and add the following in the
manifest
node:<uses-permission android:name="android.permission.VIBRATE" />
- or -
Update the Android Manifest in the manifest editor:
In Visual Studio double-click on the Platforms/Android/AndroidManifest.xml file to open the Android manifest editor. Then, under Required permissions check the VIBRATE permission. This will automatically update the AndroidManifest.xml file.
Vibrate the device
The vibration functionality can be requested for a set amount of time or the default of 500 milliseconds. The following code example randomly vibrates the device between one and seven seconds using the Vibrate(TimeSpan):
private void VibrateStartButton_Clicked(object sender, EventArgs e)
{
int secondsToVibrate = Random.Shared.Next(1, 7);
TimeSpan vibrationLength = TimeSpan.FromSeconds(secondsToVibrate);
Vibration.Default.Vibrate(vibrationLength);
}
private void VibrateStopButton_Clicked(object sender, EventArgs e) =>
Vibration.Default.Cancel();
Platform differences
This section describes the platform-specific differences with the vibration API.
No platform differences.