鸿蒙NEXT实战开发:【截屏】

展示全屏截图和屏幕局部截图。通过[screenshot]模块实现屏幕截图 ,通过[window]模块实现隐私窗口切换,通过[display]模块查询当前隐私窗口。

效果预览

全屏截图局部截图选择区域局部截图

使用说明:

  1. 点击右上角图标打开弹窗,选择截屏,展示全屏截图;选择局部截屏,选择截屏区域,点击右下角完成,展示局部截屏;
  2. 点击滑块切换窗口隐私模式,隐私模式下截屏会弹出提示,拒绝截屏。

具体实现

本示例通过screenshot接口实现屏幕截图 ,通过window接口实现隐私窗口切换,通过display接口查询当前隐私窗口。

  • 源码链接:[Screenshot.ets]
/** Copyright (c) 2022 Huawei Device Co., Ltd.* Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at**     http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/import screenshot from '@ohos.screenshot'import { Logger } from './Logger'import { getCurrentWindow } from './WindowPrivacy'// 屏幕截图 默认参数screenshotOptions为空时 截全屏export function getScreenshot(screenshotOption = {}) {return screenshot.save(screenshotOption)}// 设置全屏展示 isFullScreen: booleanexport function setFullScreen(context: Context, isFullScreen: boolean) {getCurrentWindow(context).then(res => {res.setFullScreen(isFullScreen, (err) => {if (err.code) {Logger.error('failed set full-screen mode cause: ' + JSON.stringify(err))return}Logger.info('success set full-screen mode')})})}
  • [WindowPrivacy.ets]
/** Copyright (c) 2022 Huawei Device Co., Ltd.* Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at**     http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/import window from '@ohos.window'import display from '@ohos.display'import { ResponseData } from '../models/ResponseData'import { Logger } from './Logger'// 获取当前窗口export function getCurrentWindow(context: Context) {return window.getTopWindow(context)}// 判断隐私窗口export function hasPrivate(): ResponseData {let currentDisplay = nulltry {currentDisplay = display.getDefaultDisplaySync()} catch (exception) {return { status: 'failed', errorMessage: JSON.stringify(exception) }}if (currentDisplay === null) {return { status: 'failed', errorMessage: 'get current display failed' }}let ret = undefinedtry {ret = display.hasPrivateWindow(currentDisplay.id)} catch (exception) {return { status: 'failed', errorMessage: JSON.stringify(exception) }}if (ret === undefined) {return { status: 'failed', errorMessage: 'ret is undefined' }}return ret ? { status: 'success', errorMessage: '', result: true } :{ status: 'success', errorMessage: '', result: false }}// 设置隐私窗口export function setWindowPrivacyMode(context: Context, windowPrivacyMode: boolean) {let currentWindow = nullgetCurrentWindow(context).then(res => {currentWindow = restry {currentWindow.setWindowPrivacyMode(windowPrivacyMode, (err) => {if (err.code) {Logger.error('set window privacy mode failed cause: ' + JSON.stringify(err))return}Logger.info(`set window privacy mode success ${windowPrivacyMode}`)})} catch (exception) {Logger.info('set window mode failed cause: ' + JSON.stringify(exception))}})}

鸿蒙OpenHarmony知识已更新←前往

062b7e9f99042d0461e287c5c0ee8749.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/270978.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【笔记】Android 漫游定制SPN定制有关字段

一、SPN模块简介 【笔记】SPN和PLMN 运营商网络名称显示 Android U 配置 WiFiCalling 场景下PLMN/SPN 显示的代码逻辑介绍 【笔记】Android Telephony 漫游SPN显示定制(Roaming Alpha Tag) 二、相关配置字段 non_roaming_operator_string_array 是否…

Linux系统——Keepalive群集部署及认识

目录 一、Keepalive的认识 1.Keepalive基础——VRRP 2.Keepalived工具介绍 2.1Keepalived介绍 2.2Keepalived架构 2.2.1用户空间核心组件 2.2.2WatchDog:监控进程(整个架构是否有问题) 二、安装Keepalived及相关配置文件详解 1.安装…

下属OKR与上级OKR对齐时,有几种方法?

下属的OKR(Objectives and Key Results,即目标与关键成果)与上级的OKR对齐,是确保组织目标一致性和团队协同工作的关键步骤。以下是几种常用的对齐方法: 直接映射法:下属的OKR直接反映并支撑上级的OKR。例如…

【Linux篇】gdb的使用

💛不要有太大压力🧡 💛生活不是选择而是热爱🧡 💚文章目录💚 1. 背景知识2. 使用 1. 背景知识 1. 程序发布的方式有两种,debug模式和release模式 2. Linux下,gcc和g编译生成的可执行…

VUE3中ArcGIS JsAPI 4.27 Map 隐藏地图黑色边框

问题: vue3中引入arcgis jsapi 地图加载后,点击地图会出现黑色边框,看起来很不协调 解决方案: 新建自定义CSS文件,输入一下样式内容,并在vue页面直接用import引入即可。 注意:直接写到vue页面…

10、Linux项目部署-WAR包

目录 一、部署步骤 第一步,把War包解压,再重新打包成Zip。 第二步,在Linux里创建一个项目文件夹,将Zip的内容解压在这个文件夹内。 第三步,修改Tomcat配置表 第四步,启动Tomcat 第五步,浏…

让娃学习效率更高的“可视化”时间管理器

如果要问,老母亲在娃开学后,蕞着急孩子哪一种坏习惯,那时间管理肯定榜上有名! 做作业的时候,才写了5分钟,已经没有耐心了,东摸摸西看看,一会说肚子疼想上厕所,一会又拿出…

Windows系统搭建VisualSVN并结合内网穿透实现远程访问本地服务

文章目录 前言1. VisualSVN安装与配置2. VisualSVN Server管理界面配置3. 安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4. 固定公网地址访问 前言 SVN 是 subversion 的缩写,是一个开放源代码的版本控制系统…

gin gorm学习笔记

代码仓库 https://gitee.com/zhupeng911/go-advanced.git https://gitee.com/zhupeng911/go-project.git 1. gin介绍 Gin 是使用纯 Golang 语言实现的 HTTP Web框架,Gin接口设计简洁,提供类似Martini的API,性能极高,现在被广泛使用…

《幸运的基督徒》Python

题目描述 有15个基督徒和15个非基督徒在海上遇险, 为了能让一部分人活下来不得不将其中15个人扔到海里面去, 有个人想了个办法就是大家围成一个圈,由某个人开始从1报数, 报到9的人就扔到海里面,他后面的人接着从1开始报…

XXE-XML实体注入漏洞

目录 1.xml基础 1.1什么是xml 1.2xml文档结构 1.3 什么是DTD 1.4 什么是实体 1.5 什么是外部实体 2.xxe漏洞 2.1xxe漏洞基本介绍 2.2xxe漏洞的危害 经典漏洞案例分析 3.xxe漏洞挖掘和利用 3.1. 识别潜在的XML入口 3.2. 检查XML处理逻辑 3.3. 构造试探Payload 常…

VMware永久授权终结,该如何转移阵地减少损失

2023年,随着VMware被博通(Broadcom)收购,VMware产品停止了永久订阅,仅以按年付费订阅的形式提供服务。这无疑是增加了客户在VMware的使用成本,也给VMware的未来带来众多不确定因素。 2024年2月Broadcom终止…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:PanGesture)

拖动手势事件,当滑动的最小距离超过设定的最小值时触发拖动手势事件。 说明: 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 接口 PanGesture(value?: { fingers?: number; direction?: PanDir…

List之ArrayList、LinkedList深入分析

集合 Java 集合, 也叫作容器,主要是由两大接口派生而来:一个是 Collection接口,主要用于存放单一元素;另一个是 Map 接口,主要用于存放键值对。对于Collection 接口,下面又有三个主要的子接口&…

【Python刷题】环形链表

问题描述 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&a…

论文阅读:SDXL Improving Latent Diffusion Models for High-Resolution Image Synthesis

SDXL Improving Latent Diffusion Models for High-Resolution Image Synthesis 论文链接 代码链接 介绍 背景:Stable Diffusion在合成高分辨率图片方面表现出色,但是仍然需要提高本文提出了SD XL,使用了更大的UNet网络,以及增…

MyBatis的#{}和${}:安全与灵活并存的SQL之道

MyBatis的#{}和${}:安全与灵活并存的SQL之道 MyBatis是一款广泛使用的Java持久化框架,提供了强大的SQL映射和数据库操作功能。在编写MyBatis的SQL语句时,我们经常会遇到#{}和${}两种不同的占位符语法。本文将详细解析#{}和${}的区别以及它们在…

今天面了一个来字节要求月薪23K,明显感觉他背了很多面试题...

最近有朋友去字节面试,面试前后进行了20天左右,包含4轮电话面试、1轮笔试、1轮主管视频面试、1轮hr视频面试。 据他所说,80%的人都会栽在第一轮面试,要不是他面试前做足准备,估计都坚持不完后面几轮面试。 其实&…

迭代器失效问题(C++)

迭代器失效就是迭代器指向的位置已经不是原来的含义了,或者是指向的位置是非法的。以下是失效的几种情况: 删除元素: 此处发生了迭代器的失效,因为erase返回的是下一个元素的位置的迭代器,所以在删除1这个元素的时候&…

JavaEE之volatile关键字

一.内存可见性问题 什么是内存可见性问题 计算机运行的程序/代码,往往需要访问数据。这些数据往往存在于内存中。 cup使用此变量时,就会把内存中的数据先读出来,加载到cpu寄存器中,再去参与运算。 但是,关键是cpu读…