使用DevEco Studio高效开发(篇二)

1. 界面预览

DevEco Studio为开发者提供了UI界面预览功能,可以查看UI界面效果,方便开发者随时调整界面UI布局。预览器支持界面代码的实时预览,只需要将开发的源代码进行保存,就可以通过预览器实时查看组件/界面运行效果,方便开发者随时调整代码。

为了更好的使用体验,建议先将DevEco Studio升级至最新版本。

1.1. PreviewChecker检测规则

DevEco Studio启动预览时将执行PreviewChecker,检测通过后才可进行预览,以确保在使用预览器前识别到已知的不支持预览的场景,若存在不支持预览的场景,将给出优化提示,以便于开发者根据提示的建议进行代码优化。

常见的监测项包括:

  1. @previewer/mandatory-default-value-for-local-initialization
  2. @previewer/no-unallowed-decorator-on-root-component
  3. @previewer/paired-use-of-consume-and-provide
  4. @previewer/no-page-method-on-preview-component
  5. @previewer/no-page-import-unmocked-hsp

详细用法与演示请参阅本书配套视频教程。

1.2. 查看ArkTS/JS预览效果

预览器支持ArkTS/JS应用/元服务“实时预览”和“动态预览”。

1.2.1. 实时预览

在开发界面UI代码过程中,如果添加或删除了UI组件,您只需Ctrl+S进行保存,然后预览器就会立即刷新预览结果。如果修改了组件的属性,则预览器会实时(亚秒级)刷新预览结果,达到极速预览的效果(当前版本极速预览仅支持ArkTS组件。支持部分数据绑定场景,如@State装饰的变量)。实时预览默认开启,如果不需要实时预览,请单击预览器右上角按钮,关闭实时预览功能。如图22所示。

图22 实时预览效果

1.2.2. 动态预览

在预览器界面,可以在预览器中操作应用/元服务的界面交互动作,如单击、跳转、滑动等,与应用/元服务运行在真机设备上的界面交互体验一致。

以ArkTS为例,使用预览器的方法如下:

  1. 创建或打开一个ArkTS应用/元服务工程。本示例以打开一个本地ArkTS 菜谱大全工程为例。
  2. 在工程目录下,打开任意一个.ets文件。
  3. 可以通过如下任意一种方式打开预览器开关,显示效果如下图所示:
  • 通过菜单栏,单击View > Tool Windows > Previewer打开预览器。
  • 在编辑窗口右上角的侧边工具栏,单击Previewer,打开预览器。

如图23所示。

图23 动态预览

1.3. 查看ArkUI预览效果

ArkUI预览支持页面预览、组件预览和卡片预览,下图中左侧图标为页面预览,右侧图标为组件预览,卡片预览在创建卡片文件后可直接预览。如图24所示。

图24 ArkUI预览入口

1.3.1. 页面预览

ArkTS应用/元服务支持页面预览。页面预览通过在工程的ets文件头部添加@Entry实现。

@Entry的使用参考如下示例:

@Entry
@Component
struct Index {
  @State message: string = 'Hello World'

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50).fontWeight(FontWeight.Bold)
      }
      .width('100%')
    }
    .height('100%')
  }
}

1.3.2. 组件预览

ArkTS应用/元服务支持组件预览。组件预览支持实时预览,不支持动态图和动态预览。组件预览通过在组件前添加注解@Preview实现,在单个源文件中,最多可以使用10个@Preview装饰自定义组件。

@Preview的使用参考如下示例:

@Preview
@Component
struct CenterGridView {
  build() {
    Column() {
      Grid() {
        ForEach(mainViewModel.getCenterGridData(), (item: ItemData) => {
          GridItem() {
            GridItemView({ item: item })
          }
        }, (item: ItemData) => JSON.stringify(item))
      }
      .columnsTemplate(StyleConstants.GRID_COLUMNS)
      .rowsTemplate(StyleConstants.GRID_ROWS)
      .columnsGap($r('app.float.grid_column_gap'))
      .rowsGap($r('app.float.grid_row_gap'))
      .height(StyleConstants.HOME_GRID_HEIGHT)
      .backgroundColor(Color.White)
      .borderRadius($r('app.float.home_grid_radius'))
      .padding({
        top: $r('app.float.home_grid_padding'),
        bottom: $r('app.float.home_grid_padding')
      })
      .width(StyleConstants.COMMON_WIDTH)
      .margin($r('app.float.common_margin'))
    }
  }
}

