模拟器快速上手,助力HarmonyOS应用/服务高效开发

文章目录

  • 1 创建模拟器
    • 1)打开设备管理界面
    • 2)设置本地模拟器实例存储路径
    • 3)创建一个模拟器
      • (1)选择模拟器设备
      • (2)创建模拟器
      • (3)启动模拟器
      • (4)关闭模拟器
      • (5)运行应用
  • 2 使用模拟器
    • 1)操控屏幕
    • 2)使用工具栏
  • 3 电池采样模拟场景

1 创建模拟器

1)打开设备管理界面

在使用模拟器之前,首先需要使用DevEco Studio打开或者创建一个工程,选择以下任一种方式打开设备管理界面。

  • 点击DevEco Studio主开发界面菜单栏选择“Tools > Device Manger”打开设备管理界面。

image-20241119151523661

  • 点击DevEco Studio主开发界面工具栏下拉设备列表,选择“Device Manger”打开设备管理界面。

image-20241119151942231

2)设置本地模拟器实例存储路径

初次打开设备管理器界面,设备列表为空,需要手动创建模拟器。在创建之前可通过点击右下角Edit设置本地模拟器实例的存储路径Local Emulator Location(Mac设备默认存储在~/.Huawei/Emulator/deployed目录,Windows设备默认存储在C:\Users\用户名\AppData\Local\Huawei\Emulator\deployed目录),当然也可以使用默认存储路径。

image-20241119152404678

3)创建一个模拟器

设置好本地模拟器实例存储路径后,点击设备管理界面右下角“New Emulator”按钮,打开模拟器创建向导。

image-20241119152704065

(1)选择模拟器设备

在模拟器设备类型选择界面,可以通过点击右上角Edit设置本地模拟器镜像存储路径(Mac设备默认存储在~/Library/Huawei/Sdk目录,Windows设备默认存储在C:\Users\用户名\AppData\Local\Huawei\Sdk目录),当然也可以使用默认的存储路径。

可通过左侧下拉选择创建的模拟器设备类型,也可以直接在设备类型列表中选择需要创建的模拟器设备类型。首次使用会在底部提示“Download the system image first”,表示本地设备尚未存储当前选中模拟器设备类型的模拟器镜像,需要点击设备列表目标模拟器设备行右侧的“下载”图标下载模拟器镜像。也可以通过该界面更新或删除不同设备的模拟器镜像。

image-20241119153439991

(2)创建模拟器

模拟器镜像下载完成后,点击选择模拟器设备界面Next按钮,进入创建模拟器向导界面。

image-20241119162332981

配置模拟器名称Name、内存Memory RAM,存储空间Storage ROM,然后点击Finish按钮,等待模拟器创建完成。

image-20241119162505913

模拟器创建完成后,在本地模拟器设备界面列表中查看创建的模拟器。

image-20241119162817126

(3)启动模拟器

在设备管理器页面,点击启动图标启动模拟器。

image-20241119163007536

(4)关闭模拟器

可以点击设备管理器页面模拟器列表中关闭图标关闭模拟器,也可以直接在模拟器菜单栏单击退出图标关闭模拟器。

image-20241119164350306

image-20241119164407322

(5)运行应用

点击DevEco Studio主开发界面工具栏启动/调试图标启动应用/服务的编译构建与安装,安装完成后应用会运行在模拟器上。

image-20241119163309995

image-20241119163335065

2 使用模拟器

1)操控屏幕

模拟器屏幕操控,使用鼠标左键和滚轮模拟手指和设备屏幕进行交互。一些常用的如滑动屏幕、拖动应用、单击屏幕、双击屏幕、长按屏幕均使用鼠标左键点击模拟手指点击设备屏幕交互,二双指缩放需要鼠标+键盘的方式来模拟,Windows设备按下Ctrl键(Mac设备按下Command键)会在模拟器设备上弹出一个捏合手势多点触控界面。

image-20241119165400225

2)使用工具栏

模拟器工具栏集成了各种调试工具和控制选项,可以点击工具栏中的更多图标,查看常用和扩展菜单。

image-20241119165615101

3 电池采样模拟场景

通过一个简单的电池管理应用,模拟模拟器上不同电池状态。

