Skip to main content

Android displays

Using ProDVX devices

Our partner, ProDVX is a premium display manufacturer and our preferred choice of hardware for Flexopus displays. In this article, we are presenting deployment instructions to ProDVX devices using the ProMGR device management software and ProDVX API.

ProDVX - Always On
ProDVX provides high quality hardware & accessories for various applications and markets such as; Digital Signage, Interactive Digital Signage (kiosks), Office Automation (room booking), Home Automation, Security and more.

Remote Device Management with ProMGR

ProMGR is a remote device management software that enables provisioning and full remote control of ProDVX devices. It consists of two main components: the ProMGR application running on the device, and ProMGR Cloud, a remote management platform where you can access and control your fleet.

ProMGR | Remote device management
ProMGR is the ProDVX mobile device management tool that enables you to easily maintain full control of your ProDVX devices. Click to discover more.

ProDVX API: A universal API for seamless integration

The ProDVX API offers a unified interface for controlling ProDVX devices, functioning as a service that provides a REST interface for communication with our application. We are using it to control the LED lights.

ProDVX API - Seamless integration
A universal API for seamless integration. Simplify your development process. Easily create a single application that functions seamlessly across all our devices.

Provision devices with ProMGR

ℹ️
This guide assumes that you have a ProDVX device at hand that supports ProMGR and that you have a valid ProMGR license registered for the device. The Kiosk license is enough to provision and use the device in kiosk mode, however, you will need the Cloud subscription for remote device management. For more information, contact ProDVX or your hardware distributor.

To provision the device, you have to follow the following steps:

  1. Create a configuration in ProMGR Cloud
  2. Create a provisioning profile in ProMGR Cloud
  3. Prepare the device
  4. Provision the device
  5. Pair with Flexopus

STEP 1 - Create a configuration

ProMGR uses configurations to define the settings applied to the device. A configuration is a JSON file with key-value pairs. ProMGR provides a user-friendly editor for the most important settings, but for others, you will have to edit the JSON file directly.

{
    "configName": "Flexopus Device Connect",
    "showAppLauncherOnStart": false,
    "startURL": "https://prodvx.com/onboarding",
    "launcherApps": "",
    "keepScreenOn": true,
    "kioskMode": true,
    "kioskExitGesture": "3",
    "kioskPin": "1234",
    "disablePowerButton": false,
    "volumeLicenseKey": "",
    "mdmDisableStatusBar": true,
    "mdmDisableSafeModeBoot": true,
    "mdmDisableAppsFromUnknownSources": false,
    "mdmDisableADB": true,
    "mdmRuntimePermissionPolicy": "1",
    "mdmSystemUpdatePolicy": "2",
    "mdmPasswordQuality": "0",
    "mdmMinimumPasswordLength": "5",
    "mdmApkToInstall": "https://github.com/flexopus/flexopus-device-connect/releases/latest/download/flexopus-device-connect.apk",
    "mdmApkToInstallInterval": "15",
    "mdmApkToInstallTime": "",
    "mdmSystemAppsToEnable": "",
    "remoteAdmin": true,
    "remoteAdminPassword": "remoteAdminSecret",
    "cloudService": true,
    "restartOnCrash": true,
    "restartAfterUpdate": true,
    "enableVersionInfo": false,
    "showMenuHint": false,
    "singleAppMode": true,
    "singleAppIntent": "intent:#Intent;component=com.flexopus.deviceconnect/.MainActivity;end"
}

Sample configuration file for the Flexopus Device Connect app

Download this sample file from the link below to start with our template:

To create a configuration, sign in to ProMGR and navigate to Configurations. Click on Import From File and select the downloaded file. ProMGR will create a configuration based on the sample, click on Save to finish the importing.

Start configuration with imported sample

Once you have imported the configuration, click on the Configure gear icon in the list, then on Edit JSON in the bottom of the edit page.

Edit configuration
Go to edit JSON from the edit page

In the JSON edit page, you can edit all the values of the configuration, even the ones that are hidden on the basic editor interface. For security reasons, we recommend changing the kiosk exit pin and the remote admin password.

Change kiosk pin and remote admin password in the JSON editor.
⚠️
Always make sure the edited text remains in a valid JSON format, key-value pairs are separated with commas, no comma after the last property.

There are a lot of other settings you can change here, but these options are sufficient to start with the Flexopus Device Connect.

