更新记录

1.0.38(2023-12-29)

修复没有打开摄像头后,一开始就点击关闭和隐藏的闪退问题

1.0.37(2023-12-27)

修复打开摄像头隐藏后,如果直接隐藏中关闭,再打开会闪退的问题。

1.0.36(2023-12-22)

查看更多

平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.6.8,Android:6.0,iOS:不支持 × × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

安卓原生自定义前后摄像头拍照,可同时设置前后摄像头预览,照片返回为base64

照片的大小不是设置的预览页面显示的大小,返回的图片宽高统一为设备宽高的大小。 需要打包自定调试包测试

调用插件 :

    import {
        openCamera,
        getCameraBase64,
        closedCamera,
        hideCameraH,
        hideCameraQ,
    } from "@/uni_modules/mushan-camera";

页面设置:

        <button @click="switchAndCapture">打开前后摄像头</button>
        <button @click="openCameraH">打开后视频</button>
        <button @click="openCameraQ">打开前视频</button>
        <button @click="UTSgetCameraBase64(0)">后摄像头拍照</button>
        <button @click="UTSgetCameraBase64(1)">前摄像头拍照</button>
        <button @click="closedCamera(0)">关闭后摄像头</button>
        <button @click="closedCamera(1)">关闭前摄像头</button>
        <button @click="hideCameraH(0)">隐藏后摄像头</button>
        <button @click="hideCameraH(1)">显示后摄像头</button>
        <button @click="hideCameraQ(0)">隐藏前摄像头</button>
        <button @click="hideCameraQ(1)">显示前摄像头</button>
        <image :src="img" mode="aspectFill"></image>

js调用插件:

    import{
        openCamera,
        getCameraBase64,
        closedCamera,
        hideCameraH,
        hideCameraQ,
    } from "@/uni_modules/mushan-camera";

    async function switchAndCapture(){
        await openCameraH()
        await openCameraQ()
    }

    //前摄像头
    async function openCameraH(){
        return new Promise((resolve, reject) => {
            let parame = {
                cameraIds:'0',   //摄像头选择,0为后,1为前
                someQualitys:10, //拍照后的图片质量通常都是1 - 100
                widthViews:0.5,  //预览显示的宽,按设备整体宽度百分比1为手机的宽。0.5为一半
                heightViews:0.5, //预览显示的高,按设备整体高度百分比1为手机的宽。0.5为一半
                topMargins:0.5,  //与顶部的距离,1为整个手机的高距离,0.5为一半
                leftMargins:0,  //与左边的距离,1为整个手机的宽距离,0.5为一半
            }
            openCamera(parame.cameraIds,parame.someQualitys,parame.widthViews,parame.heightViews,parame.topMargins,parame.leftMargins,res=>{
                resolve()
            })
        })
    }

    //后摄像头
    async function openCameraQ(){
        return new Promise((resolve, reject) => {
            let parame = {
                cameraIds:'1',
                someQualitys:80,
                widthViews:0.5,
                heightViews:0.5,
                topMargins:0.5,
                leftMargins:0,
            }
            openCamera(parame.cameraIds,parame.someQualitys,parame.widthViews,parame.heightViews,parame.topMargins,parame.leftMargins,res=>{
                resolve()
            })
        })
    }

    let img = ref('');
    async function UTSgetCameraBase64(num){
        getCameraBase64(num,(res)=>{
            img.value = filterBase64(`data:image/jpeg;base64,${res}`);
            console.log(img.value)
        })
    }
    function filterBase64(codeImages){
        return codeImages.replace(/[\r\n]/g, "");
    }

隐私、权限声明

1. 本插件需要申请的系统权限列表:

<uses-permission android:name="android.permission.CAMERA" />

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问