以上示例的组件预览效果如图25所示:

图25 组件预览

组件预览默认的预览设备为Phone,若您想查看不同的设备,或者不同的屏幕形状,或者不同设备语言等情况下的组件预览效果,可以通过设置@Preview的参数,指定预览设备的相关属性。若不设置@Preview的参数,默认的设备属性如下所示:

@Preview({
  title: 'Component1',  //预览组件的名称
  deviceType: 'phone',  //指定当前组件预览渲染的设备类型,默认为Phone
  width: 1080,  //预览设备的宽度,单位:px
  height: 2340,  //预览设备的长度,单位:px
  colorMode: 'light',  //显示的亮暗模式,当前支持取值为light
  dpi: 480,  //预览设备的屏幕DPI值
  locale: 'zh_CN',  //预览设备的语言,如zh_CN、en_US等
  orientation: 'portrait',  //预览设备的横竖屏状态,取值为portrait或landscape
  roundScreen: false  //设备的屏幕形状是否为圆形
})

1.4. Profile Manager

由于真机设备有丰富的设备型号,不同设备型号的屏幕分辨率可能不一样。因此,在HarmonyOS应用/元服务开发过程中,由于设备类型繁多,可能需要查看在不同设备上的界面显示效果。对此,DevEco Studio的预览器提供了Profile Manager功能,支持开发者自定义预览设备Profile(包含分辨率和语言),从而可以通过定义不同的预览设备Profile,查看HarmonyOS应用/元服务在不同设备上的预览显示效果。当前支持自定义设备分辨率及系统语言。

定义设备后,可以在Previewer右上角,单击按钮,打开Profile管理器,切换预览设备。如图26所示。

图26 Profile Manager演示

同时,Profile Manager还支持多设备预览功能。

下面以自定义一款Phone设备为例,介绍设备Profile Manager的使用方法。

  1. 在预览器界面,打开Profile Manager界面。如图27所示。

图27 多设备预览入口

  1. 在Profile Manager界面,单击+ New Profile按钮,添加设备。如图28所示。

图28 新建Profile入口

  1. Create Profile界面,填写新增设备的信息,如Profile ID(设备型号)、Device type(设备类型)、Resolution(分辨率)和Language and region(语言和区域)等。其中Device type只能选择module.json5中deviceTypes字段已定义的设备。如图29所示。

图29 创建Profile

  1. 设备信息填写完成后,单击OK完成创建。

1.5. 查看多端设备预览效果

DevEco Studio支持HarmonyOS分布式应用/元服务开发,同一个应用/元服务可以运行在多个设备上。在HarmonyOS分布式应用/元服务的开发阶段,因不同设备的屏幕分辨率、形状、大小等不同,开发者需要在不同的设备上查看应用/元服务的UI布局和交互效果,此时便可以使用多端设备预览器功能,方便开发者在应用/元服务开发过程中,随时查看不同设备上的界面显示效果。

前面介绍了DevEco Studio支持ArkTS、JS应用/元服务的预览器功能,多端设备预览器支持ArkTS、JS应用/元服务在不同设备上的同时预览。如果两个设备支持的编码语言不同,就不能使用多端设备预览功能。

下面以ArkTS应用/元服务为例,介绍多端设备预览器的使用方法,JS应用/元服务的多端设备预览器使用方法相同。

  1. 在工程目录中,打开任意一个ets文件(JS请打开hml/css/js文件)。
  2. 可以通过如下任意一种方式打开预览器开关,显示效果如下图所示:
    • 通过菜单栏,单击View > Tool Windows > Previewer,打开预览器。
    • 在编辑窗口右上角的侧边工具栏,单击Previewer,打开预览器。
  1. 在Previewer窗口中,打开Profile Manager中的Multi-profile preview开关,同时查看多设备上的应用/元服务运行效果。如图30所以。

