android camera销毁慢,android camera 如何实现拍照后不停止预览功能

根据android api 中 camera.takePicture(

This method is only valid when preview is active (after startPreview()).Preview will be stopped after the image is taken; callers must call startPreview() again if they want to re-start preview or take more pictures. This should not be called between start() and stop().

After calling this method, you must not call startPreview() or take another picture until the JPEG callback has returned.)

发现要拍照需要调用的takePicture方法会停掉一下预览,我们现在自己的工程机器上发现,有一些低配置机上,调用这个方法后底层回调 Camera.PictureCallback要几秒钟时间,然后又只能在这个回调里重启预览startPreview(),导致画面有一个明显卡顿在拍照页面的效果。

现在我就想拍照不调用 camera.takePicture()可不可以实现?类似于有些连拍相机APP的效果(在网上下了一个连拍APP在我们工程机上可以实现,求其思路)!

7c8003838ad3b03b1cc736f534a35664.png

10分

拍照模式,肯定要停顿下,这个时间可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Camerax是Android相机框架的一部分,它提供了便捷的API来实现相机预览拍照功能。 要使用Camerax进行预览拍照,我们首先需要配置相机权限。在AndroidManifest.xml文件中,添加以下权限: ``` <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ``` 接下来,在activity的布局文件中添加一个预览用的TextureView: ``` <TextureView android:id="@+id/previewView" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 在相关的Activity中,我们使用Camerax来实现预览拍照功能。首先,在onCreate方法中初始化Camerax的实例: ``` PreviewConfig previewConfig = new PreviewConfig.Builder().build(); Preview preview = new Preview(previewConfig); ImageCaptureConfig captureConfig = new ImageCaptureConfig.Builder().build(); ImageCapture imageCapture = new ImageCapture(captureConfig); CameraX.bindToLifecycle(this, preview, imageCapture); ``` 然后,我们需要将预览显示在TextureView中: ``` TextureView previewView = findViewById(R.id.previewView); preview.setSurfaceProvider(previewView.getSurfaceProvider()); ``` 最后,我们可以在需要的时候进行拍照: ``` // 通过点击按钮触发拍照 Button captureButton = findViewById(R.id.captureButton); captureButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { File file = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), "IMG_" + System.currentTimeMillis() + ".jpg"); ImageCapture.OutputFileOptions outputFileOptions = new ImageCapture.OutputFileOptions.Builder(file).build(); imageCapture.takePicture(outputFileOptions, ContextCompat.getMainExecutor(MainActivity.this), new ImageCapture.OnImageSavedCallback() { @Override public void onImageSaved(@NonNull ImageCapture.OutputFileResults outputFileResults) { // 在此处对拍照后的图片进行处理 } @Override public void onError(@NonNull ImageCaptureException exception) { // 拍照出现错误时的处理 } }); } }); ``` 通过以上步骤,我们就可以使用Camerax来实现Android相机预览拍照功能。它提供了简单而强大的API,使得实现相机应用变得更加容易。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值