软件编程
位置:首页>> 软件编程>> Android编程>> Android快速实现无预览拍照功能

Android快速实现无预览拍照功能

作者:-Yee-  发布时间:2023-12-23 12:23:38 

标签:Android,拍照

本文实例为大家分享了Android实现无预览拍照功能的具体代码,供大家参考,具体内容如下

实现思路:

把预览的SurfaceView的宽高设置为肉眼看不出的值,例如0.1dp,其他的就是自定义相机的标准步骤了!

当然,网上自定义相机的文章多的去了,我是不可能再做老生常谈的事的,在这里我推荐一个很好用的第三方库,也许很多人已经了解过并且用过,没用过的同学可以试试,亲测好用。

废话不多说,先上源码地址 

这里简单介绍一下用法:

1、在gradle里添加库的依赖:compile 'com.wonderkiln:camerakit:0.13.1'

2、布局文件代码:


<LinearLayout
  android:id="@+id/ll_content"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:orientation="vertical">

<Button
   android:id="@+id/btn_test"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="测试"
   android:layout_gravity="center_horizontal"/>

<com.wonderkiln.camerakit.CameraView
   android:id="@+id/camera"
   android:layout_width="0.1dp"
   android:layout_height="0.1dp"
   android:adjustViewBounds="true"
   camerakit:ckFacing="front" />

</LinearLayout>

camerakit:ckFacing="front" 表示用前置摄像头,其他属性请参照官方文档。

注意:宽高不能设置为0,否则不能拍照。

3、Java代码


public class MainActivity extends BaseActivity {
@BindView(R.id.btn_test)
Button btnTest;
@BindView(R.id.camera)
CameraView cameraView;
@BindView(R.id.ll_content)
LinearLayout llContent;

@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 ButterKnife.bind(this);
 initView();
}

@Override
protected void onResume() {
 super.onResume();
 cameraView.start();
}

@Override
protected void onPause() {
 // TODO Auto-generated method stub
 cameraView.stop();
 super.onPause();
}

private void initView() {
 //设置回调
 cameraView.addCameraKitListener(new CameraKitEventListener() {
  @Override
  public void onEvent(CameraKitEvent cameraKitEvent) {

}

@Override
  public void onError(CameraKitError cameraKitError) {

}

@Override
  public void onImage(CameraKitImage cameraKitImage) {
   ImageView imageView = new ImageView(MainActivity.this);
   imageView.setImageBitmap(cameraKitImage.getBitmap());
   llContent.addView(imageView);
  }

@Override
  public void onVideo(CameraKitVideo cameraKitVideo) {

}
 });
}

@OnClick(R.id.btn_test)
public void onViewClicked() {
 //拍照
 cameraView.captureImage();
}

}

来源:https://blog.csdn.net/qq_24834241/article/details/83013586

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com