图30 多设备预览入口

多设备预览效果如图31所示:

图31 多设备预览界面

1.6. Inspector双向预览

DevEco Studio提供HarmonyOS应用/元服务的UI预览界面与源代码文件间的双向预览功能,支持ets文件与预览器界面的双向预览。使用双向预览功能时,需要在预览器界面单击图标打开双向预览功能。如图32所示。

图32 双向预览入口

开启双向预览功能后,支持代码编辑器、UI界面和Component Tree组件树三者之间的联动:

  • 选中预览器UI界面中的组件,则组件树上对应的组件将被选中,同时代码编辑器中的布局文件中对应的代码块高亮显示。
  • 选中布局文件中的代码块,则在UI界面会高亮显示,组件树上的组件节点也会呈现被选中的状态。
  • 选中组件树中的组件,则对应的代码块和UI界面也会高亮显示。入图33所示。

图33 双向预览效果

在预览界面还可以通过组件的属性面板修改可修改的属性或样式,在预览界面修改后,预览器会自动同步到代码编辑器中修改源码,并实时的刷新UI界面;同样的,如果在代码编辑器中修改源码,也会实时刷新UI界面,并更新组件树信息及组件属性。

1.7. 预览数据模拟

在预览场景中,由于代码的运行环境与真机设备上的运行环境不同,调用部分接口时无法获取到有效的返回值(例如获取电池电量信息等,在预览场景下batteryInfo.voltage返回的是一个固定的值0),这样开发者就无法在预览时查看到不同返回值带来的界面变化。因此,Hamock提供了预览场景的模拟功能,在不改变业务运行逻辑的同时,开发者可以模拟UI组件上的属性或方法,或模拟import的模块接口。

1.7.1. 使用前提

使用Hamock在预览场景模拟,需要在工程或模块的oh-package.json5中添加该依赖,然后重新同步工程。

"devDependencies": {
  "@ohos/hamock": "1.0.0"
}

1.7.2. UI组件上的Mock

Hamock提供了@MockSetup用于修饰Mock方法,仅支持声明式范式的组件。当开发者预览该组件时,预览运行时将在组件初始化时执行被@MockSetup修饰的方法。因此,开发者可以在这个被修饰的方法内重定义组件的方法或重赋值组件的属性,其将在预览时生效。

  1. UI组件的方法
  • 在ArkTS页面代码中引入Hamock。
import { MockKit, when, MockSetup } from '@ohos/hamock'
  • 在目标组件中定义一个方法,并用@MockSetup修饰该方法。在这个方法中,使用MockKit模拟目标方法。
import { MockKit, when, MockSetup } from '@ohos/hamock'

@Entry
@Component
struct Index {
 // ...
 @MockSetup
 randomName() {
  let mocker: MockKit = new MockKit()
  let mockfunc: Object = mocker.mockFunc(this, this.method1)
  // mock 指定的方法在指定入参的返回值
  when(mockfunc)('test').afterReturn(1)
 }
 // ...
 // 业务场景调用方法
 const result = this.method1('test') // in previewer, result = 1
}
  1. UI组件的属性
  • 在ArkTS页面代码中引入Hamock。
import { MockSetup } from '@ohos/hamock'
  • 在目标组件中定义一个方法,并用@MockSetup修饰该方法。在这个方法中,对于需要Mock的属性,可以重新赋值。
import { MockSetup } from '@ohos/hamock'

@Component
struct Person {
 @Prop species: string
 // 在@MockSetup片段中,定义对象属性
 @MockSetup
 randomName() {
  this.species = 'primates'
 }
 //...
 // 业务场景调用属性(如果从初始化到调用期间,该属性无变化)
 const result = this.species // in previewer, result = primates
}

