uniapp 使用摄像头 live-pusher (APP)

前因:公司需求需要类似于微信小程序camera 类似的功能,但是uniapp并没有相应的组件,由于开发周期相对较短,暂时放弃使用iOS与android原生开发。凑巧之前做过类似直播的功能,所以就想起来使用live-pusher来调用摄像头。一开始感觉挺好的,但是之后就发现有各种各样的问题:

1、APP打包运行报错(例如:e[t] is not undefined)(app 离线打包)

HX项目中除了在mainifest.json中app模块设置中勾选LivePusher 

android/ios外壳:模块/三方SDK配置介绍 | uni小程序SDK

按照上述文档操作就可以了,如果还有问题,就看一下是不是那里有遗漏

2、live-pusher初始化的问题

uni.createLivePusherContext('livePusher', this)可以根据官方建议放到onReady中去执行,然后记得开启摄像头预览以及轮询摄像头是否打开,否者用户打开时可能会到黑屏的情况

//开始预览
 startPreview() {
    this.livePusher.startPreview({
        success: res)=> {}
    });
 },

//轮询摄像头打开
poenCarme() {
     if (plus.os.name == 'Android') {
         this.poenCarmeInterval = setInterval(() => {
            ...    //添加是否需要预览摄像头的方法,一般摄像头打开之后就不会在开启预览摄像头  
         }, 2500);
     }
},

3、android权限问题,使用live-pusher初始化的时候,系统回个用户弹出授权窗口,当用户拒绝的时候是无法使用的。与iOS不同的是android有三个权限,分别是相机、麦克风、电话。这是error方法:(⚠️:安卓不同系统会出现,权限弹框出现时,当前界面自动后台运行)

error({detail}){
   console.log(detail);
   //10001 用户禁止使用摄像头 
   //10002 用户禁止使用录音 
   //10003 用户禁止读取设备状态 (电话)
},    

4、iOS中statechange、error、netstatu方法无效(瞬间想骂人了,果然官方文档也不能全信。没有最坑,只有更坑)。由于没有方法判断用户是否同意授权,所以这里只能单独对iOS进行一下授权判断。大家可以使用这个插件:

App权限判断和提示 - DCloud 插件市场

由于IOS需要麦克风与相机权限,但是如果live-pusher 未初始化的时候,麦克风可以调起系统的授权申请弹框,但是相机没有调起只能查询。按照iOS的权限申请机制,当用户未调用权限时,对应的权限不会出现在APP的权限设置中,所以就算我们让用户跳转到应用的权限设置中也无法打开相机权限。所以用户在进入界面的时候要对live-pusher 进行初始化。然后再用户点击时在进行权限判断。

5、横竖屏切换问题。APP一般开发的时候默认是竖屏,安卓在横竖屏切换的时候没什么问题,但是IOS在切换的时候,影响逆转90%,没办法矫正(目前我们解决办法:IOS使用原生开发)。

6、摄像头被抢。应用中使用摄像头并且在打开摄像头的情况下进入后台,同时在其他应用打开摄像头,这个时候再返回应用的时候,摄像头出现黑屏的情况。这是因为当前我们应用的摄像头等级降低也就是说被后面打开的摄像头抢了,所以在我们从后台进入的时候要默认打开一下摄像头来提高摄像头调用等级

7、live-pusher 在iOS可能存在闪退的情况。(目前是在确认中,这是一个建议)由于我们之前使用过摄像头预览,所以我想着是不是这个功能的问题,当页面卸载的时候,使用stopPreview来关闭摄像头预览

这是我在使用中遇到的问题,由于我写的不是很详细,大家可以参考一下:live-camera: 利用live-pusher组件制作的自定义相机

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值