收藏
回答

小程序不能同时使用相机录像和拍照功能

框架类型 问题类型 操作系统 工具版本
小程序 Bug Windows 开发者工具stable1.06.2209190

模拟器上可以实现,到真机调试的时候就会出现拍照键或者停止录制键失灵

<template>

<camera class="camera" style="width: 100%; height: 100vh;" device-position="back" flash="off" @error="takeError">

<uni-icons v-if="isStart" class="camera-btn" color= "#e9e9eb" type="circle-filled" size="80" @click="startVideo"></uni-icons>

<view v-else>

<uni-icons class="camera-btn-1" color= "#e9e9eb" type="camera" size="60" @click="takephotos"></uni-icons>

<uni-icons  class="camera-btn" color= "#f29e99" custom-prefix="iconfont" type="icon-tingzhi" size="80"  @click="stopVideo"></uni-icons>

</view>

</camera>

</template>


<script>

export default{

data(){

return{

isStart:true, //true显示为开始图标,false是暂停图标

photoList:[],

videoPath:'',

a:null,

}

},

onLoad() {

this.a=uni.createCameraContext();

},

methods:{

takeError(){

uni.navigateBack({

delta:1,

})

},

startVideo(){

// var that=this

uni.getSetting({

success: (res) => {

if(!res.authSetting["scope.record"]){

uni.authorize({

scope:"scope.record",

success: (res) => {

this.startRecord()

},

fail() {

uni.showModal({

content:"视频录制需要打开声音录制功能,请去设置中开启录音权限",

showCancel:false,

})

}

})

}else{

this.startRecord()

}

},

fail: (err) => {

console.log(err)

}

})

},

startRecord(){

// const a=uni.createCameraContext();

this.a.startRecord({

timeout:300,

timeoutCallback:(item)=>{

console.log(item)

},

success: (res) => {

this.isStart=false

console.log(122,res)

}

})

},

stopVideo(){

this.a.stopRecord({

// compressed:true,

success: (res) => {

this.videoPath=res.tempVideoPath

console.log(124,this.videoPath)

this.isStart=true

if(this.photoList.length>0&&this.videoPath){

let photo=JSON.stringify(this.photoList)

uni.redirectTo({

url:'/pages/index/upLoad?photo='+encodeURIComponent(JSON.stringify(this.photoList))+'&video='+res.tempVideoPath

})

}else if(this.photoList.length==0){

uni.redirectTo({

url:'/pages/index/upLoad?video='+this.videoPath

})

}

},

fail(err) {

console.log(125,err)

}

})

},

takephotos(){

console.log(11111111)

var that=this

// const ctx=uni.createCameraContext()

that.a.takePhoto({

quality: 'normal',

success: (res) => {

that.photoList.push({src:res.tempImagePath})

console.log(126,res)

},

fail(err) {

console.log("erroerroerro",err)

that.photoList=[]

},

// complete(res){

//  console.log('hhhhhhh')

// }

})

},

}

}

</script>


<style lang="less" scoped>

.camera{

width: 100%; height: 100vh;

}

.camera-btn{

position: absolute;

bottom: 30px;

left: 50%;

color: #e9e9eb;

/* margin-left: -50%; */

transform: translateX(-50%);

/* text-align: center; */

&-1{

left: 0%;

position: absolute;

bottom: 40px;

left: 30px;

}

}

</style>

回答关注问题邀请回答
收藏
登录 后发表内容