W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
解釋:系統(tǒng)相機(jī),使用該組件需通過(guò)獲取用戶授權(quán)設(shè)置申請(qǐng)授權(quán)后方可對(duì)用戶發(fā)起授權(quán)申請(qǐng),可在 swan.authorize 中查看相關(guān)錯(cuò)誤碼信息。camera 組件還提供豐富的 api 來(lái)控制相機(jī)錄像、拍照等,詳見(jiàn) swan.createCameraContext。
屬性名 | 類型 | 默認(rèn)值 | 必填 | 說(shuō)明 |
---|---|---|---|---|
device-position |
String |
back |
否 |
前置或后置,值為 front, back |
flash |
String |
auto |
否 |
閃光燈,值為 auto, on, off |
bindstop |
EventHandle |
否 |
攝像頭在非正常終止時(shí)觸發(fā),如退出后臺(tái)等情況 |
|
binderror |
EventHandle |
否 |
用戶不允許使用攝像頭時(shí)觸發(fā) |
值 | 說(shuō)明 |
---|---|
front |
前置攝像頭 |
back |
后置攝像頭 |
值 | 說(shuō)明 |
---|---|
auto |
自動(dòng)閃光燈 |
on |
閃光燈開(kāi) |
off |
閃光燈關(guān) |
代碼示例
<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">開(kāi)始錄像</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">預(yù)覽</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è)計(jì)指南
如未獲取相機(jī)權(quán)限致使相機(jī)無(wú)法使用,可通過(guò)模態(tài)彈窗(showModal)進(jìn)行明確的提示反饋,避免相機(jī)黑屏阻斷流程,影響用戶體驗(yàn)。
正確
未獲取相機(jī)權(quán)限時(shí)提示用戶權(quán)限未開(kāi)啟
錯(cuò)誤
未獲取相機(jī)權(quán)限卻無(wú)提示,導(dǎo)致用戶無(wú)措
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: