1. 程式人生 > >android 擴充套件螢幕 多屏顯示

android 擴充套件螢幕 多屏顯示

Android現在可以讓您的應用在輔助顯示器上顯示不同的內容程式,以有線或Wi-Fi將外接顯示輸出連線到使用者裝置上,顯示獨特的內容。要為輔助顯示屏建立獨特的內容,您需要擴充套件Presentation類,並實現onCreate()回撥方法。在onCreate()中,呼叫setContentView()來指定您要在輔助顯示屏上顯示的UI。作為Dialog類的擴充套件,Presentation類提供了一個區域,在其中,您的應用可以在輔助顯示屏上顯示不同的UI。

為了獲取顯示Presentation的輔助顯示屏,您可以使用DisplayManager或者MediaRouter的API。其中,使用DisplayManagerAPI可以使您獲得當前連線的所有顯示屏的列舉,而MediaRouter則可以使您直接訪問系統為Presentation設定的預設顯示輸出。

您可以給MediaRouter.getSelectedRoute()傳一個ROUTE_TYPE_LIVE_VIDEO來獲得演示的預設顯示器。它將返回一個MediaRouter.RouteInfo物件,描述了系統為視訊演示所選擇的當前路由。如果MediaRouter.RouteInfo不空,呼叫getPresentationDisplay()即可獲取當前連線的顯示屏物件:Display。

然後,您可以將這個Display物件傳入Presentation的建構函式。演示就會出現在輔助顯示屏上了。

為在執行時即時檢測新接入的顯示器,需要先建立一個MediaRouter.SimpleCallback的例項。在其中,您需要實現onRoutePresentationDisplayChanged()回撥方法。當新的顯示器連線時,系統會呼叫這個回撥方法。然後將MediaRouter.SimpleCallback加上ROUTE_TYPE_LIVE_VIDEO路由型別傳遞給MediaRoute.addCallback()來進行註冊。當收到onRoutePresentationDisplayChanged()回撥時,只要如上所述的呼叫MediaRouter.getSelectedRoute()即可。

為針對輔助顯示進一步優化Presentation的UI,您需要為您的應用或activity指定標籤為android:presentationTheme主題。

請留意,連線到使用者移動裝置的螢幕往往有較大的螢幕尺寸和不同的螢幕密度。由於螢幕特徵可能不同,您需要為大型顯示裝置提供特定優化的資源。如果您需要從Presentation中獲取額外的資源,呼叫getContext().getResources()來獲取針對這種顯示的資源物件。這樣,您的應用就可以根據輔助顯示器的尺寸和密度提供最合適的資源了。

欲瞭解更多資訊以及一些程式碼示例,請參閱Presentation類文件。

http://developer.android.com/about/versions/jelly-bean.html#42-external-display