收藏
回答

camera组件 scancode 在安卓下工作不正常

问题模块 框架类型 问题类型 操作系统 操作系统版本 手机型号 微信版本
客户端 小程序 Bug Android 9 STF-AL00 (荣耀9) 7.0.8

安卓手机使用camera媒体组件扫码,似乎不太容易成功,多试几次后就会扫不出结果(bindscancode没有触发,别的事件也没有触发)。使用微信的扫码功能(wx.scanCode)正常。

如果扫一张有好多码的纸,如图,扫到的结果也很奇怪,有时候没在camera范围内的码被扫到。

不确定原因在哪里,看别人提到是因为隐藏的原因,苹果不正常,安卓正常。但我这个没有用隐藏,而且情况反过来了,苹果是正常的,安卓不行。

而且这个功能没有提示音,也没有停止扫描。我期望是扫商品的条码,跳到新的页面显示商品详情。有时候会出现连跳好几次的情况。

希望这个组件扫描时,增加提示音功能,增加停止功能。

Page({
  data: {
    id: '',
    queryResult: '',
  },
 
  onLoad() {
    // this.ctx = wx.createCameraContext()
  },
 
  onShow: function() {
    //    this.onWxScanCode;
  },
 
  onHide: function() {
 
  },
 
  onScanCode(e) {
    console.log('扫码成功,期望值', e.detail.result);
    this.setData({
      id: e.detail.result
    })
    wx.navigateTo({
      url: '../productDesc/productDesc?id=' + this.data.id,
    })
 
  },
 
  onWxScanCode: function(e) {
 
    wx.scanCode({
      onlyFromCamera: true,
      scanType: 'barCode',
      success(res) {
        console.log(res)
        wx.navigateTo({
          url: '../productDesc/productDesc?id=' + res.result,
        })
      }
    })
 
  },
 
 
  onError(e) {
    console.log("scan error:", e.detail)
  },
 
  onInitDone(e) {
    console.log("init done:", e.detail)
 
  },
 
  onStop(e) {
    console.log("user stop:", e.detail)
  }
})
<view class="page-body">
  <view class="page-body-wrapper">
    <camera mode="scanCode" device-position="back" flash="off" binderror="onError" bindscancode="onScanCode" bindstop="onStop"  bindinitdone="onInitDone" style="width: 100%; height: 200px;"></camera>
    <view>
      <text style="aligh:center">对准商品条码扫一扫</text>
    </view>
 
    <view>
      <button bindtap="onWxScanCode">调用微信扫码</button>
    </view>
 
  </view>
</view>


最后一次编辑于  11-14
回答关注问题邀请回答
收藏

3 个回答

问题标签