Customer Display

1. Second Screen Display

1.1 Introduction Android Presentation

Presentation is a class developed by Android for dual-screen display. It can be achieved in an APK, by giving Presentation a separate layout of view to achieve the same APK in the main screen and sub-screen display different view to achieve remarkable results. It works by calling the getDisplays method of DisplayManagerService to get the second display device. Pass the second display device as a parameter to Presentation, then implement its UI content in Presentation, and finally call the show method of Presentation to display the UI content on the second display device. The iMin models supporting dual screens are D1w, D3, D4, D4 Pro, Swan 1, Swan 1 Pro and Crane 1

1.2 Introduction API

Official API and sample documentation:

https://developer.android.com/reference/android/app/Presentation.html

Domestic documentation:

http://www.android-doc.com/reference/android/app/Presentation.html

Source code & demo:

Link Customer Display demo downloads

Presentation is a special dialog type officially provided by Google for displaying specific content on other non-home screen displays. When it is created, it needs to bind the display screen and configure context and resource according to the target display screen and its size.

1.3 Binding Display

  • Obtain and bind through the MediaRouter interface

1MediaRouter mediaRouter =(MediaRouter) context.getSystemService(Context.MEDIA_ROUTER_SERVICE);
2MediaRouter.RouteInfo route = mediaRouter.getSelectedRoute();
3if(route !=null){
4    Display presentationDisplay = route.getPresentationDisplay(); if(presentationDisplay !=null){
5           Presentation presentation =new MyPresentation(context, presentationDisplay); presentation.show();
  • Get and bind through the DisplayManager interface

 1DisplayManager displayManager =(DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE);
 2Display[] presentationDisplays = displayManager.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION);
 3if(presentationDisplays.length >0){
 4    // If there is more than one suitable presentation display, then we could consider
 5    // giving the user a choice. For this example, we simply choose the first display
 6    // which is the one the system recommends as the preferred presentation display.
 7    Display display = presentationDisplays[0];
 8    Presentation presentation =new MyPresentation(context, presentationDisplay);
 9    presentation.show();
10            }

1.4 Create Presentation

 1public class MyPresentation extends Presentation {
 2    /**
 3     * Rewrite constructor
 4     *
 5     * @param outerContext Context is not limited to Activity, it can also be Application Context or Service, etc.
 6     * @param display      Dislay of the secondary screen
 7     */
 8    public MyPresentation(Context outerContext, Display display) {
 9        super(outerContext, display);
10    }
11    @Override
12    protected void onCreate(Bundle savedInstanceState) {
13        super.onCreate(savedInstanceState);
14        setContentView(R.layout.xxx);
15        TextView textView = findViewById(R.id.text);
16    }
17}

1.5 Setting the secondary screen does not exit with the main screen

Usually Presentation is created to pass in the context of Activity, and the sub-screen will be displayed or hidden with the activity created to create a global sub-screen, which needs to add system pop-up window privileges to Presentation. As mentioned earlier, the context of the incoming Presentation can be Application or Service, provided that the system pop-up window permissions must be added, otherwise it will crash, so that Presentation can be newly created anywhere.

  • Add permissions to AndroidManifest.XML

1<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
  • Add code to Presentation

1getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);

Note

The system bullet window privileges of the Presentation will cover the ordinary Presentation, causing it unable to display; please dismiss the global Presentation before displaying the ordinary secondary screen, in order to make the switching smooth, the following code is recommended:

2. D1/D1 Pro/Falcon 1 vice Display

Customers can refer to the demo and operating instructions below for docking

D1/D1 Pro/Falcon 1 ScreenSDK

1. Initialization of SDK calls

Function:sendLCDCommand

Remarks:Send LCD control commands

1void sendLCDCommand(int flag);
2transfer:ILcdManager.getInstance(this).sendLCDString(int flag)

parameter:

flag –> 1 initialization、2 Wake up LCD、3 hibernate LCD、4 clear screen

2. Send a string to display on Secondary screen

Function:sendLCDString

Remarks:Send a string to display on Secondary screen

1void sendLCDString(String string);
2transfer:ILcdManager.getInstance(this).sendLCDString(String string);

parameter:

string –> string The content of the displayed string can display up to 5 Chinese characters or 10 English characters

3. Send a multi-line secondary screen content string

Function:sendLCDMultiString

Remarks:Send a multi-line secondary screen content string

1void sendLCDMultiString(in String[] text, in int[] align);
2transfer: ILcdManager.getInstance(this).sendLCDMultiString(in String[] text, in int[] align);

parameter:

test –> The content of each line of the multi-line secondary screen, the content of each line can be empty, and only occupies space at this time align –> The weight of the content of each row of the secondary screen (0 left, 1 middle, 2 right)

4. Send double-line secondary screen content string

Function:sendLCDDoubleString

Remarks:Send double-line secondary screen content string

1void sendLCDDoubleString(String topText, String bottomText);
2transfer: ILcdManager.getInstance(this).sendLCDDoubleString(String topText, String bottomText);

parameter:

topText/bottomText –> String displayed on the secondary screen

5. Send a picture to display on the secondary screen

Function:sendLCDBitmap

Remarks:Send double-line secondary screen content string

1void sendLCDBitmap(in Bitmap bitmap)
2transfer: ILcdManager.getInstance(this).sendLCDBitmap(in Bitmap bitmap);

parameter:

bitmap –> bitmap The displayed image object, with a maximum size of 240*320 pixels

6. set font size

Function:setTextSize

Remarks:set font size

1void setTextSize(in size)
2transfer: ILcdManager.getInstance(this).setTextSize(in size);

parameter:

size –> size Do not set too small or too large font default 55