1.7.3. 模块的Mock

  1. 系统模块/依赖的模块
  • 在src/mock目录下新建一个ArkTS文件,在这个文件内定义目标Module的Mock实现。
import MeasureText from '@ohos.measure'

// 类的mock使用继承(extends)的方式实现
class MockMeasureText extends MeasureText {
  // 定义mock实现
  static measureText(): number {
    console.log('Return value of the mock measureText function')
    return 100
  }
}

export default MockMeasureText
  • 在Mock配置文件(src/mock/mock-config.json5)中定义目标Module与Mock实现的替换关系。该替换关系仅会在预览场景下生效。
{
  "@ohos.measure": { // 待替换的moduleName
    "source": "src/mock/MeasureText.mock.ets" // mock代码的路径,相对于模块根目录
  },
  // ...
}
  • 在原调用处中添加Hilog日志,方便在预览时,在Log中打印获取返回值,从而验证Mock是否生效。
hilog.debug(
  DomainNumber, 
  logTag, 
  'Mock %{public}s', 
  `${MeasureText.measureText({textContent: 'Hello World'})}`
)
  1. 本地模块
  • 在src/mock目录下新建一个ArkTS文件,在这个文件内定义目标Module的Mock实现。
// import local module

// get origin default export
import LibDefaultExport from '../../../main/ets/utils/CommonUtils' 
// get origin export on demand
import { methodA, ObjectB } from '../../../main/ets/utils/CommonUtils'

class DefaultExportMock extends LibDefaultExport {
  // 定义mock实现
  public static getName(): String {
    return "Mocked Name"
  }
}

export {
  methodA,
  ObjectB,
}

export default DefaultExportMock

其中CommonUtils.ets文件示例如下:

export default class CommonUtils {
  public static getName(): String {
    return "origin name"
  }

  public static getTitle(): String {
    return "origin title"
  }
}

export const methodA = (): string => {
  return "methodA"
}

export const ObjectB: Object = new Object()
  • 在Mock配置文件(src/mock/mock-config.json5)中定义目标Module与Mock实现的替换关系。该替换关系仅会在预览场景下生效。
{
  "utils/CommonUtils.ets": { // 本地module只支持ets/xxx的相对路径,并需明确文件后缀
    "source": "src/mock/module/utils/CommonUtils.mock.ts"
  },
  // ...
}
  • 在原调用处中添加Hilog日志,方便在预览时,在Log中打印获取返回值,从而验证Mock是否生效。
hilog.debug(DomainNumber, logTag, 'Mock %{public}s', CommonUtils.getName())

2. 使用模拟器调试

DevEco Studio提供了模拟器(Emulator),为开发者提供了运行和调试HarmonyOS应用/元服务的便捷途径。模拟器还原了真实设备的基本功能,如屏幕旋转、音量调节、模拟的硬件传感器和指定设备的位置等。这使得您无需拥有不同类型的物理设备,就可以在各种虚拟环境中轻松测试您的应用程序。在某些情况下,在模拟器上进行应用测试,相比于在实际物理设备上的测试,有着更快速、更高效的体验。例如,模拟器提供了摇一摇的操作模拟,让您能够轻松触发摇一摇功能。总的来说,无论是快速原型验证还是功能测试,模拟器都是满足您测试需求的最佳选择。通过DevEco Studio提供的模拟器,您可以更灵活、更高效地进行应用开发和调试,提升您的开发体验与效率。

2.1. 使用环境

模拟器在本地计算机上创建和运行,在运行和调试应用/元服务时可以保持良好的流畅性和稳定性,但是需要耗费一定的计算机资源,具体的运行环境要求参见表3。

系统类型

运行环境要求

Windows(X86)

  • Windows 10 企业版、专业版或教育版及以上,且操作系统版本不低于10.0.18363。
  • 具有二级地址转换 (SLAT) 的 64 位处理器。
  • CPU支持AES指令集。
  • CPU 支持 VM 监视器模式扩展(Intel CPU 的 VT-c 技术)。
  • 系统内存16GB及以上。
  • 不支持在虚拟机系统中运行模拟器。
  • 系统OpenGL版本4.1及以上。
  • 屏幕分辨率1280*800像素以上。

