# Android mobile scripting

> Contains information about scripting for Android.

For cross-platform Projects, use the `UNITY_ANDROID` define directive to conditionally compile Android-specific C# code. For more information, refer to [Platform dependent compilation](/engine/6000.6/manual/scripting/compilation-and-code-reload/script-compilation/conditional-compilation/platform-dependent-compilation.md).

## Access device-specific features and properties

Applications can access most features of an Android device through the [Input](/engine/6000.6/script-reference/unityengine/input.md) and [Handheld](/engine/6000.6/script-reference/unityengine/handheld.md) classes. For more information, see:

* [Mobile device input](/engine/6000.6/manual/input/legacy/mobile.md)
* [Mobile keyboard](/engine/6000.6/manual/input/mobile-keyboard.md)

### Vibration support

To trigger a vibration, call [Handheld.Vibrate](/engine/6000.6/script-reference/unityengine/handheld/vibrate.md). Devices without vibration hardware ignore this call.

### Activity indicator

Mobile operating systems have built-in activity indicators your application can use during slow operations. For more information, refer to [Handheld.StartActivityIndicator](/engine/6000.6/script-reference/unityengine/handheld/startactivityindicator.md).

To access device-specific properties, use these APIs:

| **Script**                                                                                                            | **Device property**                                                                                                                                                                                           |
| --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [SystemInfo.deviceUniqueIdentifier](/engine/6000.6/script-reference/unityengine/systeminfo/deviceuniqueidentifier.md) | Always returns the md5 of `ANDROID_ID`. For more information, see Android developer documentation on [ANDROID\_ID](https://developer.android.com/reference/android/provider/Settings.Secure.html#ANDROID_ID). |
| [SystemInfo.deviceName](/engine/6000.6/script-reference/unityengine/systeminfo/devicename.md)                         | Returns the device name. For Android devices, Unity tries to read `device_name` and `bluetooth_name` from secure system settings. If these strings have no values, Unity returns `<unknown>`.                 |
| [SystemInfo.deviceModel](/engine/6000.6/script-reference/unityengine/systeminfo/devicemodel.md)                       | Returns the device model. This often includes the manufacturer name and model number (for example, "LGE Nexus 5 or "SAMSUNG-SM-G900A").                                                                       |
| [SystemInfo.operatingSystem](/engine/6000.6/script-reference/unityengine/systeminfo/operatingsystem.md)               | Returns the operating system name and version.                                                                                                                                                                |