import { batteryInfo } from '@kit.BasicServicesKit';@Entry
@Component
struct Index {@State capacity: number = 0;@State charge: string = "";@State health: string = "";@Builder descriptionBuilder() {Text('当前电量').maxFontSize('30sp').minFontSize("10.0vp").fontColor("#fffa2a2d").fontWeight(FontWeight.Medium).width('100%').height("100%").textAlign(TextAlign.Center)}build() {Navigation() {Column({ space: 10 }) {Gauge({ value: this.capacity, min: 1, max: 100 }) {Column() {Text(`${this.capacity}`).fontWeight(FontWeight.Medium).width('62%').fontColor("#ff182431").maxFontSize("60.0vp").minFontSize("30.0vp").textAlign(TextAlign.Center).margin({ top: '35%' }).textOverflow({ overflow: TextOverflow.Ellipsis }).maxLines(1)}.width('100%').height('100%')}.startAngle(210).endAngle(150).colors(new LinearGradient([{ color: "#e84026", offset: 0 },{ color: "#f7ce00", offset: 0.6 },{ color: "#64bb5c", offset: 1 }])).width('80%').height('60%').strokeWidth(18).trackShadow({ radius: 7, offsetX: 7, offsetY: 7 }).description(this.descriptionBuilder).padding(18)List() {ListItem() {Row() {Text('充电状态').fontSize(14)Text(this.charge).fontSize(14)}.width('100%').padding(12).justifyContent(FlexAlign.SpaceBetween)}ListItem() {Row() {Text('健康状态').fontSize(14)Text(this.health).fontSize(14)}.width('100%').padding(12).justifyContent(FlexAlign.SpaceBetween)}}.width('80%').padding(18).divider({strokeWidth: 1,color: 0xdfdfdf})Button('刷新').fontSize(16).onClick(() => {this.getBatteryInfo();})}.width('100%').height('100%')}.height('100%').width('100%').title("电池").hideBackButton(true).hideToolBar(true)}aboutToAppear(): void {this.getBatteryInfo();}getBatteryInfo() {this.capacity = batteryInfo.batterySOC;switch (batteryInfo.chargingStatus) {case batteryInfo.BatteryChargeState.ENABLE:this.charge = "正在充电";break;case batteryInfo.BatteryChargeState.FULL:this.charge = "电量已充满";break;default :this.charge = "停止充电";}switch (batteryInfo.healthStatus) {case batteryInfo.BatteryHealthState.GOOD:this.health = "正常";break;case batteryInfo.BatteryHealthState.OVERHEAT:this.health = "过热";break;case batteryInfo.BatteryHealthState.OVERVOLTAGE:this.health = "过压";break;case batteryInfo.BatteryHealthState.COLD:this.health = "低温";break;case batteryInfo.BatteryHealthState.DEAD:this.health = "僵死";break;default :this.health = "未知";}}
}

image-20241119172729623

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

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

相关文章

HarmonyOS(61) 组件间状态共享的分类以及状态选择器的选取优先级

状态共享 状态共享的分类状态共享选择器State与prop\Link\ObservedObjectLink组合的区别合理选择装饰器的顺序参考资料 状态共享的分类 HarmonyOS的组件之间是可以共享状态数据了,不同的组件之间,状态共享的场景也不一样,根据共享范围从小到…

高德地图 Readme GT 定制版 10.25.0.3249 | 极致简洁

这款定制版高德地图去除了广告,运行速度更快。虽然没有车道级导航、打车功能和红绿灯倒计时等功能,但支持正常登录和收藏功能。检测更新始终为最新版本。 大小:82.5M 下载地址: 百度网盘:https://pan.baidu.com/s/1Y…

去中心化物理基础设施网络(DePIN):重塑未来的基石

一、引言:DePIN的定义与背景 什么是DePIN? 去中心化物理基础设施网络(DePIN,Decentralized Physical Infrastructure Networks)是利用区块链和去中心化技术管理、优化和激励物理资源分配的一种新兴模式。与传统集中式…

模型 布鲁姆法则

系列文章 分享 模型,了解更多👉 模型_思维模型目录。分层提升思维力。 1 布鲁姆法则的应用 1.1 布鲁姆法则在产品开发流程中的应用 背景: 在产品开发领域,创新和效率是关键。布鲁姆法则可以帮助产品经理和设计师系统地提升产品开…

恒创科技:服务器操作系统和客户端操作系统之间的区别

客户端操作系统和服务器操作系统是两种不同的操作系统,旨在满足计算机网络环境中的特定目的。虽然每种类型的操作系统在基本功能方面都有一些相似之处,但它们针对不同的用例进行了优化,并具有针对其特定角色量身定制的特定功能。 什么是服务器…

Flink的双流join理解

如何保证Flink双流Join准确性和及时性、除了窗口join还存在哪些实现方式、究竟如何回答才能完全打动面试官呢。。你将在文中找到答案。 1 引子 1.1 数据库SQL中的JOIN 我们先来看看数据库SQL中的JOIN操作。如下所示的订单查询SQL,通过将订单表的id和订单详情表ord…

2024学习之前端微信小程序开发教程,从入门到精通-含基础+实战+源码code

目录 一、简单介绍 二、课程需知 三、内容编排 1、小程序基础  起步式 目录结构 小程序框架 场景值  逻辑层 视图层 组件 视图容器 基础内容 表单组件 导航 媒体组件 Api 路由 界面 交互 网络 数据缓存 自定义组件 2、项目实战 …

HarmonyOS4+NEXT星河版入门与项目实战(23)------组件转场动画

