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

android:orientation="vertical" android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/button2"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_weight="1"

android:text="返回" />

android:id="@+id/surfaceView1"

android:layout_width="match_parent"

android:layout_height="300dp"

android:layout_weight="5" />

android:id="@+id/surfaceView2"

android:layout_width="match_parent"

android:layout_height="300dp"

android:layout_weight="5" />

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

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中开启权限了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值