Presentation 雙屏異顯
阿新 • • 發佈:2018-12-24
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);