当前位置: 首页 > news >正文

海南住房和城乡建设网站wordpress yeti主题

海南住房和城乡建设网站,wordpress yeti主题,众筹网站建设需要多少资金,建设工程公开招标网站应用接续 介绍 基于ArkTS扩展的声明式开发范式编程语言编写的一个分布式视频播放器#xff0c;主要包括一个直播视频播放界面#xff0c;实现视频播放时可以从一台设备迁移到另一台设备继续运行#xff0c;来选择更合适的设备继续执行播放功能以及PAD视频播放时协同调用手…应用接续 介绍 基于ArkTS扩展的声明式开发范式编程语言编写的一个分布式视频播放器主要包括一个直播视频播放界面实现视频播放时可以从一台设备迁移到另一台设备继续运行来选择更合适的设备继续执行播放功能以及PAD视频播放时协同调用手机编辑发送弹幕功能。 效果预览 使用说明 准备手机端与平板端两台设备并且登录同一华为账号双端设备打开WI-FI和蓝牙建议双端设备接入同一个局域网可提升数据传输的速度双端设备均安装此应用滑动浏览手机端视频打开平板端应用点击平板端手机输入按钮调起手机端输入内容提交后平板端查看 具体实现 在实现协同接口前应用需要申请协同所需的访问控制权ohos.permission.DISTRIBUTED_DATASYNC。 在requestPermissions字段中增加权限声明ohos.permission.DISTRIBUTED_DATASYNC同时需要在应用首次启动时弹窗向用户申请授权在用户手动允许授权后应用才会真正获取相应权限从而成功访问操作目标对象。 在EntryAbility类中实现以下函数从而在调用时动态弹窗向用户申请权限。 /** Copyright (c) 2024 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 { abilityAccessCtrl, AbilityConstant, bundleManager, Permissions, UIAbility, Want } from kit.AbilityKit; import { window } from kit.ArkUI; import { WindowUtil } from ../utils/WindowUtil; import Logger from ../utils/Logger;export default class EntryAbility extends UIAbility {contentStorage?: LocalStorage;onContinue(wantParam: Recordstring, Object) {Logger.info(wantParam.version.toString(), wantParam.targetDevice.toString());// Preparing to Migrate Datalet activeLive: number AppStorage.getnumber(activeLive) as number;// Save the data to be migrated in the data field of wantParam.wantParam[activeLive] activeLive;// Setting the Source End Not to ExitwantParam[ohos.extra.param.key.supportContinueSourceExit] false;Logger.info(activeLive.toString());return AbilityConstant.OnContinueResult.AGREE}onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {Logger.info(Ability onCreate);this.checkPermissions();// If the invoking reason is migration, set the status to migratable to cope with cold start (ensuring migration continuity)if (launchParam.launchReason AbilityConstant.LaunchReason.CONTINUATION) {this.context.setMissionContinueState(AbilityConstant.ContinueState.ACTIVE, (result) {Logger.info(JSON.stringify(result));});}// Cold start of the application: Restore the saved migration dataif (launchParam.launchReason AbilityConstant.LaunchReason.CONTINUATION) {// Restore migrated data from wantlet activeLive want?.parameters?.activeLive;AppStorage.setOrCreatenumber(activeLive, activeLive as number);Logger.info(activeLive as string);// Explicit invocation of page restorethis.contentStorage new LocalStorage();Logger.info(Ability onCreate restoreWindowStage);this.context.restoreWindowStage(this.contentStorage);}}onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam) {Logger.info(Ability onCreate);// If the invoking reason is migration, set the status to migratable to cope with hot start (ensuring migration continuity)if (launchParam.launchReason AbilityConstant.LaunchReason.CONTINUATION) {this.context.setMissionContinueState(AbilityConstant.ContinueState.ACTIVE, (result) {Logger.info(JSON.stringify(result));});}//During the warm start of an application: Restore the saved migration dataif (launchParam.launchReason AbilityConstant.LaunchReason.CONTINUATION) {// Restore migrated data from wantlet activeLive want?.parameters?.activeLive;AppStorage.setOrCreatenumber(activeLive, activeLive as number);Logger.info(activeLive as string);// Explicit invocation of page restorethis.contentStorage new LocalStorage();Logger.info(Ability onNewWant restoreWindowStage);this.context.restoreWindowStage(this.contentStorage);}}// Check permission granting and dynamically apply for permissionsasync checkPermissions(): Promisevoid {const permissions: ArrayPermissions [ohos.permission.DISTRIBUTED_DATASYNC];let grantStatus: abilityAccessCtrl.GrantStatus await this.checkAccessToken(permissions[0]);// Verifying Permission Grantingif (grantStatus abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED) {// GrantedLogger.info(Permission already granted.);} else {// Not granted. Dynamically apply for authorization in the dialog box displayed to the userlet atManager abilityAccessCtrl.createAtManager();try {atManager.requestPermissionsFromUser(this.context, [ohos.permission.DISTRIBUTED_DATASYNC], (err, data) {Logger.info(JSON.stringify(data));});} catch (err) {Logger.error(JSON.stringify(err));return;}}}// Get the grant status of the current apps permissionsasync checkAccessToken(permission: Permissions): PromiseabilityAccessCtrl.GrantStatus {let atManager abilityAccessCtrl.createAtManager();let grantStatus: abilityAccessCtrl.GrantStatus -1;// Obtains the token IDlet tokenId: number 0;try {let bundleInfo: bundleManager.BundleInfo await bundleManager.getBundleInfoForSelf(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION);let appInfo: bundleManager.ApplicationInfo bundleInfo.appInfo;tokenId appInfo.accessTokenId;} catch (err) {Logger.error(JSON.stringify(err));}try {grantStatus await atManager.checkAccessToken(tokenId, permission);} catch (err) {Logger.error(JSON.stringify(err));}return grantStatus;}onDestroy(): void {Logger.info(Ability onDestroy);}onWindowStageCreate(windowStage: window.WindowStage): void {// Main window is created, set main page for this abilityLogger.info(Ability onWindowStageCreate);WindowUtil.requestFullScreen(windowStage, this.context);WindowUtil.updateStatusBarColor(this.context, true);windowStage.loadContent(pages/LivePage, (err) {if (err.code) {Logger.error(JSON.stringify(err) ?? );return;}Logger.info(Succeeded in loading the content.);});}onWindowStageDestroy(): void {// Main window is destroyed, release UI related resourcesLogger.info(Ability onWindowStageDestroy);}onWindowStageRestore(windowStage: window.WindowStage): void {WindowUtil.requestFullScreen(windowStage, this.context);}onForeground(): void {// Ability has brought to foregroundLogger.info(Ability onForeground);}onBackground(): void {// Ability has back to backgroundLogger.info(Ability onBackground);} }获取目标设备的设备ID。在发起端设置目标组件参数调用startAbilityForResult()接口启动目标端UIAbility异步回调中的data用于接收目标端UIAbility停止自身后返回给调用方UIAbility的信息。在目标端UIAbility任务完成后调用terminateSelfWithResult()方法将数据返回给发起端的UIAbility。发起端UIAbility接收到目标端UIAbility返回的信息对其进行处理。 以上就是本篇文章所带来的鸿蒙开发中一小部分技术讲解想要学习完整的鸿蒙全栈技术。可以在结尾找我可全部拿到 下面是鸿蒙的完整学习路线展示如下 除此之外根据这个学习鸿蒙全栈学习路线也附带一整套完整的学习【文档视频】内容包含如下 内容包含了ArkTS、ArkUI、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、鸿蒙南向开发、鸿蒙项目实战等技术知识点。帮助大家在学习鸿蒙路上快速成长 鸿蒙【北向应用开发南向系统层开发】文档 鸿蒙【基础实战项目】视频 鸿蒙面经 为了避免大家在学习过程中产生更多的时间成本对比我把以上内容全部放在了↓↓↓想要的可以自拿喔谢谢大家观看
http://www.hkea.cn/news/14394438/

