Presentation多屏顯示回顧

在之前的關於Presentation的討論中,

https://blog.csdn.net/aaajj/article/details/90575622

使用了

Display aDisplay = mDisplayManager.getDisplay(5);

的測試形式,這個5是當前的一個輔助屏的id號,可以從

dumpsys display

可以查看到模擬屏幕的信息

Logical Displays: size=2

  Display 0:

    mDisplayId=0

 

  Display 5:

    mDisplayId=5

    mLayerStack=5

裏看到,這個id號大於0,會發生變化,比如連接hdmi顯示屏,每插拔一次,這個id就會變化(增加)。

 

Display aDisplay = mDisplayManager.getDisplay(5);的寫法只適用於初步調試,

可以修改爲Display aDisplay = mDisplayManager.getDisplay(0);來查看Presentation在主屏上的顯示效果。

 

正確的獲取Display的方法還是要用正常的方式,

調用DisplayManagergetDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION) 方法,

getDisplays得到系統中存在的Presentation屏幕列表,可能是wifi投屏,HDMI投屏或者虛擬顯示屏,見code,

所以我們測試Presentation的時候,可以使用開發者模式中繪圖的

Simulate secondary displays (模擬輔助顯示設備)開關 

或者連接hdmi設備,比如使用type-c轉接器連接顯示器,投影儀等

 

創建了幾個輔助顯示設備,getDisplays就獲取到幾個,一般只會有一個,所以一般情況下取其[0]即可,這個需根據實際情況處理。

Display有getDisplayId()方法可以獲取其對應的displayId

345    public Display[] getDisplays(String category) {
346        final int[] displayIds = mGlobal.getDisplayIds();
347        synchronized (mLock) {
348            try {
349                if (category == null) {
350                    addAllDisplaysLocked(mTempDisplays, displayIds);
351                } else if (category.equals(DISPLAY_CATEGORY_PRESENTATION)) {
352                    addPresentationDisplaysLocked(mTempDisplays, displayIds, Display.TYPE_WIFI);
353                    addPresentationDisplaysLocked(mTempDisplays, displayIds, Display.TYPE_HDMI);
354                    addPresentationDisplaysLocked(mTempDisplays, displayIds, Display.TYPE_OVERLAY);
355                    addPresentationDisplaysLocked(mTempDisplays, displayIds, Display.TYPE_VIRTUAL);
356                }
357                return mTempDisplays.toArray(new Display[mTempDisplays.size()]);
358            } finally {
359                mTempDisplays.clear();
360            }
361        }
362    }

參考資料

https://blog.csdn.net/m0_37657556/article/details/88187975

 

 

 

發佈了339 篇原創文章 · 獲贊 15 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章