[文章]【HarmonyOS HiSpark AI Camera试用连载 】智能家用仪表盘开发-其一

阅读量0
0
0
# 智能家用仪表盘-其一

> 鸿蒙 的 arkUI 框架可以做到一端开发,多端部属,开发效率很高,这里使用其来开发一款智能家用仪表盘应用。

## 开发环境参考

* 系统 : Ubuntu18.04 LTS(虚拟机)、Windows10 21H2
* llvm : 10.0.1
* gn : 1717
* hc-gen : 0.65
* ninja : 1.10.1
* devicetool-linux-tool : 3.0.0.300
* vscode : 1.62.2
* DevEco Device Tool:3.0 Beta 2
* 系统镜像 : hispark_taurus.tar.gz (v3.1-Release)

## 鸿蒙 3.1 系统配置流程

* 下载下来的 hispark_taurus.tar.gz 看起来是代码镜像编译完的 out/hispark_taurus 目录中内容,所以应该可以直接替换原有的 3.0 镜像,就不用配置 HiTool来下载了。
* 直接把 hispark_taurus.tar.gz 复制到 之前 3.0 代码编译完的 out/hispark_taurus 目录中 (其实不知道这样做对不对,但是 15G 的代码虚拟机扛不住)

config3_1.jpg


* 可以看到 kernel 编译完的输出在 out/hispark_taurus/ipcamera_hispark_taurus/OHOS_Image.bin 后面的 rootfs 和 userfs 在同一目录

config3_1_.jpg


* 把 hispark_taurus.tar.gz 直接解压到 out/hispark_taurus/ipcamera_hispark_taurus/ 中
* 直接烧录到开发板

## HAP 开发 -- 顶部 Tab 栏开发

* 测试界面采用 flex 自适应布局

* hml 代码

  1. <div class="container">
  2. <stack class="container">
  3.      <stack style="width: 960px;height: 480px;">
  4. <!--         上边栏-->
  5.          <div style="height: 15%;width: 100%;top: 0%;align-items: center; background-color: #3a3d46;">
  6.              <div style="padding: 0 0px; height: 100%;width: 100%;justify-content: space-between;display: flex; ">
  7.                  <text if="{{this.select(0)}}"  class="tab_activate">Home</text>
  8.                  <text if="{{!this.select(0)}}" class="tab_normal" on:click="goto(0)">Home</text>
  9.                  <text if="{{this.select(1)}}"  class="tab_activate">Light</text>
  10.                  <text if="{{!this.select(1)}}" class="tab_normal" on:click="goto(1)">Light</text>
  11.                  <text if="{{this.select(2)}}"  class="tab_activate">ToDo</text>
  12.                  <text if="{{!this.select(2)}}" class="tab_normal" on:click="goto(2)">ToDo</text>
  13.                  <text if="{{this.select(3)}}"  class="tab_activate">Other</text>
  14.                  <text if="{{!this.select(3)}}" class="tab_normal" on:click="goto(3)">Other</text>
  15. <!--                 <text class="tab_normal" on:click="exit()">Exit</text>-->
  16.                  <div class="tab_normal">
  17.                      <image class="wifi-btn"  src="/common/icon_wifi_on.png"></image>
  18.                      <text class="tab_normal" style="width: 80%; margin: 10px 0px;">12:00</text>
  19.                  </div>
  20.              </div>
  21.          </div>
  22.          <swiper class="swiper" index="{{index}}" on:change="change">

  23.              <div class="swiperitem" style="background-color: red;">

  24.              </div>
  25.              <div class="swiperitem" style="background-color: blue;">

  26.              </div>
  27.              <div class="swiperitem" style="background-color: green;">
  28.              </div>
  29.              <div class="swiperitem" style="background-color: white;">

  30.              </div>

  31.          </swiper>
  32.      </stack>
  33. </stack>
  34. </div>
复制代码

* CSS 代码
  1. .container {
  2.     display: flex;
  3. /* 让一行中的元素平均分配宽度 */
  4.     justify-content: space-around;
  5.     align-items: center;
  6. /* 元素在一行放不下时自动换行 */
  7.     flex-wrap: wrap;
  8.     left: 0px;
  9.     top: 0px;
  10.     width: 960px;
  11.     height: 480px;
  12.     background-color: #18181a;
  13. }

  14. .swiper {
  15.     top: 15%;
  16.     width: 100%;
  17.     height: 90%;
  18.     justify-content: center;
  19. }

  20. .swiperitem {
  21.     width: 100%;
  22.     height: 100%;
  23. /*    display: flex;*/
  24.     align-items: flex-start;
  25.     justify-content: center;
  26. /*    left: 2.5%;*/
  27. /*    top: 2.5%;*/
  28.     background-color: #18181a;
  29. }

  30. .show-state {
  31. /*    width: 106px;*/
  32. /*    height: 60px;*/
  33.     font-size: 24px;
  34.     text-align: center;
  35. /*    color: #ffffff;*/
  36. }

  37. .tab_normal {
  38. /*    background-color: deepskyblue;*/
  39.     height: 100%;
  40.     width: 20%;
  41.     font-size: 32px;
  42.     text-align: center;
  43.     color: white;
  44. }

  45. .tab_activate {
  46.     background-color: #455152;
  47.     height: 100%;
  48.     width: 20%;
  49.     text-align: center;
  50.     font-size: 32px;
  51. }

  52. .wifi-btn {
  53.     width: 38px;
  54.     height: 38px;
  55.     margin: 15px 0px;
  56.     margin-left: 20px;
  57. }

  58. .img_btn{
  59.     width: 200px;
  60.     height: 96px;
  61.     flex-direction: row;/*    justify-content: center;*/
  62.     align-items: center;
  63.     background-color: #3a3d46;

  64.     border-radius: 24px;
  65.     margin: 10px;
  66. }

  67. .img_btn_text {
  68.     width: 106px;
  69.     height: 60px;
  70.     font-size: 24px;
  71.     text-align: center;
  72.     color: #ffffff;
  73. }

  74. .switch-image {
  75.     width: 60px;
  76.     height: 36px;
  77. /*    margin-left: 18px;*/
  78. /*    margin-top: 9px;*/
  79. /*    margin-left: 260px;!*    background-color: #ff0000;*!*/
  80. }
复制代码

* 编译 hap 包

hapbuild.jpg



* 从鸿蒙 3.1 编译结果文件中找 dev_tools 的 bm 工具

bm3_1.jpg


* 打开右边的模拟器查看

tab.gif


* SD插在开发板上、串口连接到开发板
* 取消证书验证关闭、打开 debug 模式

  1. cd sdcard
  2. ./bm set -d enable
  3. ./bm set -s disable
  4. ./bm install -p pomin.hap
复制代码

hapinstall3_1.jpg


* 打开看看

视频在下方

* 忘记写退出按键了,就直接 task 命令和 kill 命令终止线程吧

kill.jpg


回帖

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
链接复制成功,分享给好友