展示全屏截圖和屏幕局部截圖。通過[screenshot]模塊實(shí)現(xiàn)屏幕截圖 ,通過[window]模塊實(shí)現(xiàn)隱私窗口切換,通過[display]模塊查詢當(dāng)前隱私窗口。
效果預(yù)覽
使用說明:
- 點(diǎn)擊右上角圖標(biāo)打開彈窗,選擇截屏,展示全屏截圖;選擇局部截屏,選擇截屏區(qū)域,點(diǎn)擊右下角完成,展示局部截屏;
- 點(diǎn)擊滑塊切換窗口隱私模式,隱私模式下截屏?xí)棾鎏崾荆芙^截屏。
具體實(shí)現(xiàn)
本示例通過screenshot接口實(shí)現(xiàn)屏幕截圖 ,通過window接口實(shí)現(xiàn)隱私窗口切換,通過display接口查詢當(dāng)前隱私窗口。
- 源碼鏈接:[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'
// 屏幕截圖 默認(rèn)參數(shù)screenshotOptions為空時(shí) 截全屏
export function getScreenshot(screenshotOption = {}) {
return screenshot.save(screenshotOption)
}
// 設(shè)置全屏展示 isFullScreen: boolean
export 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'
// 獲取當(dāng)前窗口
export function getCurrentWindow(context: Context) {
return window.getTopWindow(context)
}
// 判斷隱私窗口
export function hasPrivate(): ResponseData {
let currentDisplay = null
try {
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 = undefined
try {
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 }
}
// 設(shè)置隱私窗口
export function setWindowPrivacyMode(context: Context, windowPrivacyMode: boolean) {
let currentWindow = null
getCurrentWindow(context)
.then(res = > {
currentWindow = res
try {
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))
}
})
}
審核編輯 黃宇
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
鴻蒙
+關(guān)注
關(guān)注
57文章
2392瀏覽量
42980
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
2024款鴻蒙OS 最新HarmonyOS Next_HarmonyOS4.0系列教程分享
實(shí)戰(zhàn),還包含了HarmonyOS 仿小米App實(shí)戰(zhàn)。詳情參考大綱或者目錄介紹。
根據(jù)華為鴻蒙生態(tài)推廣部門介紹,HarmonyOS4和未來的HarmonyOS5(HarmonyOS Next
發(fā)表于 02-28 10:29
鴻蒙實(shí)戰(zhàn)項(xiàng)目開發(fā):【短信服務(wù)】
、OpenHarmony 多媒體技術(shù)、Napi組件、OpenHarmony內(nèi)核、Harmony南向開發(fā)、鴻蒙項(xiàng)目實(shí)戰(zhàn)等等)鴻蒙(Harmony NE
發(fā)表于 03-03 21:29
名單公布!【書籍評(píng)測活動(dòng)NO.47】HarmonyOS NEXT啟程:零基礎(chǔ)構(gòu)建純血鴻蒙應(yīng)用
要在2000萬 。這一呼吁引起了全球開發(fā)者的關(guān)注,也意味著市場對(duì)HarmonyOS開發(fā)人才的需求將快速增長。
什么是純血鴻蒙
HarmonyOS NEXT,也被稱為純血
發(fā)表于 10-14 14:36
鴻蒙Flutter實(shí)戰(zhàn):07混合開發(fā)
# 鴻蒙Flutter實(shí)戰(zhàn):混合開發(fā)
鴻蒙Flutter混合開發(fā)主要有兩種形式。
## 1.基于har
將flutter module
發(fā)表于 10-23 16:00
【書籍評(píng)測活動(dòng)NO.56】極速探索HarmonyOS NEXT:純血鴻蒙應(yīng)用開發(fā)實(shí)踐
涵蓋了鴻蒙開發(fā)的各個(gè)關(guān)鍵領(lǐng)域。另外,書中還提供了基于HarmonyOS NEXT 的完整實(shí)戰(zhàn)項(xiàng)目和3個(gè)特色案例,并附帶了全套的源代碼。
本書適合鴻蒙
發(fā)表于 01-20 16:53
鴻蒙系統(tǒng)截圖怎么截 在哪里操作
華為鴻蒙操作系統(tǒng)發(fā)布已經(jīng)過去將近一個(gè)月了,那么,華為鴻蒙系統(tǒng)截圖怎么截屏?鴻蒙系統(tǒng)截
鴻蒙系統(tǒng)怎么截屏 5種方法的詳細(xì)介紹
鴻蒙系統(tǒng)作為一個(gè)新系統(tǒng),里面的玩法肯定也會(huì)與之前系統(tǒng)有一定的差別,很多小伙伴就不太清楚鴻蒙系統(tǒng)怎么截屏。
鴻蒙系統(tǒng)截屏功能在哪里
華為鴻蒙系統(tǒng)發(fā)布后,目前為止很多小伙伴都升級(jí)了鴻蒙系統(tǒng),截屏是手機(jī)使用過程中一個(gè)很基礎(chǔ)的功能,那么鴻蒙系統(tǒng)
淘寶與華為合作將基于HarmonyOS NEXT啟動(dòng)鴻蒙原生應(yīng)用開發(fā)
1月25日,淘寶與華為舉辦鴻蒙合作簽約儀式,宣布將基于HarmonyOS NEXT啟動(dòng)鴻蒙原生應(yīng)用開發(fā)。
華為宣布HarmonyOS NEXT鴻蒙星河版開發(fā)者預(yù)覽面向開發(fā)者開放申請(qǐng)
華為宣布HarmonyOS NEXT鴻蒙星河版開發(fā)者預(yù)覽面向開發(fā)者開放申請(qǐng),這意味著鴻蒙生態(tài)進(jìn)入第二階段,將加速千行百業(yè)的應(yīng)用
鴻蒙開發(fā)教程
去年8 月份華為發(fā)布會(huì)上,華為發(fā)布了HarmonyOS NEXT預(yù)覽版,宣布不再兼容安卓應(yīng)用。大家期待的純血鴻蒙終于要來臨了,next 預(yù)覽版本現(xiàn)在已經(jīng)開放申請(qǐng)渠道了,Next
評(píng)論