1. 程式人生 > >Presentation 雙屏異顯

Presentation 雙屏異顯

DisplayManager

    private void showOtherDisPlay() {
        DisplayManager displayManager = (DisplayManager) this.getSystemService(Context.DISPLAY_SERVICE);
        presentationDisplays = displayManager.getDisplays();
        if (presentationDisplays.length > 1) {
            presentation = new DifferentDisplay(getApplicationContext(), presentationDisplays[1
]); presentation.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); presentation.show(); videoView = presentation.videoView; rn_layout = presentation.localView; JCManager.getInstance().mediaDevice.specifyCamera(1, 640, 320); JCMediaDeviceVideoCanvas mLocalCanvas = JCManager.getInstance
().mediaDevice.startCameraVideo(JCMediaDevice.RENDER_FULL_CONTENT); mLocalCanvas.getVideoView().setZOrderMediaOverlay(true); mLocalCanvas.getVideoView().setId(View.generateViewId()); rn_layout.addView(mLocalCanvas.getVideoView(), 0); } else { // presentation = new DifferentDisplay( this, presentationDisplays[0
]); } }

獲取螢幕的方式還用另一種

Presentation

public class DifferentDisplay extends Presentation {
    public VideoView videoView;
    public RelativeLayout localView;

    public DifferentDisplay(Context outerContext, Display display) {
        super(outerContext, display);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.play_video);

        videoView = (VideoView ) findViewById(R.id.video_view);
        localView = findViewById(R.id.loacol_view);
    }

}

此為dialog,需要注意的是此dialog的生命週期是跟隨activity的,當activity不再主顯示那麼此Presentation 就會銷燬。

最終採用的方案是將dialog級別設定為懸浮視窗:

presentation = new DifferentDisplay(getApplicationContext(), presentationDisplays[1]);
            presentation.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);