ℹ️
The configuration you have created will only be transferred to the device once, during provisioning. If you edit the configuration later, changes will not apply to already provisioned devices.

STEP 2 - Create provisioning profile

As a next step, navigate to Device Provisioning and click on Create New Profile. Name your profile Flexopus Device Connect. Select the created configuration from the list and decide how you want to group your devices.

Option A: Provisioning a pre-installed device

If you have purchased a device with ProMGR pre-installed, select the Pre-installed device provisioning method.

Option B: Manual provisioning with ADB

If your device does not come with ProMGR pre-installed, choose the ADB (manual) provisioning method. Android Debug Bridge (ADB) is a tool to manage Android devices from a computer. If you are not familiar with using ADB from a command prompt, please take your time and read the documentation.

Select the latest version of the ProMGR Kiosk Browser app.

Create provisioning profile with ADB method
ℹ️
It may happen that the ADB (manual) option does not show up at first. If this happens, submit the empty form. You will receive errors, but the option will appear, and you can save your profile.
Fix for disappearing option ADB

STEP 3 - Prepare the device

Factory reset device: To provision with ProMGR we recommend you start with a factory-reset device. If you have just received your device, then it should be reset. Otherwise, you will have to open the Settings app, and navigate to System -> Reset options -> Erase all data (factory reset) and confirm the action. The naming and location of this action can slightly vary based on your device's os version.

Follow the device's setup wizard: The wizard will ask you to select the language, and connect to a Wi-Fi network (if not using PoE). When asked in the following screens, decline to copy apps and data, skip the Google sign-in, accept Google services, and decline to set a screen lock.

Verify ProDVX API: It is important to have the API running before going on with the provisioning. When the API is running, a permanent notification is displayed in the notifications panel showing the status. If you cannot find the API, you can download and install it using the Quick Start Guide (make sure to choose the right version EDLA vs AOSP).

Enable ADB: If you are using the manual provisioning method, you will have to enable ADB debugging on the device. You can find this option under Developer Settings in the Settings app. Choose USB debugging or Wireless debugging based on your setup. Read more on enabling debugging here.

STEP 4 - Provision device

On the Device Provisioning page, choose your profile in the list, and click on Start & show instructions.

Option A: Provisioning a pre-installed device

Follow the instructions on the provisioning page, and enter the code provided once requested.

Provisioning instruction with pre-installed device

Option B: Manual provisioning with ADB

Follow the instructions on the provisioning page.

Provisioning instruction with ADB

Connect to your device through ADB, and install the ProMGR Kiosk Browser from the provided link. Once you start it with the ADB command, the application will guide you through the provisioning process. You must grant ProMGR all requested permissions.

ℹ️
It may take a while for your device to download and install Flexopus Device Connect. You will get an error message saying single app could not be started. This should resolve in a few seconds once the app is downloaded.

STEP 5 - Pair with Flexopus

After the last step of the provisioning process, the pairing screen of Flexopus Device Connect will appear. From here, you can proceed with pairing the same way as with any other Flexopus display. Read Pairing an Android display for detailed instructions.

Pairing an Android display | Flexopus
Learn how to pair your Android device with Flexopus using the Device Connect app or a web browser for digital signage.

Changing the device configuration

As mentioned above, the configuration transferred to the device will not be updated automatically based on the changes in ProMGR Cloud. You have two options to change device settings after provisioning:

Option 1 - Push configuration to the device

ℹ️
This requires an active Cloud subscription for the device

Once registered in the cloud, your device will appear in the Devices section of ProMGR. To update a device configuration remotely, select your device (or multiple devices), and select Push Configuration to Device in the Fast Admin Action dropdown. Select your updated configuration (or any other configuration) and click on Run.

Push Configuration to Device
ℹ️
This feature allows you to create a configuration for provisioning and maintenance (eg.: no app updates, easy exit from kiosk mode), and another, more secure one for a final environment.

Option 2 - Modify settings on the device

You can access almost every configuration parameter directly on the device.

  1. Exit kiosk mode: Fast tap anywhere 7 consecutive times (or use another kiosk exit gesture you may have set)
  2. Enter PIN: a dialog will show up asking for your predefined PIN code
  3. Go to settings: on the left side, the ProMGR menu will appear, allowing you to enter Settings.

In the settings menu, you can freely set any parameter to the device.

