Use the extended controls on the Android Emulator to send data, change device properties, control apps, and more. To open the **Extended controls** window,
click **More**
![Emulator extended controls icon](https://developer.android.com/static/studio/images/buttons/emulator-extended-controls.png)
in the emulator panel. Note that some of these extended control options are
only available when you
[run the emulator in a separate window](https://developer.android.com/studio/run/emulator-extended-controls#standalone-window),
outside of Android Studio.

You can use keyboard shortcuts to perform many of these tasks. For a complete
list of shortcuts in the emulator, press <kbd>F1</kbd> (<kbd>Command</kbd>+<kbd>/</kbd>
on macOS) to open the Help pane.

**Table 1.** Extended controls details

| Feature | Description |
|---|---|
| Displays | The emulator lets you deploy your app to multiple displays, which support customizable dimensions and can help you test apps that support [multi-window](https://developer.android.com/guide/topics/ui/foldables#multi-window) and [multi-display](https://developer.android.com/guide/topics/ui/foldables#multi-display). While a virtual device is running, you can add up to two additional displays as follows: 1. Add a display by clicking **Add secondary display**. 2. From the menu under **Secondary displays** , do one of the following: 1. Select one of the preset aspect ratios. 2. Select **custom** and set the **height** , **width** , and **dpi** for your custom display. 3. (Optional) Click **Add secondary display** again to add a third display. 4. Click **Apply changes** to add the specified display(s) to the running virtual device. |
| Cellular | The emulator lets you simulate various network conditions. You can approximate the network speed for different network protocols, or you can specify **Full** , which transfers data as quickly as your computer allows. Specifying a network protocol is always slower than **Full**. You can also specify the voice and data network status, such as roaming. The defaults are set in the AVD. Select a **Network type**: - **GSM**: Global System for Mobile Communications - **HSCSD**: High-Speed Circuit-Switched Data - **GPRS**: Generic Packet Radio Service - **EDGE**: Enhanced Data rates for GSM Evolution - **UMTS**: Universal Mobile Telecommunications System - **HSPDA**: High-Speed Downlink Packet Access - **LTE**: Long-Term Evolution - **Full** (default): Use the network as provided by your computer Select a **Signal strength**: - **None** - **Poor** - **Moderate** (default) - **Good** - **Great** Select a **Voice status** , **Data status**, or both: - **Home** (default) - **Roaming** - **Searching** - **Denied (emergency calls only)** - **Unregistered (off)** |
| Battery | You can simulate the battery properties of a device to see how your app performs under different conditions. To select a **Charge level**, use the slider control. Select a **Charger connection** value: - **None** - **AC charger** Select a **Battery health** value: - **Good** (default) - **Failed** - **Dead** - **Overvoltage** - **Overheated** - **Unknown** Select a **Battery status**value: - **Unknown** - **Charging** (default) - **Discharging** - **Not charging** - **Full** |
| Camera | You can load pictures into the scene that is simulated when you open the emulator camera. For more information, see [Add Augmented Images to the scene](https://developers.google.com/ar/develop/java/emulator#add_augmented_images_to_the_scene) in the ARCore documentation. |
| Location | The emulator lets you simulate "my location" information: where the emulated device is located. For example, if you click My Location ![My Location icon](https://developer.android.com/static/images/tools/e-ilocation.png) in Google Maps and then send a location, the map shows it. Controls for the device's location information are organized under two tabs: **Single points** and **Routes**. **Single points** In the **Single points** tab, you can use the Google Maps webview to search for points of interest, just as you would when using Google Maps on a phone or in a browser. When you search for (or click) a location in the map, you can save the location by selecting **Save point** near the bottom of the map. All your saved locations are listed on the right side of the **Extended controls** window. To set the emulator's location to the location you have selected on the map, click the **Set location** button near the bottom right of the **Extended controls** window. **Routes** Similar to the **Single points** tab, the **Routes** tab provides a Google Maps webview that you can use to create a route between two or more locations. To create and save a route, do the following: 1. In the map view, use the text field to search for the first destination in your route. 2. Select the location from the search results. 3. Select the **Navigate** ![](https://developer.android.com/static/studio/images/buttons/emulator-navigate_icon.png) button. 4. Select the starting point of your route from the map. 5. (Optional) Click **Add destination** to add more stops to your route. 6. Save your route by clicking **Save route** in the map view. 7. Specify a name for the route and click **Save**. To simulate the emulator following the route you saved, select the route from the list of **Saved routes** and click **Play route** near the bottom right of the **Extended controls** window. To stop the simulation, click **Stop route**. To continuously simulate the emulator following the specified route, enable the switch next to **Repeat playback** . To change how quickly the emulator follows the specified route, select an option from the **Playback speed** menu. **Import GPX and KML data** To use geographic data from a GPS exchange format (GPX) or Keyhole Markup Language (KML) file: 1. Click **Load GPX/KML**. 2. In the file dialog, select a file on your computer and click **Open**. 3. Optionally select a **Speed**. 4. The speed defaults to the **Delay** value (**Speed 1X** ). You can increase the speed by double (**Speed** **2X** ), triple (**Speed 3X**), and so on. 5. Click **Run** ![Run icon](https://developer.android.com/static/studio/images/buttons/toolbar-run.png). |
| Phone | The emulator lets you simulate incoming phone calls and text messages. To initiate a call to the emulator: 1. Select or type a phone number in the **From** field. 2. Click **Call Device**. 3. Optionally, click **Hold Call** to put the call on hold. 4. To end the call, click **End Call**. To send a text message to the emulator: 1. Select or type a phone number in the **From** field. 2. Type a message in the **SMS message** field. 3. Click **Send Message**. |
| Directional Pad | If the AVD has the directional pad enabled in the hardware profile, you can use the directional pad controls with the emulator. However, not all devices support the directional pad; for example, Android watches don't. The buttons simulate the following actions: ![Directional Pad Control](https://developer.android.com/static/images/tools/e-dpad.png) |
| Microphone | For privacy and performance reasons, microphone input is disabled by default in the Android Emulator. To enable microphone input, toggle the **Virtual microphone uses host audio input** option. The Android Emulator offers toggles and key events to simulate various headphone and microphone scenarios: - **Virtual microphone uses host audio input**: When enabled, the emulator receives audio input from the host microphone. When disabled, the emulator receives no audio input. Note that your host operating system (Windows, macOS, or Linux) might prompt you for microphone access permission the first time this option is enabled. - **Virtual headset plug inserted** : This option simulates the insertion of a headphone and microphone into a 3.5mm audio jack. Toggling this option triggers both the `SW_HEADPHONE_INSERT` and `SW_MICROPHONE_INSERT` input events, informing the Android system of the simulated hardware connection. - **Virtual headset has microphone** : This option simulates the presence of a microphone on a connected headset. Toggling this option triggers the `KEY_HEADSETHOOK` key event. This Android key code is commonly used for actions such as answering calls, ending calls, and controlling media playback. - **Voice Assist** : This option simulates the activation of the device's voice assistant. Toggling this option triggers the `KEYCODE_ASSIST` key event. This Android key code is used to launch the device's assistant app, such as Google Assistant. |
| Fingerprint | This control can simulate 10 different fingerprint scans. You can use it to test fingerprint integration in your app. This feature is disabled for Android 5.1 (API level 22) and lower and for Wear OS. To simulate a fingerprint scan on the virtual device: 1. Prepare an app to receive a fingerprint. 2. Select a **Fingerprint** value. 3. Click **Touch Sensor**. |
| Virtual sensors \> Device Pose | This control lets you test your app against changes in device position, orientation, or both. For example, you can simulate gestures such as tilt and rotation. The accelerometer doesn't track the absolute position of the device: it just detects when a change is occurring. The control simulates the way accelerometer and magnetometer sensors would respond when you move or rotate a real device. You must enable the accelerometer sensor in your [AVD](https://developer.android.com/studio/run/managing-avds#hpproperties) to use this control. The control reports [`TYPE_ACCELEROMETER`](https://developer.android.com/reference/android/hardware/Sensor#TYPE_ACCELEROMETER) events on the x, y, and z axis. These values include gravity. For example, if the device is suspended in outer space, it would experience zero acceleration (all of x, y, and z are 0). When the device is on Earth and lying screen-up on top of a table, the acceleration is 0, 0, and 9.8 because of gravity. The control also reports [`TYPE_MAGNETIC_FIELD`](https://developer.android.com/reference/android/hardware/Sensor#TYPE_MAGNETIC_FIELD) events, which measure the ambient magnetic field on the x, y and z axis in microteslas (μT). To rotate the device around the x, y, and z axes, select **Rotate** and do one of the following: - Adjust the **Yaw** , **Pitch** , and **Roll** sliders and observe the position in the upper pane. - Move the device representation in the upper pane and observe the **Yaw** , **Pitch** , and **Roll** and how the resulting accelerometer values change. See [Compute the device's orientation](https://developer.android.com/guide/topics/sensors/sensors_position#sensors-pos-orient) for more information about how yaw, pitch, and roll are calculated. To move the device horizontally (x) or vertically (y), select **Move** and do one of the following: - Adjust the **X** and **Y** sliders and observe the position in the upper pane. - Move the device representation in the upper pane and observe the **X** and **Y** slider values and how the resulting accelerometer values change. To position the device at 0, 90, 180, or 270 degrees: - In the **Device rotation** area, select a button to change the rotation. As you adjust the device, the **Resulting values** fields change accordingly. These are the values that an app can access. For more information about these sensors, see [Sensors overview](https://developer.android.com/guide/topics/sensors/sensors_overview), [Motion sensors](https://developer.android.com/guide/topics/sensors/sensors_motion), and [Position sensors](https://developer.android.com/guide/topics/sensors/sensors_position). |
| Virtual sensors \> Additional sensors | The emulator can simulate various position and environment sensors. It lets you adjust the following sensors so you can test them with your app: - **Ambient temperature**: This environmental sensor measures ambient air temperature. - **Magnetic field**: This position sensor measures the ambient magnetic field on the X, Y, and Z axes, respectively. The values are in microteslas (μT). - **Proximity** : This position sensor measures the distance from an object; for example, it can notify a phone that a face is close to it to make a call. The proximity sensor must be enabled in your [AVD](https://developer.android.com/studio/run/managing-avds#hpproperties) to use this control. - **Light**: This environmental sensor measures illuminance. The values are in lux units. - **Pressure**: This environmental sensor measures ambient air pressure. The values are in millibar (hPa) units. - **Relative Humidity**: This environmental sensor measures ambient relative humidity. For more information about these sensors, see [Sensors overview](https://developer.android.com/guide/topics/sensors/sensors_overview), [Position sensors](https://developer.android.com/guide/topics/sensors/sensors_position), and [Environment sensors](https://developer.android.com/guide/topics/sensors/sensors_environment). |
| Bug report | If you're experiencing issues with the emulator, you can prepare and send a bug report. The emulator automatically collects screenshots, logs, and other data for the bug report. |
| Record and Playback | See [Record the screen](https://developer.android.com/studio/run/emulator-record-screen). |
| Google Play | When the AVD system image includes the Play Store app, this displays the Google Play services version information. |
| Settings \> General | - **Emulator window theme** : Select **Light** or **Dark**. - **Send keyboard shortcuts to:** By default, some keyboard combinations trigger emulator control shortcuts. If you're developing an app that includes keyboard shortcuts, such as one targeted at devices with Bluetooth keyboards, you can change this setting to send *all* keyboard input to the virtual device, including input that would be a shortcut in the emulator. - **Screenshot save location**: Click the folder icon to specify a location to save screenshots of the emulator screen. - **Use detected ADB location** : If you're running the emulator from Android Studio, select this setting (the default). If you run the emulator from outside Android Studio and want it to use a specific `adb` executable, deselect this option and specify the SDK Tools location. If this setting is incorrect, features such as screenshot capture and drag-and-drop app installation don't work. - **When to send crash reports** : Select **Always** , **Never** , or **Ask**. - **Show window frame around device**: By default, emulators with device skin files are shown without a surrounding window frame. |
| Settings \> Proxy | By default, the emulator uses the Android Studio HTTP proxy settings. This screen lets you manually define an HTTP proxy configuration for the emulator. For more information, see [Use the emulator with a proxy](https://developer.android.com/studio/run/emulator-networking#proxy). |
| Settings \> Advanced | - **OpenGL ES renderer** : Select the graphics acceleration type. (This is equivalent to the [`-gpu` command line option](https://developer.android.com/studio/run/emulator-acceleration#command-gpu).) - **Autodetect based on host**: Let the emulator choose hardware or software graphics acceleration based on your computer setup. It checks whether your GPU driver matches a list of known faulty GPU drivers, and if it does, the emulator disables graphics hardware emulation and instead uses the CPU. - **ANGLE** : (Windows only.) Use [ANGLE Direct3D](https://chromium.googlesource.com/angle/angle/+/master/README.md) to render graphics in software. - **SwiftShader** : Use [SwiftShader](https://swiftshader.googlesource.com/SwiftShader) to render graphics in software. - **Desktop native OpenGL**: Use the GPU on your host computer. This option is typically the fastest. However, some drivers have issues with rendering OpenGL graphics, so it might not be a reliable option. - **OpenGL ES API level** : Select the maximum version of OpenGL ES to use in the emulator. - **Autoselect**: Let the emulator choose the OpenGL ES version based on the host and guest support. - **Renderer maximum (up to OpenGL ES 3.1)**: Attempt to use the maximum version of OpenGL ES. - **Compatibility (OpenGL ES 1.1/2.0)**: Use the version of OpenGL ES that is compatible with most environments. |
| Help \> Keyboard Shortcuts (Emulator standalone) | This pane provides a complete list of keyboard shortcuts for the emulator. To open this pane while working in the emulator, press <kbd>F1</kbd> (<kbd>Command</kbd>+<kbd>/</kbd> on macOS). For the shortcuts to work, the **Send keyboard shortcuts** option in the **General** settings pane must be set to **Emulator controls (default)**. This menu option isn't available when the emulator is running in embedded mode with Android Studio. If you're using the emulator in embedded mode, you can find the keyboard shortcuts at **File** (**Android Studio** on macOS) **\> Settings \> Keymap** under **Running Devices**. |
| Help \> Emulator Help (Emulator standalone) | To go to the online documentation for the emulator, click **Documentation**. To file a bug against the emulator, click **Send feedback** . For more information, learn [how to report emulator bugs](https://developer.android.com/studio/report-bugs#emulator-bugs). This menu option isn't available when the emulator is running in embedded mode with Android Studio. If you're using the emulator in embedded mode, open the bug template by clicking **Help \> Submit a Bug Report** and manually add the [details for Android Emulator bugs](https://developer.android.com/studio/report-bugs#emulator-bugs). |
| Help \> About | See which `adb` port the emulator uses as well as the Android and emulator version numbers. Compare the latest available emulator version with your version to determine whether you have the latest software installed. The emulator serial number is **emulator-** <var translate="no">adb_port</var>, which you can specify as an `adb` command-line option, for example. |