macOS(ARM)

  • macOS系统为12.5及以上版本。
  • 系统内存8GB及以上。
  • 不支持在虚拟机系统中运行模拟器。
  • 系统OpenGL版本4.1及以上。
  • 屏幕分辨率1280*800像素以上。

表3 使用环境要求

2.2. 创建模拟器

  1. 点击菜单栏的Tools > Device Manager,点击右下角的Edit设置模拟器实例的存储路径Local Emulator Location,Mac默认存储在~/.Huawei/Emulator/deployed下,Windows默认存储在C:\Users\xxx\AppData\Local\Huawei\Emulator\deployed下。如图34所示。

34 创建模拟器

  1. Local Emulator页签中,单击右下角的New Emulator按钮,创建一个模拟器。

在模拟器配置界面,可以选择一个默认的设备模板,首次使用时会提示“Download the system image first”,请点击设备右侧的

下载模拟器镜像,您也可以在该界面更新或删除不同设备的模拟器镜像。单击Edit可以设置镜像文件的存储路径。Mac默认存储在~/Library/Huawei/Sdk下,Windows默认存储在C:\Users\xxx\AppData\Local\Huawei\Sdk下。如图35所示。

图35 下载模拟器

  1. 单击Next,核实确定需要创建的模拟器的名称,内存和存储空间,然后单击Finish创建模拟器。如图36所示。

图36 虚拟机设置

  1. 在设备管理器页面,单击启动模拟器。如图37所示。

图37 启动模拟器

  1. 单击DevEco Studio的Run > Run'模块名称'。如图38所示。

图38 启动应用

  1. DevEco Studio会启动应用/元服务的编译构建与推包,完成后应用/元服务即可运行在模拟器上。如图39所示。

图39 模拟器启动效果。

2.3. 启动和关闭模拟器

在设备管理器页面,单击即可启动模拟器。模拟器启动时会默认携带上一次运行时的用户数据,包括用户上传的文件,安装的应用等。如果是新创建的模拟器,则不会携带用户数据。如果想清除上一次运行时的用户数据,点击Actions > > Wipe User Data。如图40所示。

图40 擦除用户数据

在模拟器运行期间,可以点击Actions > > Show on Disk显示模拟器在本地生成的用户数据。点击Actions > > Generate logs可以生成模拟器自启动到此刻的所有日志信息。想要关闭运行时的模拟器,可以在设备管理器页面点击,或者点击模拟器工具栏上的关闭按钮

模拟器关闭后,点击Actions > > Delete可以删除模拟器,并清除模拟器的用户数据和配置信息。

2.4. 操控屏幕

当模拟器运行时,您可以使用鼠标来模拟手指和设备屏幕进行交互,同时可以结合键盘来实现高级的屏幕操作,对应关系详见表4。

常用操作

描述

滑动屏幕

将鼠标放置屏幕上方,按住鼠标左键,在屏幕上轻扫,然后释放。

拖动项目

将鼠标放置屏幕中的项目上方, 按住鼠标左键,移动项目,然后释放。

单击屏幕

将鼠标放置屏幕上方,按住鼠标左键,然后释放。

双击屏幕

将鼠标放置屏幕上方,快速双击鼠标左键,然后释放。

长按屏幕

指向屏幕上的一个项目,按下鼠标左键,保持一段时间,然后释放。

输入文字

鼠标点击输入域,随后您可以使用计算机键盘或屏幕上弹出的软键盘在模拟器中键入文字。

双指缩放

Windows系统按下Control键(macOS上的Command)会弹出一个捏合手势多点触控界面。单击鼠标左键模拟按住双指,并释放鼠标左键模拟松开双指。鼠标充当第一个手指,穿过锚点是第二个手指。拖动光标以移动第一个点。

垂直滑动

在屏幕上打开一个垂直菜单,使用鼠标滚轮滚动菜单项。单击菜单项可进行选择。

复制粘贴