相关文章:

  • 建一个团购网站餐饮装修专业设计
  • 郑州网络科技公司有哪些网站移动端优化的重点有哪些
  • 网站建设考试样题及答案佛山建设局官方网站
  • 永州做网站公司深圳龙华天气
  • 目前专业做水果的网站图片识别 在线百度识图
  • 网站建设公司何去何从旅游最适合的城市
  • 北京建设网网站知名的网站建设公司排名
  • 丰城市建设局网站北京企业网站开发公司哪家好
  • 东营科技官方网站wordpress支持移动
  • 做电影网站选服务器手机上做整蛊网站
  • phpmysql网站开发项目式教程wordpress 内存
  • 网站开发 前端vue 后端c专门做女性产品的网站
  • wordpress前台显示中文怎么办seo托管服务
  • 做网站的没有进项票怎么办秦皇岛市建设路小学网站
  • 仿 手机 网站模板html网站如何做百度推广方案
  • 方一凡和磊儿做家教的网站电商网站的建设动态
  • 无锡建设银行网站最优惠的赣州网站建设
  • 邢台网站制作那家便宜网站建设实施背景分析
  • 烟台网站设计单位柬埔寨做网站网站
  • 化州网站建设360建筑网电脑版
  • 广州个性化网站开发做网站被骗
  • 怎么搭建一个简单的网站三亚海棠警方拘留3名涉黄人员
  • 合山市网站湘潭网站建设 干净磐石网络
  • 山西省吕梁市邮政编码百度网站优化排名
  • 张家界网站建设企业sea wordpress
  • 山东中讯做网站怎么样动态表白网站制作
  • 网站seo怎样做成都旅游几月份最佳时间
  • 济南企业网站设计望京 网站建设
  • 松江信息科技有限公司网站网站的设计与维护摘要
  • 襄樊网站网站建设国家信用信息企业公示系统官网