百度智能小程序 相機

2020-09-01 10:51 更新

camera 相機

解釋:系統(tǒng)相機,使用該組件需通過獲取用戶授權(quán)設(shè)置申請授權(quán)后方可對用戶發(fā)起授權(quán)申請,可在 swan.authorize 中查看相關(guān)錯誤碼信息。camera 組件還提供豐富的 api 來控制相機錄像、拍照等,詳見 swan.createCameraContext。

屬性說明

屬性名 類型 默認值 必填 說明

device-position

String

back

前置或后置,值為 front, back

flash

String

auto

閃光燈,值為 auto, on, off

bindstop

EventHandle

攝像頭在非正常終止時觸發(fā),如退出后臺等情況

binderror

EventHandle

用戶不允許使用攝像頭時觸發(fā)

device-position 有效值

說明

front

前置攝像頭

back

后置攝像頭

flash 有效值

說明

auto

自動閃光燈

on

閃光燈開

off

閃光燈關(guān)

示例 

在開發(fā)者工具中打開



代碼示例

<view class="wrap">
    <view class="card-area">
        <camera device-position="{{device}}"
                flash="off"
                bindstop="stop"
                binderror="error"
                style="width: 100%; height: 3rem;">
        </camera>
        <button type="primary" bind:tap="switchCamera">切換攝像頭</button>
        <button type="primary" bind:tap="takePhoto">拍照</button>
        <button type="primary" bind:tap="startRecord">開始錄像</button>
        <button type="primary" bind:tap="stopRecord">結(jié)束錄像</button>
        <!-- <navigator url="/pages/camera-scan-code/camera-scan-code">
            <button type="primary">掃描一維碼</button>
        </navigator> -->
        <view class="preview">預覽</view>
        <image s-if="imageSrc" class="image" mode="widthFix" src="{{imageSrc}}"></image>
        <video s-if="videoSrc" class="video" src="{{videoSrc}}"></video>
    </view>
</view>
Page({
    data: {
        imageSrc: '',
        device: 'back',
        videoSrc: ''
    },
    switchCamera() {
        const devices = this.getData('device');
        if (devices === 'back') {
            this.setData({
                device: 'front'
            });
        } else {
            this.setData({
                device: 'back'
            });
        }
    },
    takePhoto() {
        const ctx = swan.createCameraContext();
        ctx.takePhoto({
            quality: 'high',
            success: res => {
                this.setData({
                    imageSrc: res.tempImagePath
                });
            }
        });
    },
    startRecord() {
        const ctx = swan.createCameraContext();
        ctx.startRecord({
            success: res => {
                swan.showToast({
                    title: 'startRecord',
                    icon: 'none'
                });
            }
        });
    },
    stopRecord() {
        const ctx = swan.createCameraContext();
        ctx.stopRecord({
            success: res => {
                swan.showModal({
                    title: '提示',
                    content: res.tempVideoPath
                });
                this.setData({
                    videoSrc: res.tempVideoPath
                });
            }
        });
    },
    error(e) {
        console.log(e.detail);
    }
});

設(shè)計指南

如未獲取相機權(quán)限致使相機無法使用,可通過模態(tài)彈窗(showModal)進行明確的提示反饋,避免相機黑屏阻斷流程,影響用戶體驗。

正確

未獲取相機權(quán)限時提示用戶權(quán)限未開啟

錯誤

未獲取相機權(quán)限卻無提示,導致用戶無措

Bug & Tip

  • Tip:camera 組件是由客戶端創(chuàng)建的原生組件,它的層級是最高的,不能通過 z-index 控制層級??墒褂?cover-view cover-image 覆蓋在上面(在基礎(chǔ)庫 3.0.0 之前需要先創(chuàng)建 camera,再通過的方式方 s-if="{ {true} }"可在 camera 上創(chuàng)建 NA 組件)。Tip:同一頁面只能插入一個 camera 組件。Tip:請勿在 scroll-view、swiper、picker-view、movable-view 中使用 camera 組件。Tip:相關(guān) API:createCameraContext。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號