在计算机上复制一段文本后,您可以在模拟器屏幕的文本输入框内进行粘贴。可支持复制的最大文本长度为30000英文字符,超过该长度会对文本进行截断。

表4 屏幕操控常见操作

2.5. 使用工具栏

工具栏上集成了模拟器的各种调试工具和控制选项,其中的扩展菜单栏包含了更加丰富的扩展功能。注意,部分工具栏按键需要在模拟器开机亮屏后才能使用。表5对工具栏的各个按键功能作简要说明:

按键

功能描述

关闭

关闭模拟器

最小化

最小化模拟器窗口

更多

打开侧边扩展菜单

置顶

将模拟器置于所有打开窗口的顶层

左旋转

将设备屏幕逆时针旋转90度

右旋转

将设备屏幕顺时针旋转90度

增大音量

调高设备音量,长按可持续调高设备音量

减小音量

调低设备音量,长按可持续调低设备音量

截屏

生成当前屏幕的截图,并将图片保存在本地计算机

返回

返回上一屏幕或关闭对话框、选项菜单、通知面板或屏幕键盘

主屏

返回Home界面

最近

点按可打开最近使用过的应用的缩略图列表。要打开某个应用,请点按其缩略图。要从列表中删除缩略图,请向上滑动缩略图

摇一摇

触发设备摇一摇操作

电池

打开电池模拟面板

GPS

打开GPS模拟面板

虚拟传感器

打开虚拟传感器面板

网络代理

打开网络代理面板

设置

打开设置面板。可设置模拟器主题、截屏保存路径、模拟器使用语言

Bug报告

打开Bug报告面板。可以保存Bug日志到本地。点击发送可前往官网在线提单

关于

打开关于面板。可以查看模拟器相关信息及许可证

展开

仅支持可折叠设备。切换设备形态至展开态

悬停

仅支持可折叠设备。切换设备形态至悬停态,并显示折痕避让区

折叠

仅支持可折叠设备。切换设备形态至折叠态

表5 工具栏按键及功能

2.6. 移动和缩放模拟器

  • 移动模拟器

您可以使用鼠标拖动模拟器到屏幕的指定位置。首先将鼠标放在屏幕边缘,当鼠标变成样式,按住鼠标左键并移动即可拖动模拟器。当模拟器被拖动到期望位置后,松开鼠标左键即可停止拖动。

  • 缩放模拟器

如需改变模拟器大小,将鼠标放到屏幕四角的任意一处,当鼠标变成,按住鼠标左键并移动即可缩放模拟器。当模拟器被缩放到期望大小后,松开鼠标左键即可完成缩放。如图41所示。

图41 缩放模拟器演示

2.7. 生成应用图标

DevEco Studio支持Image Asset功能,帮助开发者生成适应不同设备、不同屏幕密度的图标,并展示图标在目录中的具体位置。

Image Asset支持生成以下两种类型图标:

  • icon:应用图标(手机或其他设备桌面及设置>应用中出现的应用图标)。
  • start window icon:启动页图标。
  1. 在工程中选中模块或文件,右键单击New > Image Asset,进入图标配置页面。如图42所示。

图42 生成应用图标入口

  1. 需要根据向导配置图标样式、大小等基本信息。
  • Device:选择当前配置的图标生效的设备类型。
  • Icon Type:展示当前图标的类型。
  • Name:配置图标名称。命名支持使用字母、数字、下划线,长度最多128个字符;不支持中文命名;
  • Foreground Layer:分层图标资源前景层。可配置下列字段信息:
    • Path:选择前景Image存放路径。推荐使用的图标尺寸为1024px*1024px,保证图标整体的清晰性。
    • Trim:选择Yes,将调整图标图形与边框之间的距离,同时会去除图片周围多余的透明空间。
    • Resize:拖动滑块,设置图形的缩放比例。

如图43所示。

