仿抖音短视频源码开启双目摄像头实时预览



    

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

创新互联专注于企业营销型网站建设、网站重做改版、双滦网站定制设计、自适应品牌网站建设、H5建站购物商城网站建设、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为双滦等各大城市提供网站开发制作服务。

public class CameraTestActivity extends Activity implements  SurfaceHolder.Callback{
    public Button mButton;
    private Camera mCamera1,mCamera2;
    private SurfaceView surfaceView1,surfaceView2;
    private SurfaceHolder mSurfaceHolder,mSurfaceHolder2;
    private int cameraId = 1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_camera);
        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
        initView();
        initView2();
        initButton();
    }
    //视图初始化(摄像头1)
    private void initView() {
        surfaceView1 = findViewById(R.id.surfaceView1);//获得SurfaceView的实例
        mSurfaceHolder = surfaceView1.getHolder();//获得SurfaceView的Holder
        mSurfaceHolder.addCallback(this);//设置Holder的回调
    }
    //视图初始化(摄像头2)
    private void initView2(){
        surfaceView2 = findViewById(R.id.surfaceView2);//获得SurfaceView的实例
        mSurfaceHolder2 = surfaceView2.getHolder();//获得SurfaceView的Holder
        mSurfaceHolder2.addCallback(this);//设置Holder的回调
    }
    //打开照相机1
    public void CameraOpen() {
        try
        {
            //打开摄像机1
            mCamera1 = Camera.open(cameraId);
            mCamera1.setDisplayOrientation(270);
            //绑定Surface并开启预览
            mCamera1.setPreviewDisplay(mSurfaceHolder);
            mCamera1.startPreview();
        } catch (IOException e) {
            mCamera1.release();
            mCamera1 = null;
            Toast.makeText(CameraTestActivity.this, "surface created failed", Toast.LENGTH_SHORT).show();
        }
    }
    //打开照相机2
    public void CameraOpen2() {
        try
        {
            //打开摄像机2
            mCamera2 = Camera.open(cameraId - 1);
            mCamera2.setDisplayOrientation(270);
            //绑定Surface并开启预览
            mCamera2.setPreviewDisplay(mSurfaceHolder2);
            mCamera2.startPreview();
        } catch (IOException e) {
            mCamera2.release();
            mCamera2 = null;
            Toast.makeText(CameraTestActivity.this, "surface created failed", Toast.LENGTH_SHORT).show();
        }
    }
    //回调初始化
    private void initButton() {
        //返回上个界面的按钮
        mButton = findViewById(R.id.button2);
        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               Intent intent = new Intent(CameraTestActivity.this,MainActivity.class);
               startActivity(intent);
            }
        });
    }
    @Override
    public void surfaceCreated(SurfaceHolder surfaceHolder) {
        //检查权限
        if (ContextCompat.checkSelfPermission(CameraTestActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
        } else {
            CameraOpen();
            CameraOpen2();
        }
    }
    @Override
    public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {
        Camera.Parameters parameters = mCamera1.getParameters();
        mCamera1.setParameters(parameters);
        mCamera1.startPreview();
        Camera.Parameters parameters2 = mCamera2.getParameters();
        mCamera2.setParameters(parameters2);
        mCamera2.startPreview();
    }
    @Override
    public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
        mCamera1.stopPreview();
        mCamera1.release();
        mCamera1 = null;
        mCamera2.stopPreview();
        mCamera2.release();
        mCamera2 = null;
    }
}

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


    

网页名称:仿抖音短视频源码开启双目摄像头实时预览
分享路径:http://myzitong.com/article/jcgsde.html