文章目录 1、控件图解2、案例实现1、代码实现2、代码解释3、实现效果4、总结1、控件图解 这里我们用一张完整的图来汇整 组件转场动画的用法格式、属性和事件,如下所示: 2、案例实现 这里我们对上一节小鱼游戏进行改造,让小鱼在游戏开始的时候增加一个转场动画,让小鱼自…

数据预处理方法—特征选择、特征缩放、特征构造

特征选择 1.1 原理 特征选择是选择对模型训练最重要的特征,减少数据维度,去除冗余或不相关特征,提高模型性能的性能和训练速度,减少过拟合。 1.2 核心公式 可以使用基于树模型的特征重要性度量,如在随机森林中计算特…

【C++/Qt 】使用QCustomplot类打造一款数学函数图像生成工具(支持latex公式渲染+Python连接AI大模型)

✨✨ Rqtz 个人主页 : 点击✨✨ 🌈Qt系列专栏:点击 软件介绍 基于Qt的开源项目QCustomplot类的一款在线的数学函数图像生成工具,涉及到了数学的latex公式渲染,如何将latex语法转换为Python的函数,和如何在Qt中使用QCustomplot类进…

分页查询功能

EmployeeController /** * 员工分页查询 * * param employeePageQueryDTO * return */ GetMapping("/page") ApiOperation("员工分页查询") public Result<PageResult> page(EmployeePageQueryDTO employeePageQueryDTO) { log.info("…

mp4视频流推送的学习

一、依赖引入&#xff1a; ①使用 CDN 的播放器代码 <!-- 引入 xgplayer 核心 --> <script src"https://unpkg.byted-static.com/xgplayer/3.0.10/dist/index.min.js" charset"utf-8"></script><!-- 引入 xgplayer mp4 插件 -->…

C++趣味编程:基于树莓派Pico的模拟沙漏-倾斜开关与LED的互动实现

沙漏,作为一种古老的计时工具,利用重力让沙子通过狭小通道,形成了计时效果。在现代,我们可以通过电子元件模拟沙漏的工作原理。本项目利用树莓派Pico、倾斜开关和LED,实现了一个电子沙漏。以下是项目的详细技术解析与C++代码实现。 一、项目概述 1. 项目目标 通过倾斜开关…

PyG教程:MessagePassing基类

PyG教程&#xff1a;MessagePassing基类 一、引言二、如何自定义消息传递网络1.构造函数2.propagate函数3.message函数4.aggregate函数5.update函数 三、代码实战1.图数据定义2.实现GNN的消息传递过程3.完整代码4.完整代码的精简版本 四、总结1.MessagePassing各个函数的执行顺…

Linux—进程学习—04(进程地址空间学习)

目录 Linux—进程学习—41.程序地址空间1.1虚拟地址空间的现象1.2虚拟地址空间的理解(感性) 2.进程地址空间2.0 mm_struct结构体2.1 mm_struct结构体的源代码2.2分页&虚拟地址空间解释前面的实验现象 2.3进程地址空间存在的原因2.3.1第一个原因2.3.2第二个原因2.3.3第三个原…

信息安全实验--密码学实验工具:CrypTool

1. CrypTool介绍&#x1f4ad; CrypTool 1的开源教育工具&#xff0c;用于密码学研究。通过CrypTool 1&#xff0c;可以实现加密和解密操作&#xff0c;数字签名。CrypTool1和2有很多区别的。 2. CrpyTool下载&#x1f527; 在做信息安全实验--密码学相关实验时&#xff0c;发…

nodejs30: CSS 剪辑路径clip-path导致伪元素不可见问题及解决方法

相关问题 应用圆角裁剪时无法显示::after 取消clip-path设置&#xff1a; 完整问题代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, i…

三、计算机视觉_08YOLO目标检测

0、前言 YOLO作为目前CV领域的扛把子&#xff0c;分类、检测等任务样样精通&#xff0c;本文将基于两个小案例&#xff0c;用YOLO做检测任务&#xff0c;看看效果如何 1、对图片内容做检测 假设我有一张名为picture.jpeg的图片&#xff0c;其内容如下 我将图片和代码放到了同…

STM32 ADC --- 知识点总结

STM32 ADC — 知识点总结 文章目录 STM32 ADC --- 知识点总结cubeMX中配置注解单次转换模式、连续转换模式、扫描模式单通道采样的情况单次转换模式&#xff1a;连续转换模式&#xff1a; 多通道采样的情况禁止扫描模式&#xff08;单次转换模式或连续转换模式&#xff09;单次…

SQL Server 实战 - 多种连接

目录 背景 一、多种连接 1. 复合连接条件 2. 跨数据库连接 3. 隐连接 4. 自连接 5. 多表外连接 6. UNION ALL 二、一个对比例子 背景 本专栏文章以 SAP 实施顾问在实施项目中需要掌握的 sql 语句为偏向进行选题&#xff1a; 用例&#xff1a;SAP B1 的数据库工具&am…