图43 应用图标设置

  • Background Layer:分层图标资源背景层。请配置下列字段信息:
    • Asset Type:设置图标背景类型。可以选择颜色(Color)或图像(Image)。
    • Color:点击色块区域,选择适当的背景色。
    • Path:选择背景Image路径。推荐使用的图标尺寸为1024px*1024px,保证图标整体的清晰性。
    • Trim:选择Yes,将调整图标图形与边框之间的距离,同时会去除图片周围多余的透明空间。
    • Resize:拖动滑块,设置图形的缩放比例。
  1. 点击Next,确认图标的存储路径和相应的尺寸信息,图标将默认存放在resources 目录下。点击Finish完成图标生成。
  2. 如需配置桌面或设置页面出现的应用图标,可将module.json5文件中icon字段修改为新生成的图标名称;如需修改启动页的icon图标,可将module.json5文件中startWindowIcon字段修改为新生成的图标名称。

2.8. 安装应用程序包

可以将本地的HAP包安装到模拟器上,只需要将本地的HAP包拖动到屏幕上即可进行安装,支持一次性拖拽安装多个HAP包。模拟器也支持安装包含HSP文件的应用,只需要将HSP和HAP一起拖动到屏幕上即可进行安装。也可以在命令行窗口进入Deveco Studio安装目录的sdk\default\openharmony\toolchains目录下,使用hdc app install命令安装包。安装完成后,可在应用列表里查看已安装的应用。如图44所示。

图44 安装应用程序包演示截图

2.9. 更多的扩展能力

2.9.1. 电池

您可以在模拟器上模拟不同电池状态。在扩展菜单栏上点击打开电池模拟界面。在该界面,您可以手动输入或拖动滑块来改变电量百分比,也可以点击切换电池的充电/放电状态。电池具有以下三种充电状态:

  • ENABLE:开启充电按钮,此时正在充电且电量没充满
  • NONE:关闭充电按钮,此时停止充电
  • FULL:开启充电按钮,且电量为100%。电量已充满

在应用中,您可以通过@ohos.batteryInfo模块查询模拟器的剩余电量以及充电状态。如图45所示。

图45 电池模拟

2.9.2. GPS定位

模拟器可以模拟设备所处的位置。您可以打开扩展菜单,并点击进行位置信息的设置。模拟器提供以下三种方式的GPS位置模拟:

  • 手动设置:在该界面,您可以手动输入此时所处位置的经度,纬度,海拔以及方位角。您也可以通过点击城市下拉框,快速定位到所选城市。
  • 导入:在导入界面您可以注入一段时间内的连续位置信息。点击导入本地的GPX文件,点击即可开始模拟GPX文件中的轨迹。此外,您还可以选择不同回放速率来改变移动的速度。
  • 场景模拟:如果没有本地的GPX文件,您可以在场景模拟界面使用我们预置的GPX文件。我们在模拟器内部预置了户外跑步、户外骑行、驾驶导航三种场景的GPX文件,点击即可开始轨迹模拟。

在应用中,您可以通过@ohos.geoLocationManager模块获取模拟器的位置信息。如图46所示。

图46 GPS模拟

2.9.3. 虚拟传感器

模拟器提供了虚拟传感器来模拟硬件传感器的能力。在扩展菜单上点击打开虚拟传感器界面。在该界面,您可以调节不同的传感器来测试您的应用,使用@ohos.sensor模块监听传感器值的变化。模拟器提供以下虚拟传感器:

  • 计步传感器:用于测量步数,对应的SensorId为PEDOMETER
  • 环境温度传感器:用于测量环境温度,对应的SensorId为AMBIENT_TEMPERATURE
  • 湿度传感器:用于测量湿度,对应的SensorId为HUMIDITY
  • 环境光传感器:用于测量光照强度,对应的SensorId为AMBIENT_LIGHT

您可以拖动滑动条或者直接在文本框输入来改变不同传感器的值。如图47所示。

图47 虚拟传感器模拟

--未完待续--

本文配套视频教程观看地址:

05-预览器的使用-常用功能

06-预览器的使用-预览数据模拟(Mock)

07-预览器的使用-PreviewChecker监测规则

08-使用模拟器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值