目录

鸿蒙开源第三方组件 -- B站开源弹幕库引擎的使用

Round 1  弹幕库的基础知识

Round 2  弹幕库的使用方法

Round 3  sample解析

Round 4  请大家关注我们,后续还有更多内容~

附录 弹幕库的使用方法文字版


鸿蒙开源第三方组件 -- B站开源弹幕库引擎的使用

本周开始,我们将兑现承诺,逐步开源一些我们的成果,首先给大家带来的是鸿蒙开源第三方组件系列01——弹幕库的使用和sample讲解。

今天向大家介绍的弹幕库组件是基于github上哔哩哔哩开源的项目(https://github.com/bilibili/DanmakuFlameMaster)所移植的。当前我们已经在鸿蒙系统上实现了弹幕的隐藏、显示、暂停、继续、发送、定时发送弹幕等一系列的功能,并开源了我们移植的源码(https://gitee.com/isrc_ohos/danmaku-flame-master_ohos)。

为了更加清晰的介绍弹幕库的作用和使用方法,本文将从基础知识、使用方法、 sample解析三个方面进行讲解。

Round 1  弹幕库的基础知识

弹幕库是一个开源的三方库,在正式讲解弹幕库的使用之前,我们先来了解下第三方库的含义。第三方库是指除本地类库、系统类库以外的类库,需要后来安装,才能调取使用。

简单来讲,相当于其他人写好了代码,实现了一些功能接口,我们直接调用这些接口,就可以实现一些我们想要的功能。

举个例子:在一个应用中实现视频缓存功能(断网后可继续播放提前缓存的内容),如果想要自己实现的话,需要调用鸿蒙/安卓底层的方法,代码量非常大。如果已经有第三方库可以做到这点,并且开源了出来,那么你只需要引用他的第三方库,然后调用此库内公开的一些方法接口,简简单单的几行代码就可以实现缓存功能。

了解了什么是第三方库,现在我们来看弹幕库组件。

看视频时,弹幕是必不可少的互动功能,这个功能就是调用了弹幕库组件来实现的。现在我们已经实现了弹幕库功能在鸿蒙平台的构建,接下来我们一起深入了解下鸿蒙平台的弹幕库吧!

Round 2  弹幕库的使用方法

关于弹幕库第三方组件的使用方法,我们准备了视频教学版和文字教学版,大家根据流量情况使用哦~

视频教学版链接:

鸿蒙系统-弹幕库组件的使用

弹幕库的使用方法详细包含了IDE安装、使用等细节,详细的文字版可以在最后的附录中查看哦~

Round 3  sample解析

导入弹幕库组件后,其整个项目的文件结构如下:

整个项目有2个module:entryDanmakuFlameMaster

在这里大家可以简单的理解:

  • DanmakuFlameMaster”就是之前提到的【第三方库】,它里面实现了弹幕功能的  所有细节。
  • entry就是一个具体的“客户端”module,它声明了在鸿蒙程序中的所有运行细节。
  • 最后跑起来的程序就是entryentry里面实现了所有功能,包括界面、按钮、功能等等,只不过entry调用了第三方库“DanmakuFlameMaster”,使用了它的能力来实现了一些弹幕相关的功能。

本篇文章主要介绍如何在已经构建好了“DanmakuFlameMaster”这个第三方库的基础上,来进行“entry”的开发。

为了节省篇幅,此处我们使用一个已经开发完成了的sample,接下来以这个sample为例,向大家讲解弹幕库组件的应用及效果。

将entry展开之后,我们可以看到,真正的代码是真的很少,主要的功能都集中在MainAbility和MainAbilitySlice文件中,加起来的代码量也就不到1000行。

接下面我们对这两个文件进行逐个解析。

一、 MainAbility,它是一切应用的入口。

根据鸿蒙能力,这里是可以通过setMainRoute()方法调用很多的Slice来进行功能的实现,上图标记的代码就是声明了MainRoute在MainAbilitySlice之中。

二、MainAbilitySlice,这个文件比较重要。

这个文件主要包括:import文件、初始化函数、功能实现函数三个部分。

1、import 文件 

此处import的文件可以分为三类:SDK文件、应用内文件和三方件文件。

SDK文件:  import后路径为ohos.....的。

应用内文件:import后路径为com.huawei......的。

三方库文件:import后路径为master.flame.danmuku......的。

2、初始化函数

如图所示,初始化函数一共包含六个,我们将其分为五个部分,这五个部分与图中函数的顺序对应如下:UI初始化、视频源的设置与播放(2个函数)、输出系统内存信息、设置数据源(这里的数据指的是弹幕数据)以及弹幕输出。这五个部分之中,我们主要讲解其中的三个与弹幕库密切相关的部分:UI初始化、弹幕数据源与弹幕输出。

1)onStart方法实现了UI初始化

