Android9 雙屏異顯

雙屏異顯的三種方式

1、通過adb命令將app啟動(dòng)在指定的屏幕

adb shell am start -n com.android.demo/com.android.demo.MainActivity --display 1
adb shell am start -n com.android.demo/com.android.demo.MainActivity --user 0 --display 1

參數(shù)--display指定屏幕, display 0,表示第一塊屏幕; display 1,表示第2塊屏幕。
參數(shù)--user可以啟動(dòng)指定的用戶,在多用戶下有效,系統(tǒng)默認(rèn)是--user 0。

2、通過Presentation

Presentation是一個(gè)特殊的dialog,它的目的是顯示內(nèi)容到第二屏幕。在Presentation創(chuàng)建的時(shí)候關(guān)聯(lián)一個(gè)目標(biāo)設(shè)備,確定Presentation要顯示在哪個(gè)設(shè)備上,根據(jù)這個(gè)設(shè)備的信息來配置Presentation的context和resources信息。

獲取輔助屏幕有兩種方式:MediaRouter或者DisplayManager

MediaRouter mediaRouter = (MediaRouter) context.getSystemService(Context.MEDIA_ROUTER_SERVICE);
MediaRouter.RouteInfo route = mediaRouter.getSelectedRoute();---先獲取RouteInfo,再獲取Display
//MediaRouter.RouteInfo route = mediaRouter.getSelectedRoute(ROUTE_TYPE_USER)
if(route != null) {
     Display presentationDisplay = route.getPresentationDisplay();
     if (presentationDisplay != null) {
           Presentation presentation = new MyPresentation(context, presentationDisplay);
           presentation.show();
     }
}

DisplayManager mDisplayManager = getSystemService(Context.DISPLAY_SERVICE);
Display displays = mDisplayManager.getDisplay(1);

3. 通過startActivity

ActivityOptions options = ActivityOptions.makeBasic();
options.setLaunchDisplayId(1); //這里一直display0是第一塊屏;display1是第二塊屏

Intent secondIntent = new Intent();
ComponentName cn= new ComponentName("com.android.demo","com.android.demo.SecondActivity");
secondIntent .setComponent(cn);

//該句很重要,不添加則無法推送到副屏
secondIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(secondIntent, options.toBundle());

使用ActivityOptions指定顯示屏幕
為Intent增加標(biāo)志Intent.FLAG_ACTIVITY_MULTIPLE_TASK|Intent.FLAG_ACTIVITY_NEW_TASK

備注:
通過Activity的方式顯示在副屏上會(huì)帶來一些問題
1、SoftInputWindow,Toast只顯示在主屏
當(dāng)在副屏的Activity中調(diào)用上面控件時(shí),控件會(huì)顯示到主屏上

PopupWindow、Dialog可以正常顯示
但是傳入的Context必須是當(dāng)前Activity的

以上問題需要修改Framwork適配控件

未完待續(xù)……

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容