⚠️
In Settings, you can also modify the remote admin password and the kiosk exit PIN. Changing these may block you from accessing the device, use with caution.

Advanced configuration options

ProMGR offers several configuration parameters. These parameters can be modified both in the JSON config and the Settings menu. Without being exhaustive, we are presenting some of the useful features.

ℹ️
Feel free to experiment with all the options you can find in device settings. ProMGR is based on the Fully Kiosk Browser's engine, read more about all possible options below.
Fully Kiosk Browser & App Lockdown Help - Fully Kiosk Browser
Android kiosk browser and app lockdown for interactive kiosk systems, digital signages and other unattended tablets with fullscreen and kiosk mode
⚠️
Most of the options may behave slightly differently on different devices. Always make sure to test your configuration on the desired device.
ℹ️
If you are unfamiliar with JSON formatting, it is advised to set these values in the Settings menu first.

Automatic app updates

ProMGR can download and apply updates to the running Flexopus Device Connect app. It provides two options to check for updates. Both options can be found under Device Owner Settings (PLUS) in the Settings menu.

Option A: Check every N minutes (APK File Update Interval)

To check for updates in a desired interval, set mdmApkToInstallInterval to the corresponding value in the configuration. This parameter accepts a number larger than 15 or 0 to disable the check. Example:

{
  …
  "mdmApkToInstallInterval": "30",
  …
}

Check for updates every 30 minutes

⚠️
Updating the app takes a few seconds, which can cause inconvenience if someone is using the display. We will do our best to schedule new releases at reasonable times, but new versions may become available during busy working hours.

Option B: Check once a day (APK File Update Time)

Another option is to check for updates once a day, specifying the time in mdmApkToInstallTime parameter, in HH:MM format. Example:

{
  …
  "mdmApkToInstallTime": "03:00",
  …
}
⚠️
Setting this will cause ProMGR to skip installing the app at provisioning but wait until the given time to download it. We recommend not using this option during provisioning.

Scheduled sleep/wake-up

For power management purposes, it is possible to schedule sleep and wake-up times on the device. When sleeping, the device will turn off the screen completely.

To set it from the Settings menu, navigate to Settings/Power Settings/Schedule Wakeup and Sleep ( PLUS ). Here you can set multiple rules with sleep and wake-up times.

Schedule Wakeup and Sleep Settings

To set it from the JSON configuration, you will have to use a JSON-encoded string with a strict format. The JSON description of the schedule looks like this:

[
  {
    "wakeUpTime": "07:00",
    "sleepTime": "18:00",
    "dayOfWeek": 8
  }
]

JSON description of a schedule

Finally, the sleepSchedule has to contain the string representation of the JSON formatted scheduled, with escaped special characters. You can use JSON Escape to create the string.

{
  …
  "sleepSchedule": "[\r\n  {\r\n    \"wakeUpTime\": \"07:00\",\r\n    \"sleepTime\": \"18:00\",\r\n    \"dayOfWeek\": 8\r\n  }\r\n]",
  …
}

Final configuration value for sleepSchedule

Hint: JSON pretty print is not required, you can omit the whitespaces for conciseness.

"sleepSchedule": "[{\"wakeUpTime\":\"07:00\",\"sleepTime\":\"18:00\",\"dayOfWeek\":8}]",
ℹ️
When the device is sleeping ProMGR can not detect screen taps, you will have to press the power button to wake the device. To wake up the device by tapping, use the Screensaver feature instead.

Screensaver

ProMGR can start a screensaver after a predefined idle time. Tapping the screen will stop the screensaver and return to the application.

To set a screensaver, navigate to Settings/Screensaver (PLUS). To enable it, set the Screensaver Timer property to a non-zero value. Feel free to set a custom screensaver wallpaper, or even multiple media sources in a playlist.

Screensaver settings

To achieve a sleep/wake-like screensaver, you will have to:

  • Set a Screensaver Timer (eg. 60 seconds)
  • Set a plain black Screensaver Wallpaper URL: fully://color#000000
  • Set Screensaver Brightness to a low value (0).

With these options, your device "goes to sleep" after 60 seconds of inactivity and wakes up once someone taps the screen. The JSON parameters for this example are the following:

{
  …
  "timeToScreensaverV2": "60",
  "screensaverWallpaperURL": "fully://color#000000",
  "screensaverBrightness": "0",
  …
}

Sleep-like screensaver