Linux上開發APP太過緩慢或者動畫不夠炫酷?該使用Android系統進行開發啦!本文分享如何快速在SX-3568商顯主板的Android系統上實現雙屏異顯。
本次使用的平臺為致遠電子SX-3568系列智慧商顯主板,支持HDMI、eDP、LVDS、MIPI DSI等多種顯示接口,搭載高性能GPU,具備視頻解碼能力,支持4K 60FPS顯示。本次選用MIPIDSI屏幕作為主屏,HDMI屏幕作為副屏進行講解,使用SX-3568在Android系統上實現雙屏異顯,可以應用在商業顯示器、智能家居等多種應用場景。
?確認主副屏
使用命令getprop | grep vendor.hwc.device可以查看當前的主副屏。對應屬性vendor.hwc.device.primary為主屏,vendor.hwc.device.extend為副屏。可以看到此處主屏為MIPI DSI,副屏為HDMI。
?代碼實現
在MainAvctivity中實現showSecondByActivity方法,用于調用第二個Avctivity并綁定顯示器。
private void showSecondByActivity(Context context){ ActivityOptions options = ActivityOptions.makeBasic(); MediaRouter mediaRouter = (MediaRouter) context.getSystemService(Context.MEDIA_ROUTER_SERVICE); MediaRouter.RouteInfo route = mediaRouter.getSelectedRoute(MediaRouter.ROUTE_TYPE_LIVE_VIDEO); if (route != null) { Display presentationDisplay = route.getPresentationDisplay(); options.setLaunchDisplayId(presentationDisplay.getDisplayId()); Intent intent = new Intent(MainActivity.this, SecondActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent, options.toBundle()); }}
第一步,在showSecondByActivity函數中,首先通過ActivityOptions類的makeBasic方法,創建一個基本的ActivityOptions類變量 ,ActivityOptions是一個可用于在新建一個Activity時候,將Bundle信息傳遞給新Activity的類,用于后面在創建新的Activity時候通過setLaunchDisplayId指定 SecondActivity 在啟動后應顯示在副屏上;
第二步,獲取系統中的MediaRouter系統服務,用于后續獲取顯示屏幕ID來指定屏幕。MediaRouter Service是一個用于多媒體路由的系統服務,getSelectedRoute方法會返回一個可用的RouteInfo,也就是多媒體路由的對應信息。然后使用getPresentationDisplay從路由信息中獲取一個新的Presentation,Presentation是一個特殊的Dialog,可以在創建它的時候將它直接關聯到新的顯示器上;
第三步,調用getDisplayId方法獲取顯示器ID,將ActivityOptions的DisplayId設置為新的顯示器的ID,再通過Intent在新的Presentation創建一個新的Activity即可。這樣在新的Activity上顯示的內容就會跟隨新的Presentation顯示在副屏上。
然后在MainAvctivity中就可以直接調用showSecondByActivity,比如在onCreate方法中調用。這里讓它顯示activity_main.xml里面的內容。
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); showSecondByActivity(MainActivity.this);}
SecondActivity類的內容用于測試,僅僅用于顯示不同內容。這里讓它顯示activity_second.xml里面的內容,并讓activity_second.xml的內容和activity_main.xml有差異。
public class SecondActivity extends AppCompatActivity {
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); }}
最后修改AndroidManifest,xml中內容。Activity的多顯示器支持需要支持。同時 application 或者 activity 需要支持分屏屬性即或者標簽下設置新的屬性屬性用于指定應用支持多窗口模式。
顯示效果
編譯并運行后,可以在SX-3568上看到雙屏異顯的效果如下圖,其中MIPI DSI主屏上顯示為activity_main.xml的內容;HDMI副屏上顯示為activity_second.xml的內容。
-
Android
+關注
關注
12文章
3936瀏覽量
127405 -
主板
+關注
關注
53文章
1883瀏覽量
70842 -
系統
+關注
關注
1文章
1017瀏覽量
21344
發布評論請先 登錄
相關推薦
評論