11package com.freerdp.freerdpcore.presentation;
13import android.app.Activity;
14import android.app.ActivityOptions;
15import android.content.Intent;
16import android.hardware.display.DisplayManager;
17import android.view.Display;
19import androidx.appcompat.app.AlertDialog;
21import com.freerdp.freerdpcore.R;
23class ExternalDisplayManager
25 private final Activity activity;
26 private final DisplayManager displayManager;
28 ExternalDisplayManager(Activity activity)
30 this.activity = activity;
31 this.displayManager = (DisplayManager)activity.getSystemService(Activity.DISPLAY_SERVICE);
34 void launchSessionWithDisplayPicker(String refStr)
36 Display[] secondary = getSecondaryDisplays();
37 if (secondary.length == 0)
39 launchSessionOnDisplay(refStr, Display.DEFAULT_DISPLAY);
43 String[] labels =
new String[1 + secondary.length];
44 labels[0] = activity.getString(R.string.display_main_screen);
45 for (
int i = 0; i < secondary.length; i++)
46 labels[i + 1] = secondary[i].getName();
48 new AlertDialog.Builder(activity)
49 .setTitle(R.string.select_display_title)
52 int id = (which == 0) ? Display.DEFAULT_DISPLAY
53 : secondary[which - 1].getDisplayId();
54 launchSessionOnDisplay(refStr,
id);
59 private void launchSessionOnDisplay(String refStr,
int displayId)
61 Intent intent =
new Intent(activity, SessionActivity.class);
62 intent.putExtra(SessionActivity.PARAM_CONNECTION_REFERENCE, refStr);
63 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
64 ActivityOptions opts = ActivityOptions.makeBasic();
65 opts.setLaunchDisplayId(displayId);
66 activity.startActivity(intent, opts.toBundle());
69 private Display[] getSecondaryDisplays()
71 return displayManager.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION);