Android实现无预览拍照

本文介绍了如何在Android应用中实现无预览的拍照功能。通过直接调用系统相机,无需显示预览界面,简化了拍照流程。在拍照完成后,使用onPictureTaken回调保存图片到本地,并在回调中移除SurfaceView。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:需求是收到拍照的命令后实现无感盲拍,不需要预览,不需要交互,然后保存到本地,既然不需要预览界面,那就可以直接调用系统相机,方便快捷

创建activity
布局文件
在这里插入图片描述
声明要用的成员变量
在这里插入图片描述
在要保存图片的地方创建文件夹
在这里插入图片描述
开始拍照

private fun takePhoto() {
   
        val holder = surface_view.holder
        holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS)
        holder.addCallback(object : SurfaceHolder.Callback {
   
            override fun surfaceCreated(holder: SurfaceHolder) {
   
                Log.e("yd", "surface created")
                try {
   
                    mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT)  //打开前置摄像头
                    Log.e("yd", "camera open")
                    try {
   
                        mCamera?.setPreviewDisplay(holder)
                    } catch (e: Exception) {
   
                        e.printStackTrace()
                    }
                    mCamera?.startPreview()
                    Log.e("yd", "start preview")
                    mCamera?.takePicture(null, null, this@CameraNoPreviewActivity)
                } catch (e: Exception) {
   
                    e.printStackTrace()
                    if (mCamera != null) {
   
                        mCamera?.release()
                    }
                }
            }

            override fun surfaceChanged(
                holder
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值