Files
medicine_app/components/yk-screenRecord/yk-screenRecord.vue
@fawn-nine 6d19afdb7a 测试
2024-07-01 10:23:36 +08:00

118 lines
3.0 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<view class="zzc_mol" v-if="isRecording"></view>
</template>
<script>
export default {
data() {
return {
isRecording: false
}
},
created() {
this.screenInit();
},
onUnload() {
this.AllowScreenshots()
},
methods: {
screenInit() {
let _this = this;
// #ifdef H5
uni.showToast({
title: '请在APP或者小程序环境下操作',
icon: 'error'
})
// #endif
//// #ifndef H5
uni.getSystemInfo({
success: function(e) {
// #ifdef APP-PLUS
if (e.platform == 'android') {
//注意:一旦开启禁止截屏/录屏后将会全局生效,关闭页面时记得放开允许截屏/录屏
console.log('现在的操作系统是:=》',e.platform)
_this.NoscreenCapture();
} else {
//在APP IOS端截屏、录屏暂时没办法实现可以寻求原生解决
}
// #endif
// #ifdef MP-WEIXIN
if (e.platform == 'android') {
//微信小程序在安卓手机上 禁止截屏/录屏(注意:禁止后录屏动作还是会进行,但录屏后的视频是黑屏的)
wx.setVisualEffectOnCapture({
visualEffect: 'hidden', //传入 hidden 则表示在截屏/录屏时隐藏屏幕
success: (res) => {
console.log(res)
},
fail: (err) => {
console.log(err)
},
complete: (res) => {
console.log(res)
}
})
} else {
//微信小程序在IOS手机上注意目前微信小程序在ios上也只能通过监听录屏状态然后通过添加view层来进行阻止截屏暂时无法实现
//监听用户录屏事件
wx.onScreenRecordingStateChanged(function(res) {
if (res.state == 'start') {
_this.isRecording = true
} else {
_this.isRecording = false
}
})
//查询用户是否在录屏
wx.getScreenRecordingState({
success: (res) => {
if (res.state == 'on') {
_this.isRecording = true
} else if (res.state == 'off') {
_this.isRecording = false
}
},
fail: (err) => {
_this.isRecording = false
}
})
}
// #endif
}
})
//// #endif
},
//安卓端禁止截屏
NoscreenCapture() {
let osname = plus.os.name;
console.log('函数内的系统信息是=》',plus.os.name)
if (osname == "Android") {
var activity = plus.android.runtimeMainActivity();
plus.android.invoke(plus.android.invoke(activity, "getWindow"), "addFlags", 0x00002000);
// this.$emit('')
}
},
//安卓端允许截屏
AllowScreenshots() {
let osname = plus.os.name;
if (osname == "Android") {
var activity = plus.android.runtimeMainActivity();
plus.android.invoke(plus.android.invoke(activity, "getWindow"), "clearFlags", 0x00002000);
}
}
}
}
</script>
<style>
.zzc_mol {
background: #000;
width: 100%;
height: 100%;
position: fixed;
z-index: 99999;
top: 0;
left: 0;
}
</style>