uni-app HBuilder X 升级到最新版 3.98后调用 baidu-facecollect-plugin插件无法唤醒摄像头

发布于 1周前 作者 ionicwang 来自 Uni-App

uni-app HBuilder X 升级到最新版 3.98后调用 baidu-facecollect-plugin插件无法唤醒摄像头

开发环境 版本号 项目创建方式
PC Mac
操作系统 14.1.1 (23B81) HBuilderX
3.98
产品分类:uniapp/App

<h2>示例代码:</h2>
<p>&lt;template&gt;</p>
<p>&lt;view&gt;</p>
<p>&lt;view class="uni-padding-wrap uni-common-mt"&gt;</p>
<p>&lt;button type="primary" [@click](/user/click)="faceDetect"&gt;人脸采集&lt;/button&gt;</p>
<p>&lt;button type="primary" [@click](/user/click)="testMethod"&gt;交互测试&lt;/button&gt;</p>
<p>&lt;image :src="<code>data:image/jpeg;base64,${imageData}</code>" style="width: 400rpx; height: 400rpx;"&gt;&lt;/image&gt;</p>
<p>&lt;/view&gt;</p>
<p>&lt;/view&gt;</p>
<p>&lt;/template&gt;</p>

<p>&lt;script&gt;</p>
<pre><code>// 获取 module  
const facecollectSdk = uni.requireNativePlugin('baidu-facecollect-plugin');  
const modal = uni.requireNativePlugin('modal');  
</code></pre>
<p>export default {</p>
<pre><code>data() {  
    return {  
        imageData:''  
    }  
},  
onLoad() {  
    //监听数据更新进度信息  
    var globalEvent = uni.requireNativePlugin('globalEvent');  
    globalEvent.addEventListener('faceApiEvent', function(result) {  
        modal.toast({  
            message: result.status,  
            duration: 3  
        });  
    });  

    this.initSdkConf();  
},  
methods: {  
    initSdkConf(){  
        if (uni.getSystemInfoSync().platform == 'ios') {  
            //替换自己项目的iOS授权ID  
            facecollectSdk.BrushFaceInit({"FACE_LICENSE_ID": "cxt-ht-all-face-ios"});  
        }  
        if (uni.getSystemInfoSync().platform == 'android') {  
            //替换自己项目的安卓授权ID  
            facecollectSdk.initSdkConf({"android-licenseId":"zhgd-test-face-android"});  
        }  
    },  
    faceDetect(){  
        facecollectSdk.faceDetect({"imageWidth":400, "cameraIndex":"FRONT"},(ret) =&gt; {  
            console.log(ret)  
            if(ret.status){  
                this.imageData = ret.base64Image.replace(/[\r\n]/g, "");  
            }  
            modal.toast({  
                message: ret.message,  
                duration: 3  
            });  
        })  
    },  
    testMethod(){  
        facecollectSdk.testMethod({  
                'mac': '1111111',  
                'template': 'bbbbbbbbb'  
            },  
            (ret) =&gt; {  
                modal.toast({  
                    message: ret,  
                    duration: 3  
                });  
            })  
    }  
}  
</code></pre>
<p>};</p>
<p>&lt;/script&gt;</p>

<h2>操作步骤:</h2>
<p>打包安装后,点击人脸采集</p>

<h2>预期结果:</h2>
<p>正常打开摄像头</p>

<h2>实际结果:</h2>
<p>未打开摄像头提示请初始化SDK</p>

![https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20231128/898bfcde4365ec323c2cc773777d0c92.png](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20231128/898bfcde4365ec323c2cc773777d0c92.png)

<h2>bug描述:</h2>
<p>HBuilder X  升级到最新版 3.98.2023112510 后,通过在线打包调用 baidu-facecollect-plugin插件,无法唤醒摄像头</p>

1 回复

uni-app 中,使用 HBuilder X 升级到最新版本后,调用 baidu-facecollect-plugin 插件无法唤醒摄像头,可能是由于以下原因导致的:

1. 插件兼容性问题

  • 原因HBuilder X 升级到 3.98 后,可能对某些插件的兼容性产生了影响,特别是涉及到原生功能的插件。
  • 解决方案
    • 检查 baidu-facecollect-plugin 插件是否有更新版本,确保插件与最新的 HBuilder X 版本兼容。
    • 如果插件没有更新,可以尝试联系插件开发者,反馈问题并寻求解决方案。

2. 权限问题

  • 原因:在最新版本的 HBuilder X 中,可能对权限管理更加严格,导致摄像头权限未被正确授予。
  • 解决方案
    • 确保在 manifest.json 中正确配置了摄像头权限:
      {
        "permission": {
          "scope.camera": {
            "desc": "需要访问摄像头以进行人脸采集"
          }
        }
      }
    • 在代码中动态请求摄像头权限:
      uni.authorize({
        scope: 'scope.camera',
        success() {
          console.log('摄像头权限已授权');
        },
        fail() {
          console.log('摄像头权限未授权');
        }
      });

3. 插件配置问题

  • 原因:插件配置可能未正确加载或初始化。
  • 解决方案
    • 确保在 pages.jsonmanifest.json 中正确配置了插件:
      {
        "plugins": {
          "baidu-facecollect-plugin": {
            "version": "x.x.x",
            "provider": "xxxx"
          }
        }
      }
    • 在代码中正确初始化插件:
      const faceCollectPlugin = uni.requireNativePlugin('baidu-facecollect-plugin');
      faceCollectPlugin.init({
        // 初始化配置
      });

4. HBuilder X 配置问题

  • 原因HBuilder X 的某些配置可能影响了插件的正常运行。
  • 解决方案
    • 尝试清理项目缓存并重新编译:
      • HBuilder X 中,点击菜单栏的 运行 -> 清理项目缓存,然后重新编译运行。
    • 检查 HBuilder X运行配置,确保选择了正确的运行环境(如真机调试、模拟器等)。

5. 真机调试问题

  • 原因:在真机调试时,某些设备可能存在兼容性问题。
  • 解决方案
    • 尝试在不同的设备上运行,检查是否是特定设备的问题。
    • 确保设备的摄像头功能正常,并且没有其他应用占用摄像头。

6. 日志排查

  • 原因:无法唤醒摄像头可能是由于某些错误未被捕获。
  • 解决方案
    • 在代码中添加详细的日志输出,检查插件调用过程中是否有错误信息:
      faceCollectPlugin.startCamera({
        success(res) {
          console.log('摄像头启动成功', res);
        },
        fail(err) {
          console.error('摄像头启动失败', err);
        }
      });
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!