uni-app HBuilder X 升级到最新版 3.98后调用 baidu-facecollect-plugin插件无法唤醒摄像头
uni-app HBuilder X 升级到最新版 3.98后调用 baidu-facecollect-plugin插件无法唤醒摄像头
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
PC | Mac | |
操作系统 | 14.1.1 (23B81) | HBuilderX |
3.98 |
产品分类:uniapp/App
<h2>示例代码:</h2>
<p><template></p>
<p><view></p>
<p><view class="uni-padding-wrap uni-common-mt"></p>
<p><button type="primary" [@click](/user/click)="faceDetect">人脸采集</button></p>
<p><button type="primary" [@click](/user/click)="testMethod">交互测试</button></p>
<p><image :src="<code>data:image/jpeg;base64,${imageData}</code>" style="width: 400rpx; height: 400rpx;"></image></p>
<p></view></p>
<p></view></p>
<p></template></p>
<p><script></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) => {
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) => {
modal.toast({
message: ret,
duration: 3
});
})
}
}
</code></pre>
<p>};</p>
<p></script></p>
<h2>操作步骤:</h2>
<p>打包安装后,点击人脸采集</p>
<h2>预期结果:</h2>
<p>正常打开摄像头</p>
<h2>实际结果:</h2>
<p>未打开摄像头提示请初始化SDK</p>

<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.json
或manifest.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); } });
- 在代码中添加详细的日志输出,检查插件调用过程中是否有错误信息: