分布式设备虚拟化平台可以实现不同设备的资源融合、设备管理、数据处理,多种设备共同形成一个[超级虚拟终端].
视频通话场景举例:
在做家务时接听视频电话,可以将手机与智慧屏连接,并将智慧屏的屏幕、摄像头与音箱虚拟化为本地资源,替代手机自身的屏幕、摄像头、听筒与扬声器,实现一边做家务、一边通过智慧屏和音箱来视频通话。
1.3.6 分布式软总线分布式软总线是手机、平板、智能穿戴、智慧屏、车机等分布式设备的通信基座,为设备之间的互联互通提供了统一的分布式通信能力,为设备之间的无感发现和零等待传输创造了条件。 开发者只需聚焦于业务逻辑的实现,无需关注组网方式与底层协议。
多屏联动课堂举例:
老师通过智慧屏授课,与学生开展互动,营造课堂氛围;学生通过手机完成课程学习和随堂问答。统一、全连接的逻辑网络确保了传输通道的高带宽、低时延、高可靠。
华为开发者注册
3.如您同意《华为帐号与云空间隐私的声明》和《华为帐号与云空间用户协议》,点击“同意”,注册成功后将显示实名认证页面。
2.3 开发环境准备2.4.1 运行环境要求- 操作系统:Windows10 64位 - 内存:8GB及以上 - 硬盘:100GB及以上 - 分辨率:1280*800像素及以上2.4.2 下载和安装DevEco Studio
DevEco Studio的编译构建依赖JDK,DevEco Studio预置了Open JDK,版本为1.8,安装过程中会自动安装JDK。进入HUAWEI DevEco Studio产品页,点击下载列表后的按钮,下载DevEco Studio。下载完成后,双击下载的“deveco-studio-xxxx.exe”,进入DevEco Studio安装向导,在如下安装选项界面勾选64-bit launcher后,点击Next,直至安装完成。
3. 第一个程序Hello World3.1 创建工程打开DevEco Studio,在欢迎页点击Create HarmonyOS Project,创建一个新工程。Device选择Phone,Template选择Empty Ability(Java)工程模板,然后点击Next。在弹出的界面中点击Login,使用注册的账号登录.点击DevEco Studio工具栏中的按钮运行工程,或使用默认快捷键Shift F10(Mac为Control R)运行工程。4. 工程结构及应用程序结构4.1 工程目录4.2 entry应用的主模块。一个APP中,对于同一设备类型必须有且只有一个entry类型的HAP。4.2.1 hap文件
HarmonyOS的用户应用程序包以APP Pack(Application Package)形式发布,它是由一个或多个HAP(HarmonyOS AbilityPackage)以及描述每个HAP属性的pack.info组成。 一个HAP是由代码、资源、第三方库及应用配置文件组成的模块包.
参考代码:
参考代码:
public class MainAbilitySlice extends AbilitySlice implements Component.ClickedListener { @Override public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_ability_main); //获取Button按钮,并绑定点击事件 findComponentById(ResourceTable.Id_btn1).setClickedListener(this); } @Override public void onClick(Component component) { //展现SecondAbilitySlice present(new SecondAbilitySlice(),new Intent()); } }8.2 不同Page间导航
需求:在工程中创建第二个Feature Ability(FA) SecondAbility,在MainAbility中放置一个Button,当点击Button时跳转到SecondAbility.
8.2.1 创建一个SecondAbility选择Ability的快捷创建方式,如下图.点击Finish后,发现,开发工具自动帮忙创建了SecondedAbilitySlice和对应的布局文件.8.2.2 注册SecondAbility因为我们选择的是用系统提供的Ability模板快速创建了Ability,因此,开发工具会把我们新建的Ability自动在config.json中进行注册.如下图.
8.2.3 启动SecondAbility在MainAbilitySlice中启动Second Ability,其中MainAbility的布局如下图所示.
参考代码:
public class MainAbilitySlice extends AbilitySlice { @Override public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_ability_main); //1.获取Button,并绑定点击事件,当点击时,启动SecondAbility findComponentById(ResourceTable.Id_btn1).setClickedListener(component -> { //2. 创建一个空的Intent,用于设置启动的目标 Intent secondIntent = new Intent(); //3. 创建Operation对象,用于给Intent封装数据 Operation operation = new Intent.OperationBuilder() //设置包名 .withBundleName("com.example.myapplication4") //设置目标Ability的名字(从config.json中拷贝,以避免写错) .withAbilityName("com.example.myapplication4.SecondAbility") .build(); //4. 将operation设置给Intent secondIntent.setOperation(operation); //5. 通过Intent启动目标Ability startAbility(secondIntent); }); } }
注意:
当根据Ability的名字启动时,在operation中还必须设置BundleName.
花粉社群VIP加油站
猜你喜欢