以上代码构建了弹幕库的显示窗口 设置了屏幕参数的读取 。

2)弹幕数据源和最终的弹幕输出

这两个部分有强相关,我们放在一起分为三步来介绍。

第一步:声明全局变量 mParser用来承载弹幕数据。

第二步:在加载数据源处调用了我们的第三方库的BiliDanmukuParser类,然后从我们的resources中读取弹幕数据:

可以看到在datasource其实就是读取了这里的文件,大家可以自己点进去看一下这个文件内容,里面就是我们的“弹幕数据库”。

第三步:将载入了弹幕的BaseDanmakuParser类对象,return给全局变量mParser

(如果大家想找到这部分代码的话,可以到findview()中去寻找)。

3、功能实现函数

在UI上可见的一些按钮,每个按钮都对应一个callback函数,点击按钮,执行对应的函数体,实现相关功能。

上图所示为点击不同的按钮,出现不同的弹幕效果,例如:隐藏弹幕、显示弹幕、暂停弹幕等。

Round 4  请大家关注我们,后续还有更多内容~

如果大家对三方库“DanmakuFlameMaster”更感兴趣,可以继续关注我们后续的内容。在下一期的内容中我们会详细的教大家如何实现一个三方库的移植,分享“DanmakuFlameMaster”在实际移植过程中遇到的一些困难和解决方案 。

点个关注不迷路,内容更新更速度~

附录 弹幕库的使用方法文字版

1. 访问华为开发者developer官网网站,点击立即下载

https://developer.harmonyos.com/cn/develop/deveco-studio

2. 选择下载本机系统对应的版本(本文档以windows为例子进行后续操作,mac上的操作与本教程相差不大,可供参考)

3. 下载完成后进行解压,并启动解压后的exe文件

(本文档中所展示的Dev版本号为deveco-studio-2.0.12.201)

1)

2)

3)

前面两个勾一下,第三个可勾可不勾(为右键菜单添加“ 将此目录打开为鸿蒙project ”)。

4) Install

5) 等待安装完成

6) Reboot

4. 启动桌面上的Dev studio

① 选择第三个选项,OK。

②勾选同意并点击Agree

③选择open project

④打开下载好的弹幕库组件project地址,并点击OK

5.

①选择File-Settings,进行SDK的安装操作

②按照图中设置目录找到HarmonyOS SDK设置项,并选择Edit

③选择一个合适的目录,点击Next *3

④ 等待下载并安装完成

⑤ Finish

6.

① 打开项目的build.gradle文件,选择try again

② 等待sync完成。

7. sync和build完成的页面。

【小贴士】

当第一次sync and build完成后,为了之后运行的流畅性,可做如下操作:

①点击最右侧的Gradle标签

②将倒数第二个按钮Offline mode启动。

小贴士结束~进行了此步操作后,之后的build会很速度,不再需要重新下载内容。

8. 在DevEco Studio菜单栏,点击Tools > HVD Manager。首次使用模拟器,需下载模拟器相关资源,请点击OK,等待资源下载完成后,请重新点击Tools > HVD Manager。

9. 在浏览器中弹出华为开发者联盟帐号登录界面,请输入已实名认证的华为开发者联盟帐号的用户名和密码进行登录,授权完成后进入设备选择界面,选择P40,点击运行。

10. 选择entry

11. 点击run按钮

12. 选择连接的华为设备,OK。

13. 运行成功。

【小贴士】

需要注意的是由于当前华为提供的虚拟机对横向应用的支持性不是很好,如果不能正常运行大家可以多尝试几次点击下方按钮中最左侧的旋转屏幕,使屏幕适配横纵。

