private final List<CameraPreviewHolder> cameraPreviewHolderList = new ArrayList<>(2);
cameraPreviewHolderList.get(1).toSecondary();//用较小尺寸创造副屏
public boolean onKeyDown(int keyCode, KeyEvent event) {
AppLogger.e("keyCode=" + keyCode + ", event=" + event.getAction());
if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN ||
keyCode == KeyEvent.KEYCODE_DPAD_LEFT ||
keyCode == KeyEvent.KEYCODE_DPAD_UP ||
keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
long diff = System.currentTimeMillis() - lastExchangeTime;
if (this.deviceCount == 2 && diff >= 5000 && this.cameraPreviewList.size() > 0) {
synchronized (this.cameraPreviewList) {
this.lastExchangeTime = System.currentTimeMillis();
// 交换主副屏
exchangeCameraPreview();
}
}
return true;
}
return super.onKeyDown(keyCode, event);
}
private void exchangeCameraPreview() {
final int previewSize = this.cameraPreviewList.size();
final CameraPreviewHolder primaryHolder = cameraPreviewHolderList.get(0);
final CameraPreviewHolder secondaryHolder = cameraPreviewHolderList.get(1);
if (previewSize == 1) {
final CameraPreview cameraPreview = this.cameraPreviewList.get(0);
cameraPreview.stop();
if (primaryHolder.videoShowing()) {
primaryHolder.hideVideo();
cameraPreview.play(secondaryHolder.getSurfaceView());
secondaryHolder.showVideo();
} else {
secondaryHolder.hideVideo();
cameraPreview.play(primaryHolder.getSurfaceView());
primaryHolder.showVideo();
}
} else if (previewSize == 2) {
final CameraPreview primaryPreview = this.cameraPreviewList.get(0);
final CameraPreview secondaryPreview = this.cameraPreviewList.get(1);
primaryPreview.stop();
secondaryPreview.stop();
if (primaryPreview.getSurfaceView() == primaryHolder.getSurfaceView()) {
primaryPreview.play(secondaryHolder.getSurfaceView());
secondaryPreview.play(primaryHolder.getSurfaceView());
} else {
primaryPreview.play(primaryHolder.getSurfaceView());
secondaryPreview.play(secondaryHolder.getSurfaceView());
}
}
}
public void toSecondary() {
if (this.surfaceView == null) {
return;
}
int height = (int) (Settings.DISPLAY_HEIGHT * 0.3);
int width = (int) ((16 / 9.0) * height);
AppLogger.e("DISPLAY_HEIGHT=" + Settings.DISPLAY_HEIGHT + ", height=" + height + ", width=" + width);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(width, height);
params.topMargin=6;
params.leftMargin=6;
this.surfaceView.setLayoutParams(params);
this.surfaceView.getHolder().setFixedSize(width, height);
this.surfaceView.setZOrderMediaOverlay(true);
this.surfaceView.setZOrderOnTop(true);
if (this.noVideoView != null) {
this.noVideoView.setLayoutParams(new FrameLayout.LayoutParams(width, height));
ImageView imageView=noVideoView.findViewById(R.id.no_video);
RelativeLayout.LayoutParams rlparams = new RelativeLayout.LayoutParams(120, 120);
rlparams.addRule(RelativeLayout.CENTER_IN_PARENT);
imageView.setLayoutParams(rlparams);
}
}