<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:id="@+id/button2"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:text="返回"/><SurfaceViewandroid:id="@+id/surfaceView1"android:layout_width="match_parent"android:layout_height="300dp"android:layout_weight="5"/><SurfaceViewandroid:id="@+id/surfaceView2"android:layout_width="match_parent"android:layout_height="300dp"android:layout_weight="5"/></LinearLayout>

紧接着在对应的类中实现SurfaceHolder.Callback接口,并重写surfaceCreated、surfaceChanged、surfaceDestroyed方法。

publicclassCameraTestActivityextendsActivityimplementsSurfaceHolder.Callback{publicButtonmButton;privateCameramCamera1,mCamera2;privateSurfaceViewsurfaceView1,surfaceView2;privateSurfaceHoldermSurfaceHolder,mSurfaceHolder2;privateintcameraId=1;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_camera);this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);initView();initView2();initButton();}//视图初始化(摄像头1)privatevoidinitView(){surfaceView1=findViewById(R.id.surfaceView1);//获得SurfaceView的实例mSurfaceHolder=surfaceView1.getHolder();//获得SurfaceView的HoldermSurfaceHolder.addCallback(this);//设置Holder的回调}//视图初始化(摄像头2)privatevoidinitView2(){surfaceView2=findViewById(R.id.surfaceView2);//获得SurfaceView的实例mSurfaceHolder2=surfaceView2.getHolder();//获得SurfaceView的HoldermSurfaceHolder2.addCallback(this);//设置Holder的回调}//打开照相机1publicvoidCameraOpen(){try{//打开摄像机1mCamera1=Camera.open(cameraId);mCamera1.setDisplayOrientation(270);//绑定Surface并开启预览mCamera1.setPreviewDisplay(mSurfaceHolder);mCamera1.startPreview();}catch(IOExceptione){mCamera1.release();mCamera1=null;Toast.makeText(CameraTestActivity.this,"surfacecreatedfailed",Toast.LENGTH_SHORT).show();}}//打开照相机2publicvoidCameraOpen2(){try{//打开摄像机2mCamera2=Camera.open(cameraId-1);mCamera2.setDisplayOrientation(270);//绑定Surface并开启预览mCamera2.setPreviewDisplay(mSurfaceHolder2);mCamera2.startPreview();}catch(IOExceptione){mCamera2.release();mCamera2=null;Toast.makeText(CameraTestActivity.this,"surfacecreatedfailed",Toast.LENGTH_SHORT).show();}}//回调初始化privatevoidinitButton(){//返回上个界面的按钮mButton=findViewById(R.id.button2);mButton.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewview){Intentintent=newIntent(CameraTestActivity.this,MainActivity.class);startActivity(intent);}});}@OverridepublicvoidsurfaceCreated(SurfaceHoldersurfaceHolder){//检查权限if(ContextCompat.checkSelfPermission(CameraTestActivity.this,Manifest.permission.CAMERA)!=PackageManager.PERMISSION_GRANTED){}else{CameraOpen();CameraOpen2();}}@OverridepublicvoidsurfaceChanged(SurfaceHoldersurfaceHolder,inti,inti1,inti2){Camera.Parametersparameters=mCamera1.getParameters();mCamera1.setParameters(parameters);mCamera1.startPreview();Camera.Parametersparameters2=mCamera2.getParameters();mCamera2.setParameters(parameters2);mCamera2.startPreview();}@OverridepublicvoidsurfaceDestroyed(SurfaceHoldersurfaceHolder){mCamera1.stopPreview();mCamera1.release();mCamera1=null;mCamera2.stopPreview();mCamera2.release();mCamera2=null;}}

记得别忘了在AndroidMainfest.xml中开启权限了

<uses-permissionandroid:name="android.permission.CAMERA"/><uses-featureandroid:name="android.hardware.camera"/>