HarmonyOS开源第三方组件 —— B站开源弹幕库引擎的使用相关推荐

  1. 鸿蒙开源第三方组件——ANR异常监测组件 ANR-WatchDog-ohos

    前言 基于安卓平台的消息弹框组件ANR-WatchDog(https://github.com/SalomonBrys/ANR-WatchDog),实现鸿蒙化迁移和重构.代码已经开源到(https:/ ...

  2. android jpct ae教程,jPCT-AE - Android开源项目 - 组件类库 - JAVA开源项目 - 开源吧

    相关开源项目 Android平台的XMPP开发包 asmack: asmack 是smack 在 Android 平台上的开发包和补丁程序.Smack是一个开源,易于使用的XMPP(jabber)客户 ...

  3. iOS可能用到的开源库和第三方组件

    1.通过CocoaPods安装 [AFNetworking](https://github.com/AFNetworking/AFNetworking) 网络请求组件[FMDB](https://gi ...

  4. iOS 项目中用到的一些开源库和第三方组件

    iOS 项目中用到的一些 iOS 开源库和第三方组件 分享一下我目前所在公司 iOS 项目中用到的一些 iOS 开源库和第三方组件, 感谢开源, 减少了我们的劳动力, 节约了我们大量的时间, 让我们有 ...

  5. 2021开源免费CMS建站系统怎么选择?

    着互联网及web应用技术的快速发展,如今的网站建设已经发生了很大变化,不再像过去那样一个980px网站即可完成,如今什么响应式网站.三合一网站.四合一网站.甚至五合一都出现在了我们的视野,同时针对企业 ...

  6. itext java_iText - PDF类库 - 组件类库 - JAVA开源项目 - 开源吧

    相关开源项目 Connla:Connla是一个Java包用于创建可导成TXT,CSV,HTML,XHTML,XML,PDF和XLS等格式的数据集. FOP:FOP是由James Tauber发起的一个 ...

  7. WeUI - 微信官方推出的免费开源 UI 组件库,上手简单,风格简约,在微信生态开发轻量项目的绝佳选择

    微信早年发布的 UI 框架,对想要创建让微信用户感到熟悉的应用来说,是一个好选择. 关于 WeUI WeUI 一款由腾讯微信团队开发的 UI 组件库,是一套同微信原生视觉体验一致的基础样式库,由微信官 ...

  8. asp easp 开源框架_国内ASP开源建站系统一览

    开源建站程序让编程高手和只懂打字上网的人都可以快速建立一个功能强大.界面漂亮的网站.不管你是想建一个博客.论坛.CMS.电子商务网站,或是Wiki.相册管理.RSS聚合和类Digg网站.你都可以通过这 ...

  9. 2018最受欢迎开源免费CMS建站系统排行榜

    2018最受欢迎开源免费CMS建站系统排行榜 随着互联网及web应用技术的蓬勃发展,网上针对企业建站的各种CMS建站系统层出不穷,如今企业建站和维护的成本已不像过去那么高.经常在网上看见有人问及&qu ...

  10. Nopcommerce 2.6 大型B2C购物平台整站开源提供

    Nopcommerce 2.6 大型B2C购物平台整站开源提供 概要: 1. 提供全部中文开发文档说明. 2. 提供完整数据库设计字典. 3. 对Fluent validation 进行了功能扩展,J ...

最新文章

  1. 通俗讲解分布式锁,看完不懂算我输
  2. JDK,JRE和JVM三者的关系以及java的运行机制,环境变量,三大版本,特点
  3. 用于大数据开发的Centos7操作系统安装过程中遇到的问题总结
  4. 注解_自定义注解_格式本质
  5. 【Python 必会技巧】使用 zip() 函数对序列进行压缩和解压操作
  6. linux网络编程——客户端编程
  7. Git检出远程库的分支等相关操作
  8. 在算法横行的时代,仍需要人类把关
  9. linux 截图软件安装,Ubuntu 安装截图工具Shutter,并设置快捷键 Ctrl+Alt+A
  10. Spring依赖注入流程【完整版】(populateBean方法内部执行流程)
  11. XenCenter创建虚拟机
  12. 浅谈安全攻防场景下面的安全检测
  13. VScode下载安装及使用教程
  14. 举个栗子!Tableau 技巧(109):用 LOD 计算产品销售周期
  15. R 语言 用黎曼和求近似 积分
  16. three.js判断两个向量(角度)夹角误差是否小于某个值
  17. Java读写txt文件案例-统计学生名单
  18. 无人机倾斜摄影测量影像处理关键技术
  19. Spring AOP切入点表达式
  20. 【渝粤教育】电大中专跨境电子商务理论与实务 (24)作业 题库

热门文章

  1. srs推flv流_SRS流媒体服务器之HLS源码分析(3)
  2. win7系统下装ubuntu系统
  3. 如何不如计算机科学,第四轮学科评估结果:西交不如华中武大,你怎么看?很多网友表示不满!...
  4. C/C++——C++中new与malloc的10点区别
  5. windows函数入口问题 UNREFERENCED_PARAMETER的用处 _tWinMain与wWinMain又有什么区别
  6. Go语言 for循环案例
  7. GitHub 标星 15.3k,Java 编程思想最新中文版
  8. Java代码实现—冒泡排序
  9. csdn积分获取攻略
  10. C语言实现贪吃蛇小游戏