diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 74bc2758..5ac89b9d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -33,8 +33,8 @@ yarn build:dev And import your local file directly ```html - - + + ``` Don't forget to re-run the build command each time you make a modification to the code. diff --git a/README.md b/README.md index 7b832b61..327292be 100644 --- a/README.md +++ b/README.md @@ -3,12 +3,14 @@ ![npm](https://img.shields.io/npm/v/@genymotion/device-web-player) ![GitHub](https://img.shields.io/github/license/Genymobile/genymotion-device-web-player) - + + + This repository contains the Genymotion device web renderer JavaScript SDK. It provides an easy way to integrate **Genymotion devices** running in the cloud into any web application. You will be able to display an emulator screen and interact with the device. -It focuses on: +### ๐Ÿš€ Engineered for Power - **compatibility** (vanilla JavaScript, no external framework used) - **performance** (30fps or more) @@ -17,19 +19,27 @@ It focuses on: For more information about Genymotion devices, please visit [genymotion website](https://www.genymotion.com). -## Table of contents - -1. [Requirements](#Requirements) -2. [Getting started](#getting-started) - 1. [With NPM/Yarn](#with-npmyarn) - 2. [With CDN](#with-cdn) -3. [Usage](#usage) -4. [Player API](#player-api) -5. [Features & options](#features--options) -6. [Features notes](#features-notes) - 1. [Key mapping](#keymapping-notes) - -## Requirements +## ๐Ÿ“œ Table of contents + +1. ๐Ÿ“‹ [Requirements](#๐Ÿ“‹-requirements) +2. ๐Ÿ“ฆ[Installation](#๐Ÿ“ฆ-installation) + 1. ๐Ÿ“ฅ[Install via NPM / Yarn](#๐Ÿ“ฅ-install-via-npm--yarn) + 2. ๐ŸŒ[Install via CDN](#๐ŸŒ-install-via-cdn) +3. โšก[Quick Start Guide](#โšก-quick-start-guide) +4. ๐ŸŽจ[Style and CSS](#๐ŸŽจ-style-and-css) +5. ๐Ÿ“˜[API Documentation](#๐Ÿ“˜-api-documentation) + 1. ๐Ÿ“ก[VM Communication](#๐Ÿ“ก-vm-communication) + 2. ๐Ÿ› ๏ธ[Utilities](#๐Ÿ› ๏ธ-utilities) + 3. ๐ŸŽฎ[Key Mapping](#๐ŸŽฎ-key-mapping) + 4. ๐Ÿ”Š[Media](#๐Ÿ”Š-media) + 5. ๐ŸŽฅ[Video](#๐ŸŽฅ-video) +6. โš™๏ธ[Features & Instance Options](#โš™๏ธ-features--instance-options) + 1. ๐Ÿ–ฅ๏ธ[Instance Options](#๐Ÿ–ฅ๏ธ-instance-options) + 2. ๐Ÿ”Œ[Plugin Options](#๐Ÿ”Œ-plugin-options) +7. โ“[FAQ](#โ“-faq) +8. ๐Ÿค[Contributing](#๐Ÿค-contributing) + +## ๐Ÿ“‹ Requirements A Modern, WebRTC compatible, Web browser: @@ -39,9 +49,9 @@ A Modern, WebRTC compatible, Web browser: - Microsoft Edge 20.10240+ - Safari 11+ -## Getting started +## ๐Ÿ“ฆ Installation -### With NPM/Yarn +### ๐Ÿ“ฅ Install via NPM / Yarn Using yarn: @@ -67,7 +77,7 @@ const {DeviceRendererFactory} = require('genymotion/device-web-player'); ``` -### With CDN +### ๐ŸŒ Install via CDN ```html ``` -## Usage +## โšก Quick Start Guide Use `DeviceRendererFactory` to instanciate one or more device renderer. All you need is an HTML element to use as a container. See example below. @@ -118,7 +128,7 @@ or check the [PaaS documentation](https://docs.genymotion.com/paas/01_Requiremen ``` -## Style and CSS +## ๐ŸŽจ Style and CSS The player uses css variables to style some parts of the app, but the player is still totally customisable through overloading the css classes. @@ -162,162 +172,136 @@ The player uses css variables to style some parts of the app, but the player is Modal --gm-modal-bg-color: var(--gm-secondary-color); -## Player API +## ๐Ÿ“˜ API Documentation The Player API provides functionality for managing plugin options and websocket communication. These operations are handled through the API (categorized) object returned by the `setupRenderer` function. -### `VM_communication` +### ๐Ÿ“ก VM_communication -- #### `disconnect` +#### `disconnect` - Disconnects the player from the virtual machine (VM) and cleans up the memory listener. +**Description**: Disconnects the player from the virtual machine (VM) and cleans up the memory listener. -- #### `addEventListener` +#### `addEventListener` - Registers a listener for messages emitted from the VM. +**Description**: Registers a listener for messages emitted from the VM. - - Parameters: +- **Parameters**: - - event (string): The name of the event to listen for. Example events include 'fingerprint', 'gps'... - - callback (function): The function to call when the event is emitted. The message from the VM will be passed as an argument to the callback function. - - - Example Usage + - `event` (string): The name of the event to listen for (e.g., 'fingerprint', 'gps'). + - `callback` (function): The function to call when the event is emitted. The VM's message will be passed to the callback. +- **Example usage**: ```js addEventListener('fingerprint', (msg) => { console.log(msg); }); ``` -- #### `sendData` - Sends messages to the VM. - - Parameters: - - `data` (object): An object containing the channel and the messages to be sent. - - `channel` (string): The channel to send the messages to. - - `messages` (array): An array of messages to be sent. - - Example Usage +#### `sendData` -```js -sendData({ - channel: 'battery', - messages: ['set state level 10', 'set state status true'], -}); -``` +**Description**: Sends messages to the VM. + +- **Parameters**: + + - `data` (object): An object containing the channel and messages to be sent. + - `channel` (string): The channel to send the messages to. + - `messages` (array): An array of messages to send. -### `utils` +- **Example usage**: + ```js + sendData({ + channel: 'battery', + messages: ['set state level 10', 'set state status true'], + }); + ``` + +### ๐Ÿ› ๏ธ utils -- #### `getRegisteredFunctions` - Returns a list of available functions with optional descriptions. +#### `getRegisteredFunctions` -### `keymapping` +**Description**: Returns a list of available functions with optional descriptions. -- #### `setConfig` +### ๐ŸŽฎ keymapping - supply a config for keymapping +#### `setConfig` +**Description**: Provides configuration for keymapping. + +- **Example configuration**: ```js { - dPad:[{ - keys:[ + dPad: [{ + keys: [ { key: 'w', - effect: { - initialX: 20, - initialY: 80, - distanceX: 0, - distanceY: -10, - }, + effect: { initialX: 20, initialY: 80, distanceX: 0, distanceY: -10 }, name: 'up', description: 'move up', }, { key: 's', - effect: { - initialX: 20, - initialY: 80, - distanceX: 0, - distanceY: 10, - }, + effect: { initialX: 20, initialY: 80, distanceX: 0, distanceY: 10 }, name: 'down', description: 'move down', }, - { - key: 'a', - effect: { - initialX: 20, - initialY: 80, - distanceX: -10, - distanceY: 0, - }, - name: 'left', - description: 'move left', - }, - { - key: 'd', - effect: { - initialX: 20, - initialY: 80, - distanceX: 10, - distanceY: 0, - }, - name: 'up', - description: 'move right', - }, - + // ... other keys ], name: 'character movement', - description: 'left joystick used to move the character', + description: 'Left joystick used to move the character', }], - tap:[{ + tap: [{ key: 'p', - effect: { - initialX: 50, - initialY: 50, - }, - name:'Fire' + effect: { initialX: 50, initialY: 50 }, + name: 'Fire', }], swipe: [{ key: 'u', - effect: { - initialX: 50, - initialY: 50, - distanceX: -10, - distanceY: 0, - description: 'swipe left', - }, - name:'Left dodge', - description: 'Dodge on the left' + effect: { initialX: 50, initialY: 50, distanceX: -10, distanceY: 0, description: 'swipe left' }, + name: 'Left dodge', + description: 'Dodge on the left', }] } ``` -- #### `activeKeyMappingDebug` +#### `activeKeyMappingDebug` + +**Description**: Helper to create the config mapping. + +- **Parameters**: + - `isTraceActivate` (boolean): If true, it prints the x and y coordinates over the video stream for all clicks. + - `isGridActivate` (boolean): If true, displays a grid over the video stream. Both rows and columns have a size of 10%. + +#### `enable` - helper to create the config mapping +**Description**: Enables or disables keymapping. - - Parameters: - - `isTraceActivate` (boolean) : when true all click on video stream will print x and y coord over the video - - `isGridActivate` (boolean): when true display a grid over the video stream. Row and column have both a size of 10%. +- **Parameters**: + - `isActive` (boolean, optional): Activates or deactivates keymapping. Default is false. -- #### `enable` - - Parameters: - - `isActive` (boolean) : **Optionnal** parameter to activate or desactivate keymapping, **default false** +### ๐Ÿ”Š media -### `media` +#### `mute` -- #### `mute` -- #### `unmute` +**Description**: Mutes the playerโ€™s audio. -### `video` +#### `unmute` -- #### `fullscreen` - Need to be call from an user action, in accordance with browser security rules +**Description**: Unmutes the playerโ€™s audio. -## Features & options +### ๐ŸŽฅ video + +#### `fullscreen` + +**Description**: Enables fullscreen mode, but must be called from a user action in compliance with browser security rules. + +## โš™๏ธ Features & Instance options A device renderer instance can be configured using the `options` argument (object). Possible configuration key / value are described below. -### `token` +### ๐Ÿ–ฅ๏ธ Instance options + +#### `token` - **Type:** `String` - **Default:** `undefined` @@ -325,7 +309,51 @@ A device renderer instance can be configured using the `options` argument (objec - **Details:** Instance access token, the shared secret used to connect to the device. For Genymotion PaaS devices, the token is the instance id (more information can be find [here](https://docs.genymotion.com/paas/02_Getting_Started/)). For SaaS devices, you must generate the access token using the [login api](https://developer.genymotion.com/saas/#operation/login). -### `i18n` +#### `toolbarOrder` + +- **Type:** `Array` +- **Default:** `[]` +- **Special options** + - `separator`: to display a separator between icons + - `unordered`: to display all plugins activate but not specified un toolbarOrder +- **Example**`[ +'ButtonsEvents_ROTATE', +'separator', +'Battery', +'FingerPrint', +'separator', +'unordered', +'separator', +'ButtonsEvents_POWER']` +- **Details:** + The toolbarOrder option allows you to define the order in which plugin icons appear in the toolbar. Each string in the array corresponds to the unique identifier (id) of a button registered in the toolbar manager. The IDs of the plugins are provided below in the plugin option details. + +#### `showPhoneBorder` + +- **Type:** `Boolean` +- **Default:** `false` +- **Details:** + Adds a mobile-style frame around the video to mimic the appearance of a smartphone screen. + +#### `connectionFailedURL` + +- **Type:** `String` +- **Default:** `undefined` +- **Compatibility:** `SaaS`, `PaaS` +- **Details:** + Redirection page in case of connection error. + +#### `giveFeedbackLink` + +- **Type:** `String` +- **Default:** `giveFeedbackLink` +- **Compatibility:** `SaaS`, `PaaS` +- **Details:** + Set url for feedback page. + +#### ๐Ÿ”ง Advanced Options + +#### `i18n` - **Type:** `Object` - **Default:** `{}` @@ -333,7 +361,7 @@ A device renderer instance can be configured using the `options` argument (objec - **Details:** Alternative translation for the renderer UI. -### `stun` +#### `stun` - **Type:** `Object` - **Default:** `{}` @@ -351,7 +379,7 @@ A device renderer instance can be configured using the `options` argument (objec } ``` -### `turn` +#### `turn` - **Type:** `Object` - **Default:** `{}` @@ -368,174 +396,163 @@ A device renderer instance can be configured using the `options` argument (objec } ``` -### `showPhoneBorder` +### ๐Ÿ”Œ Plugin Options + +#### `battery` - **Type:** `Boolean` -- **Default:** `false` +- **Default:** `true` +- **Toolbar name:** `Battery` +- **Compatibility:** `PaaS`, `SaaS` - **Details:** - Adds a mobile-style frame around the video to mimic the appearance of a smartphone screen. + Enables or disables the battery widget. This widget can be used to set the battery level and state of the Android virtual device. -### `connectionFailedURL` +#### `baseband` -- **Type:** `String` -- **Default:** `undefined` -- **Compatibility:** `SaaS`, `PaaS` +- **Type:** `Boolean` +- **Default:** `false` +- **Toolbar name:** `Baseband` +- **Compatibility:** `PaaS`, `SaaS` - **Details:** - Redirection page in case of connection error. + Enable or disable baseband (MMC/MNC) widget. -### `giveFeedbackLink` +#### `biometrics` -- **Type:** `String` -- **Default:** `giveFeedbackLink` +- **Type:** `Boolean` +- **Default:** `true` +- **Toolbar name:** `FingerPrint` - **Compatibility:** `SaaS`, `PaaS` - **Details:** - Set url for feedback page. + Enable or disable fingerprints widget. This widget can be used to manage fingerprint reading requests. Available for Android 9 and above. -### `toolbarOrder` +#### `camera` -- **Type:** `Array` -- **Default:** `[]` -- **Special options** - - `separator`: to display a separator between icons - - `unordered`: to display all plugins activate but not specified un toolbarOrder -- **Example**`[ -'ButtonsEvents_ROTATE', -'separator', -'Battery', -'FingerPrint', -'separator', -'unordered', -'separator', -'ButtonsEvents_POWER']` +- **Type:** `Boolean` +- **Default:** `true` +- **Toolbar name:** `Camera` +- **Compatibility:** `PaaS`, `SaaS` - **Details:** - The toolbarOrder option allows you to define the order in which plugin icons appear in the toolbar. Each string in the array corresponds to the unique identifier (id) of a button registered in the toolbar manager. The IDs of the plugins are provided below in the plugin option details. - -### **Plugins options** + Enables or disables the camera widget. This widget can be used to forward local webcam video to the Android virtual device. By default, if the `microphone` property is also true, then the default audio input will be used as well. -### `streamResolution` +#### `clipboard` - **Type:** `Boolean` - **Default:** `true` -- **Toolbar name:** `StreamResolution`... -- **Compatibility:** `SaaS` +- **Toolbar name:** `Clipboard` +- **Compatibility:** `PaaS`, `SaaS` - **Details:** - Enables or disables the video stream quality widget. + Enables or disables the clipboard widget. This widget can be used to forward local clipboard to the Android virtual device. -### `streamBitrate` +#### `connectionFailedURL` -- **Type:** `Boolean` -- **Default:** `false` -- **Toolbar name:** `StreamBitrate`... -- **Compatibility:** `SaaS` +- **Type:** `String` +- **Default:** `undefined` +- **Compatibility:** `SaaS`, `PaaS` - **Details:** - Enables or disables the stream bitrate widget. + Redirection page in case of connection error. -### `touch` +#### `capture` - **Type:** `Boolean` - **Default:** `true` +- **Toolbar name:** `Screencast` - **Compatibility:** `PaaS`, `SaaS` - **Details:** - Enables or disables the touch events (fingers on screen). If you want to disable all VM interaction, please also disable `mouse` and `keyboard`. + Enables or disables the capture widget. This widget can be used to capture the screen of the Android virtual device (screenshot or screencast). -### `mouse` +#### `diskIO` - **Type:** `Boolean` - **Default:** `true` +- **Toolbar name:** `IOThrottling` - **Compatibility:** `PaaS`, `SaaS` - **Details:** - Enables or disables the mouse events. If you want to disable all VM interaction, please also disable `touch` and `keyboard`. + Enables or disables the diskIO widget. This widget can be used to modify Disk IO (throttling) of the Android virtual device. -### `keyboard` +#### `fileUpload` - **Type:** `Boolean` - **Default:** `true` +- **Toolbar name:** `FileUpload` - **Compatibility:** `PaaS`, `SaaS` - **Details:** - Enables or disables the keyboard widget. This widget can be used to transmit keyboard key strokes to the Android virtual device. + Enables or disables the fileUpload widget and drag & drop. This widget can be used to forward local file to the Android virtual device. When drag & dropping APK or ZIP files, it will install them. -### `keyboardMapping` +#### `fileUploadUrl` -- **Type:** `Boolean` -- **Default:** `true` -- **Toolbar name:** `KeyboardMapping`... +- **Type:** `String` +- **Default:** `undefined` - **Compatibility:** `PaaS`, `SaaS` - **Details:** - Enables or disables the keyboardMapping. This widget can be used to map key with command (i.e. tap, swipe-left, tilt, ...). - -### `volume` + Set the file upload URL, required if `fileUpload` is set to `true`. -... +#### `fullscreen` - **Type:** `Boolean` - **Default:** `true` -- **Toolbar name:** `ButtonsEvents_VOLUME_UP` `ButtonsEvents_VOLUME_DOWN`... +- **Toolbar name:** `Fullscreen` - **Compatibility:** `PaaS`, `SaaS` - **Details:** - Enables or disables the volume widget. This widget can be used to increase or decrease the volume of the Android virtual device. + Enables or disables the fullscreen widget. This widget can be used to make the renderer go fullscreen. -### `rotation` +#### `gamepad` + +- **Type:** `Boolean` +- **Default:** `true` +- **Toolbar name:** `Gamepad` +- **Compatibility:** `SaaS`, `PaaS` +- **Details:** + Enable or disable gamepad support & widget. -... +#### `gps` - **Type:** `Boolean` - **Default:** `true` -- **Toolbar name:** `ButtonsEvents_ROTATE`... +- **Toolbar name:** `GPS` - **Compatibility:** `PaaS`, `SaaS` - **Details:** - Enables or disables the rotation widget. This widget can be used to rotate the Android virtual device. + Enables or disables the GPS widget. This widget can be used to set the GPS location of the Android virtual device. If you want to use a visual map instead of GPS coordinates number to set the location, you must import the Google Maps library with your API key. -### `navbar` +```html + + +``` -... -... -... +#### `gpsSpeedSupport` - **Type:** `Boolean` -- **Default:** `true` -- **Toolbar name:** `ButtonsEvents_BACK` `ButtonsEvents_HOME` `ButtonsEvents_RECENT_APP`... +- **Default:** `false` - **Compatibility:** `PaaS`, `SaaS` - **Details:** - Enables or disables the navbar widgets. This widget can be used to navigate in the Android virtual device like when using hardware buttons. + Enables or disables GPS speed support. -### `power` - -... +#### `identifiers` - **Type:** `Boolean` - **Default:** `true` -- **Toolbar name:** `ButtonsEvents_POWER`... +- **Toolbar name:** `Identifiers` - **Compatibility:** `PaaS`, `SaaS` - **Details:** - Enables or disables the power widget. This widget can be used to poweroff or reboot the Android virtual device. - -### `fullscreen` + Enables or disables the identifiers widget. This widget can be used to set the identifiers (Android ID / IMEI) of the Android virtual device. -... -... +#### `keyboard` - **Type:** `Boolean` - **Default:** `true` -- **Toolbar name:** `Fullscreen`... - **Compatibility:** `PaaS`, `SaaS` - **Details:** - Enables or disables the fullscreen widget. This widget can be used to make the renderer go fullscreen. - -### `camera` + Enables or disables the keyboard widget. This widget can be used to transmit keyboard keystrokes to the Android virtual device. -... +#### `keyboardMapping` - **Type:** `Boolean` - **Default:** `true` -- **Toolbar name:** `Camera`... +- **Toolbar name:** `KeyboardMapping` - **Compatibility:** `PaaS`, `SaaS` - **Details:** - Enables or disables the camera widget. This widget can be used to forward local webcam video to the Android virtual device. - By default, if the `microphone` property is also true, then the default audio input will be used as well. + Enables or disables the keyboard mapping. This widget can be used to map keys with commands (e.g., tap, swipe-left, tilt, etc.). -### `microphone` - -... +#### `microphone` - **Type:** `Boolean` - **Default:** `false` @@ -543,159 +560,130 @@ A device renderer instance can be configured using the `options` argument (objec - **Details:** Enables or disables microphone injection. This can be used to forward local microphone (or webcam audio) to the Android virtual device. -### `fileUpload` - -... +#### `mouse` - **Type:** `Boolean` - **Default:** `true` -- **Toolbar name:** `FileUpload`... -- **Compatibility:** `PaaS`, `SaaS` -- **Details:** - Enables or disables the fileUpload widget and drag & drop. This widget can be used to forward local file to the Android virtual device. When drag & dropping APK or ZIP files, it will install them. - -### `fileUploadUrl` - -- **Type:** `String` -- **Default:** `undefined` - **Compatibility:** `PaaS`, `SaaS` - **Details:** - Set the file upload url, required if `fileUpload` is set to `true`. - -### `clipboard` + Enables or disables the mouse events. If you want to disable all VM interaction, please also disable `touch` and `keyboard`. -... +#### `network` - **Type:** `Boolean` - **Default:** `true` -- **Toolbar name:** `Clipboard`... +- **Toolbar name:** `Network` - **Compatibility:** `PaaS`, `SaaS` - **Details:** - Enables or disables the clipboard widget. This widget can be used to forward local clipboard to the Android virtual device. + Enables or disables the network widget. This widget can be used to enable or disable Wi-Fi or mobile network, and to set network throttling (mobile network type and signal strength) of the Android virtual device. -### `battery` - -... +#### `phone` - **Type:** `Boolean` - **Default:** `true` -- **Toolbar name:** `Battery`... +- **Toolbar name:** `Phone` - **Compatibility:** `PaaS`, `SaaS` - **Details:** - Enables or disables the battery widget. This widget can be used to set the battery level and state of the Android virtual device. + Enables or disables the phone widget. This widget can be used to send SMS or make phone calls to the Android virtual device. -### `gps` - -... +#### `power` - **Type:** `Boolean` - **Default:** `true` -- **Toolbar name:** `GPS`... +- **Toolbar name:** `ButtonsEvents_POWER` - **Compatibility:** `PaaS`, `SaaS` - **Details:** - Enables or disables the gps widget. This widget can be used to set the gps location of the Android virtual device. - If you want to use a visual map instead of GPS coordinates number to set the location, you must import google maps - library with your API key. + Enables or disables the power widget. This widget can be used to power off or reboot the Android virtual device. -```html - - -``` - -### `gpsSpeedSupport` +#### `rotation` - **Type:** `Boolean` -- **Default:** `false` +- **Default:** `true` +- **Toolbar name:** `ButtonsEvents_ROTATE` - **Compatibility:** `PaaS`, `SaaS` - **Details:** - Enables or disables gps speed support. - -### `capture` + Enables or disables the rotation widget. This widget can be used to rotate the Android virtual device. -... +#### `screenResolution` - **Type:** `Boolean` - **Default:** `true` -- **Toolbar name:** `Screencast`... -- **Compatibility:** `PaaS`, `SaaS` +- **Toolbar name:** `StreamResolution` +- **Compatibility:** `SaaS` - **Details:** - Enables or disables the capture widget. This widget can be used to capture the screen of the Android virtual device (screenshot or screencast). - -### `identifiers` + Enables or disables the video stream quality widget. -... +#### `streamBitrate` - **Type:** `Boolean` -- **Default:** `true` -- **Toolbar name:** `Identifiers`... -- **Compatibility:** `PaaS`, `SaaS` +- **Default:** `false` +- **Toolbar name:** `StreamBitrate` +- **Compatibility:** `SaaS` - **Details:** + Enables or disables the stream bitrate widget. -Enables or disables the identifiers widget. This widget can be used to set the identifiers (Android ID / IMEI) of the Android virtual device. - -### `network` - -... +#### `stun` -- **Type:** `Boolean` -- **Default:** `true` -- **Toolbar name:** `Network`... +- **Type:** `Object` +- **Default:** `{}` - **Compatibility:** `PaaS`, `SaaS` - **Details:** - Enables or disables the network widget. This widget can be used to enable or disable the wifi or mobile network, and to set the network throttling (mobile network type and signal strength) of the Android virtual device. + WebRTC STUN servers configuration. -### `phone` +```js +{ + urls: [ + 'stun:stun-server1.org:80', + 'stun:stun-server2.org:443', + ... + ], +} +``` -... +#### `turn` -- **Type:** `Boolean` -- **Default:** `true` -- **Toolbar name:** `Phone`... +- **Type:** `Object` +- **Default:** `{}` - **Compatibility:** `PaaS`, `SaaS` - **Details:** + WebRTC TURN servers configuration. -Enables or disables the phone widget. This widget can be used to send SMS or phone call the Android virtual device. - -### `baseband` +```js +{ + urls: [], + username: "myUsername", + credential: "myPassword", + default: false // Whether or not we should use the TURN servers by default. Default: false. +} +``` -... +#### `volume` - **Type:** `Boolean` -- **Default:** `false` -- **Toolbar name:** `Baseband`... +- **Default:** `true` +- **Toolbar name:** `ButtonsEvents_VOLUME_UP`, `ButtonsEvents_VOLUME_DOWN` - **Compatibility:** `PaaS`, `SaaS` - **Details:** - Enable or disable baseband (MMC/MNC) widget. - -### `diskIO` + Enables or disables the volume widget. This widget can be used to increase or decrease the volume of the Android virtual device. -... +#### `wifi` - **Type:** `Boolean` - **Default:** `true` -- **Toolbar name:** `IOThrottling`... - **Compatibility:** `PaaS`, `SaaS` - **Details:** - Enables or disables the diskIO widget. This widget can be used to modify Disk IO (throttling) of the Android virtual device. + Enables or disables the Wi-Fi widget. This widget can be used to enable or disable the Wi-Fi network on the Android virtual device. -### `gamepad` +## โ“ FAQ -- **Type:** `Boolean` -- **Default:** `true` -- **Toolbar name:** `Gamepad`... -- **Compatibility:** `SaaS`, `PaaS` -- **Details:** - Enable or disable gamepad support & widget +### How do I get an API key? -### `biometrics` +Sign up on [Genymotion SaaS](https://cloud.geny.io/signin) and generate an API key from the dashboard. -- **Type:** `Boolean` -- **Default:** `true` -- **Toolbar name:** `FingerPrint`... -- **Compatibility:** `SaaS`, `PaaS` -- **Details:** - Enable or disable fingerprints widget. This widget can be used to manage fingerprint reading requests. Available for Android 9 and above +### Can I use this SDK with on-premise deployments? + +No, this SDK is designed for Genymotion's SaaS platform only. -## Contributing +## ๐Ÿค Contributing Read through our [contributing guidelines](https://github.com/Genymobile/genymotion-device-web-player/blob/main/CONTRIBUTING.md) to learn about our submission process, coding rules and more. diff --git a/doc/assets/screenshot.png b/doc/assets/screenshot.png index 10da600c..da8ce01c 100644 Binary files a/doc/assets/screenshot.png and b/doc/assets/screenshot.png differ