0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙NEXT實戰(zhàn)開發(fā):【截屏】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-03-07 16:02 ? 次閱讀

展示全屏截圖和屏幕局部截圖。通過[screenshot]模塊實現(xiàn)屏幕截圖 ,通過[window]模塊實現(xiàn)隱私窗口切換,通過[display]模塊查詢當前隱私窗口。

效果預(yù)覽

image.png

使用說明:

  1. 點擊右上角圖標打開彈窗,選擇截屏,展示全屏截圖;選擇局部截屏,選擇截屏區(qū)域,點擊右下角完成,展示局部截屏;
  2. 點擊滑塊切換窗口隱私模式,隱私模式下截屏會彈出提示,拒絕截屏。

具體實現(xiàn)

本示例通過screenshot接口實現(xiàn)屏幕截圖 ,通過window接口實現(xiàn)隱私窗口切換,通過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'



// 屏幕截圖 默認參數(shù)screenshotOptions為空時 截全屏

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'



// 獲取當前窗口

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))

      }

    })

}

062b7e9f99042d0461e287c5c0ee8749.png

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 鴻蒙
    +關(guān)注

    關(guān)注

    56

    文章

    2267

    瀏覽量

    42486
收藏 人收藏

    評論

    相關(guān)推薦

    鴻蒙千帆起】《鋼嵐》成為首款基于HarmonyOS NEXT開發(fā)的戰(zhàn)棋新游

    近日,紫龍游戲旗下 BlackJack 工作室全新戰(zhàn)棋旗艦作品《鋼嵐》在華為游戲中心首發(fā)上線,并宣布《鋼嵐》完成鴻蒙原生應(yīng)用開發(fā),成為基于 HarmonyOS NEXT 開發(fā)的首款戰(zhàn)棋
    發(fā)表于 12-28 10:24

    2024款鴻蒙OS 最新HarmonyOS Next_HarmonyOS4.0系列教程分享

    實戰(zhàn),還包含了HarmonyOS 仿小米App實戰(zhàn)。詳情參考大綱或者目錄介紹。 根據(jù)華為鴻蒙生態(tài)推廣部門介紹,HarmonyOS4和未來的HarmonyOS5(HarmonyOS Next
    發(fā)表于 02-28 10:29

    鴻蒙實戰(zhàn)項目開發(fā):【短信服務(wù)】

    、OpenHarmony 多媒體技術(shù)、Napi組件、OpenHarmony內(nèi)核、Harmony南向開發(fā)、鴻蒙項目實戰(zhàn)等等)鴻蒙(Harmony NE
    發(fā)表于 03-03 21:29

    鴻蒙系統(tǒng)截圖怎么 在哪里操作

    華為鴻蒙操作系統(tǒng)發(fā)布已經(jīng)過去將近一個月了,那么,華為鴻蒙系統(tǒng)截圖怎么?鴻蒙系統(tǒng)
    的頭像 發(fā)表于 06-25 09:57 ?7978次閱讀

    鴻蒙系統(tǒng)怎么 5種方法的詳細介紹

    鴻蒙系統(tǒng)作為一個新系統(tǒng),里面的玩法肯定也會與之前系統(tǒng)有一定的差別,很多小伙伴就不太清楚鴻蒙系統(tǒng)怎么。
    的頭像 發(fā)表于 06-28 12:03 ?6.1w次閱讀

    鴻蒙系統(tǒng)功能在哪里

    華為鴻蒙系統(tǒng)發(fā)布后,目前為止很多小伙伴都升級了鴻蒙系統(tǒng),是手機使用過程中一個很基礎(chǔ)的功能,那么鴻蒙系統(tǒng)
    的頭像 發(fā)表于 07-09 15:44 ?1.1w次閱讀

    屏幕功能

    屏幕功能
    發(fā)表于 05-26 15:25 ?15次下載

    淘寶與華為合作將基于HarmonyOS NEXT啟動鴻蒙原生應(yīng)用開發(fā)

    1月25日,淘寶與華為舉辦鴻蒙合作簽約儀式,宣布將基于HarmonyOS NEXT啟動鴻蒙原生應(yīng)用開發(fā)。
    的頭像 發(fā)表于 01-26 16:14 ?870次閱讀

    華為宣布HarmonyOS NEXT鴻蒙星河版開發(fā)者預(yù)覽面向開發(fā)者開放申請

    華為宣布HarmonyOS NEXT鴻蒙星河版開發(fā)者預(yù)覽面向開發(fā)者開放申請,這意味著鴻蒙生態(tài)進入第二階段,將加速千行百業(yè)的應(yīng)用
    的頭像 發(fā)表于 01-29 16:42 ?1248次閱讀
    華為宣布HarmonyOS <b class='flag-5'>NEXT</b><b class='flag-5'>鴻蒙</b>星河版<b class='flag-5'>開發(fā)</b>者預(yù)覽面向<b class='flag-5'>開發(fā)</b>者開放申請

    鴻蒙開發(fā)教程

    去年8 月份華為發(fā)布會上,華為發(fā)布了HarmonyOS NEXT預(yù)覽版,宣布不再兼容安卓應(yīng)用。大家期待的純血鴻蒙終于要來臨了,next 預(yù)覽版本現(xiàn)在已經(jīng)開放申請渠道了,Next
    的頭像 發(fā)表于 01-31 17:11 ?580次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>教程

    華為pockets怎么

    華為Pocket S的方法有以下幾種。
    的頭像 發(fā)表于 03-06 16:06 ?1346次閱讀

    《詳解:鴻蒙NEXT開發(fā)核心技術(shù)》

    我們現(xiàn)在都知道鴻蒙作為一個國產(chǎn)的全棧自研系統(tǒng),經(jīng)過國家主推后。已經(jīng)引起人們很大的關(guān)注,其中作為開發(fā)者來說;許多一線大廠已經(jīng)與其華為鴻蒙展開原生應(yīng)用的合作了,目前了解到已經(jīng)有200+家。而之后出現(xiàn)了很多的高薪
    的頭像 發(fā)表于 03-13 23:00 ?1360次閱讀
    《詳解:<b class='flag-5'>鴻蒙</b><b class='flag-5'>NEXT</b><b class='flag-5'>開發(fā)</b>核心技術(shù)》

    鴻蒙NEXT南向開發(fā)案例:【智能臺燈】

    鴻蒙南向開發(fā)之智能臺燈案例
    的頭像 發(fā)表于 04-03 18:00 ?781次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>NEXT</b>南向<b class='flag-5'>開發(fā)</b>案例:【智能臺燈】

    HarmonyOS開發(fā)實例:【手勢

    基于手勢處理和能力,介紹了手勢的實現(xiàn)過程。樣例主要包括以下功能
    的頭像 發(fā)表于 04-11 22:38 ?352次閱讀
    HarmonyOS<b class='flag-5'>開發(fā)</b>實例:【手勢<b class='flag-5'>截</b><b class='flag-5'>屏</b>】

    華為HarmonyOS NEXT鴻蒙星河版正式開啟Beta計劃

    在剛剛落幕的華為開發(fā)者大會(HDC 2024)盛會上,華為震撼宣布HarmonyOS NEXT鴻蒙星河版正式邁入Beta測試階段,并預(yù)告其商用版本將于今年第四季度璀璨登場,預(yù)示著今年10月,搭載全新
    的頭像 發(fā)表于 07-15 15:59 ?620次閱讀