更新记录
1.2.5(2025-04-28)
- Android支持设置分辨率
1.2.4(2025-03-10)
- Android支持设置横屏
1.2.3(2025-03-06)
- Android支持设置前置/后置摄像头
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:4.4 - 12.0 | armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 | 适用版本区间:13 - 16 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
文档矫正插件介绍
应用场景
-
日常生活中,APP主要满足拍照和清晰度即可,但在一些特殊的业务场景中,如进件、签署、校验、批改等提交资料的情况下,对特别是银行卡、身份证、合同、试卷、纸张文档这些资料的审核要求较高。
-
普通拍照的情况下用户必须很刻意地去摆正、调整拍摄角度及距离,甚至拍很多张,才能上传一张满意的文档效果图。还可以连续上传很多张,让审核方一个个去看,都是以防审核阶段驳回。
-
一旦被驳回,就可能又要重复这波操作,审核方也要重新审一遍,非常冗余。双方都会很煎熬,流程进展也非常缓慢,较大的业务甚至会影响企业的日盈利。
-
一些手机原生相机支持文档捕捉/修正,但需要先离开APP去拍照,在相册里调整,再回到APP中的相册去选择,这样也很麻烦
该功能就是解决这一现象,减少资料驳回的时间浪费,让双方都可以轻松地完成业务节点,提高办理的效率和成功率
平台支持
Android Api 19+、iOS 13+
请求权限
摄像头
- Android:AndroidManifest.xml 中配置
<uses-permission android:name="android.permission.CAMERA" />
- iOS:Info.plist 中配置
<key>NSCameraUsageDescription</key>
<string>xxxAPP需要您的同意,才能使用摄像头,以便于xxx</string>
功能一览
功能 | Android | iOS |
---|---|---|
关闭拍照声音 | ✅ | ❌ |
设置识别频率 | ✅ | ❌ |
设置最大数量 | ✅ | ✅ |
双指缩放 | ✅ | ✅ |
点屏聚焦 | ✅ | ✅ |
矫正识别 | ✅ | ✅ |
缓存识别 | ✅ | ✅ |
手动调整 | ✅ | ✅ |
返回多图 | ✅ | ✅ |
前置/后置摄像头 | ✅ | ❌ |
竖屏/横屏 | ✅ | ❌ |
分辨率 | ✅ | ❌ |
插件使用
无需多言,直接上使用代码
const docCorrect = uni.requireNativePlugin('doc-correct')
docCorrect.detect({
shutterSound: true,// 仅Android,是否具有拍照声音,默认 true
recognizeMillisecond: 1000,// 仅Android,识别频率(毫秒),非负,默认 1000
maxCount: 9,// 最大数量,默认0 不限制
cameraId: 0,// 仅Android,摄像头 默认0,0-后置,1-前置
screenId: 0,// 仅Android,屏幕方向 默认0,0-竖屏,1-横屏
previewPx: '720',// 仅Android,预览分辨率 480,720(默认),1080,2k,4k
picturePx: '1080',// 仅Android,拍照分辨率 480,720,1080(默认),2k,4k
}, (res) => {
this.list = res.data;
})
注意:
1、recognizeMillisecond 小于500将考验硬件性能,非必要不要设置
2、cameraId 推荐0,因为大部分前置摄像头分辨率不高
3、screenId 推荐0,因为这是兼容某些横屏的安卓设备,如学习机、模拟器等,效果也未经较多设备测试,非必要不要设置
4、previewPx 指手机上回显摄像头画面的清晰度。推荐 720、1080
5、picturePx 指是点击拍照后照片的清晰度。推荐 1080、2k、4k
返回结果 res
{
code: 'success',
data: ['filepath1', 'filepath2', ... ],
}
获取的图片地址可直接用image展示
<image v-for="(item, index) in list" :key="index" :src="item" mode="aspectFill" />
FAQ:
1、【Android】为什么手机对着物体看起来那么模糊?
答:可以点击一下屏幕,手动触发聚焦。因为打开摄像头的默认自动聚焦并不是目标物体或最好的效果
2、【Android】为什么最终矫正的图片那么模糊,字都看不清?但原生相机拍出来的照片是高清的
答:这里要达成一个共识,比如你的设备只支持720,即1280x720,当矫正里面的内容后是截取其中一部分的,那相应的像素也是不如720的,比如只有960x640、640x540这些。因此根据一些测试下来的结果,只有1080,即1080x1920,和以上的像素才会比较保证最终矫正图片画质
联系方式
wx:1-5-3-1094-3610(-去掉,不这样写会被和谐)
qq:505384310
DCloud的消息中心和uni-im经常收不到通知,导致联系不上