文档中心 > 店铺动态卡片-开发指引

camera

更新时间:2022/12/08 访问次数:3922

说明:本文档适用于小部件3.0。


一、简介


相机组件。支持基本的相机操作如拍照、扫码等。


1.淘宝 App 支持版本


iOS:10.3.10及以上版本。

Android:10.3.16及以上版本。


2.小部件构建支持版本


需要 小部件 2.0及以上版本。


二、API

1. 属


属性

类型

描述

是否支持

将要支持

mode

String

模式。相机模式或者扫码模式。

默认值:normal。

可选值:normal / scanCode

/

device-position

String

前置或者后置摄像头。

默认值:back。

可选值:front / back。

/

flash

String

闪光灯模式(auto/on/off)。

默认值:auto。

可选值:auto / on / off。

/

frame-size

String

预览帧尺寸。

默认值:medium。

可选值:small / medium / large。

/

onStop

EventHandle

摄像头在非正常终止时触发,如退出后台等情况。

/

onError

EventHandle

用户不允许使用摄像头时触发。

/

onScanCode

EventHandle

在扫码识别成功时触发,仅在 mode="scanCode" 时生效。

/


2. 事


名称

描述

事件原型

onStop

摄像头在非正常终止时触发,如退出后台等情况。

(e: Event)=>void

Event:

      detail

onError

用户不允许使用摄像头时触发。

(e: Event)=>void

Event:

       detail

onScanCode

在扫码识别成功时触发,仅在 mode="scanCode" 时生效。

(e: Result)=>void

Result:

       detail


result - 识别结果

type - 码类型


3. 方法


API名称

入参

返回值

描述

my.createCameraContext(cameraId: String)

camera Id

CameraContext

传入cameraId,返回一个cameraContext上下文。


1)CameraContext


API名称

入参

返回值

描述

cameraContext.takePhoto(object: Object)

Object:

quality - 成像质量(normal|low|high)

success - 成功回调

fail - 失败回调

complete - 接口调用结束回调

Void

拍照。

cameraContext.onCameraFrame(callback: Function)

Function入参

width - 宽

height - 高

data - 帧数据(ArrayBuffer)

CameraFrameListener

监听相机帧数据。

注: 暂不支持。


2)CameraFrameListener


API名称

入参

返回值

描述

start

Void

Void

开始监听。

stop

Void

Void

结束监听。


三、使用示例


1.标签声明


<camera id="camera_take" 
     mode="{{mode}}" 
     device-position="{{devicePosition}}" 
     flash="{{flash}}" 
     frame-size="{{frameSize}}"
     onScancode="scanCode" 
     onError="error" 
     onStop="stop" 
     style=" width: 100%; height: 300px; margin-top: 55px">
  </camera>


2.事件响应


Page({
  data: {
    url_temp: 'null',
    mode:'',
    devicePosition:'',
    flash:'',
    frameSize:'',
    quality:'', 
    frameData:'',
  },
  error(e) {
    console.log(e.detail);
    my.alert({content : "cameraError" + JSON.stringify(e)});
  },
  
  scanCode(e){
    console.log(e.detail);
    my.alert({content : "cameraScanCode" + JSON.stringify(e)});
  },
  stop(e) {
    console.log(e.detail);
    my.alert({content : "cameraStop" + JSON.stringify(e)});
  },
  off(e) {
    console.log(e.detail);
    my.alert({content : "cameraOff" + JSON.stringify(e)});
  }
  
  });


3.监听相机帧数据


const context = my.createCameraContext()
const listener = context.onCameraFrame((frame) => {
  console.log(frame.data instanceof ArrayBuffer, frame.width, frame.height)
})
listener.start();// 开始监听
listener.stop();// 结束监听


四、FAQ


监听相机帧事件支持吗?


目前尚不支持。

FAQ

关于此文档暂时还没有FAQ
返回
顶部