HarmonyOS实战开发-如何实现媒体提供方与媒体控制方自定义信息的交互功能。

这篇具有很好参考价值的文章主要介绍了HarmonyOS实战开发-如何实现媒体提供方与媒体控制方自定义信息的交互功能。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

介绍

本示例主要展示了媒体会话(媒体控制方)的相关功能,使用@ohos.multimedia.avsession等接口实现媒体提供方与媒体控制方自定义信息的交互功能。

注意: 此示例中媒体控制方所使用的能力仅对系统应用开放,更多信息请参见约束与限制。
此示例仅展示媒体控制方的相关功能,如果需要媒体会话提供的完整的自定义信息交互功能,请将本示例与媒体提供方示例共同使用。

效果预览

HarmonyOS实战开发-如何实现媒体提供方与媒体控制方自定义信息的交互功能。,鸿蒙,HarmonyOS,OpenHarmony,harmonyos,华为,鸿蒙应用开发,鸿蒙系统,鸿蒙开发,鸿蒙,HarmonyOS
使用说明(需与媒体提供方一起使用)

  1. 打开媒体控制方示例应用,可以看到音乐应用的历史记录。
  2. 点击播放按钮,应用的播放状态发生变化。
  3. 点击暂停按钮,应用的播放状态开始变化。
  4. 点击上一首按钮,界面展示播放列表中的上一首歌曲的信息。
  5. 点击下一首按钮,界面展示播放列表中的下一首歌曲的信息。
  6. 点击歌词按钮,界面中出现歌词。
  7. 点击播放列表按钮,界面中出现播放列表。
  8. 点击播放列表中的歌曲,媒体提供方切换到对应的歌曲。

工程目录

给出项目中关键的目录结构并描述它们的作用,示例如下:

entry/src/main/ets/
|---common
|---|---Log.ets                             //日志打印封装
|---feature
|---|---MediaController.ets                 //逻辑实现
|---pages
|---|---PresentPage.ets                    //界面实现

具体实现

  • 界面相关的实现都封装在pages/Index.ets下
  • 使用@StorageLink来设置与逻辑代码同步更新的变量,当逻辑代码中对应的变量更新时,界面会同步的刷新。
  • 通过引入逻辑代码对应的类,创建出对象,实现对onClick事件的响应,关键代码段:
import control from '../feature/MediaController'; controller = new control(); // 创建对象 await this.controller.startControl(); // 通过类的对象来调用逻辑代码

逻辑相关的实现都封装在feature/MediaController.ets下

应用的初始化相关操作

  • 链接变量
  • 通过AppStorage.SetAndLink()将逻辑代码中的变量与界面代码中使用@StorageLink声明的变量连接起来,通过set()与get()操作来修改或获取变量的值,关键代码段:
private isPlayingLink = undefined; this.isPlayingLink = AppStorage.SetAndLink('isPlaying', undefined); this.isPlayingLink.set(false); // 设置变量的值 let currentState : boolean = this.isPlayingLink.get(); // 获取变量的值
  • 获取当前设备中会话并创建Controller

通过接口getAllSessionDescriptors()获取当前设备中的媒体会话;

通过接口createController()创建媒体会话对应的控制器;

通过接口getHistoricalSessionDescriptors()获取当前设备中的媒体会话历史记录;

通过接口on(metadataChange | playbackStateChange | queueItemsChange | queueTitleChange | sessionEvent)开启对媒体提供方发送事件的监听,对媒体提供方的事件进行处理;

应用在运行中相关的操作

  • 发送基础控制命令到媒体提供方

基础控制命令可以通过接口sendControlCommand()发送。本示例中,从媒体控制方到媒体提供方的基础控制命令主要包括play, pause, playPrevious, playNext。发送命令的参考代码如下:

let command : AVSessionManager.AVControlCommand = { command : 'play', parameter : undefined } // 构造AVControlCommand参数 await controller.sendControlCommand(command); // 媒体会话控制器与媒体会话一一对应,通过sendControlCommand发送命令
  • 获取自定义会话数据(以获取歌词为例)

说明:

本示例中,媒体会话控制方会发送给媒体会话提供方一个“打开歌词”的命令,媒体会话提供方接收到命令后,会在歌词信息更新时发送歌词给媒体会话控制方。

媒体控制方可以使用接口sendCommonCommand()发送自定义控制命令,示例代码如下:

let paramStruct = {'lyrics' : this.isLyric}; await controller.sendCommonCommand('lyrics', paramStruct);

当媒体会话提供方接收到命令后,会通过接口dispatchSessionEvent()与接口setExtras()将歌词信息发送给媒体会话控制方。(此部分请参见媒体会话提供方Sample)

  • 获取当前会话信息

通过接口getAVQueueItems()获取当前歌曲列表信息;

通过接口getAVQueueTitle()获取当前歌曲列表名称信息;

通过接口getAVPlaybackState()获取当前歌曲播放状态信息;

通过接口getAVMetadata()获取当前歌曲媒体会话元数据信息;

相关权限

系统应用权限

因为媒体控制方相关接口仅对系统应用开放,开发媒体控制方应用前需要确认是否是系统应用。

网络权限(可选)

如果需要展示媒体提供方提供的网络资源(例如:Url形式的图片)

请在需要获取网络权限的Ability的module.json5中添加以下配置:

{
  "module": {
      "requestPermissions": [
        {
          "name": "ohos.permission.INTERNET"
        }
      ]
  }
}

Bundle相关权限(可选)

如果需要通过媒体提供方的包名来获取媒体提供方的应用名与应用图标,需要申请Bundle权限ohos.permission.GET_BUNDLE_INFO_PRIVILEGED

请在需要获取Bundle信息权限的Ability的module.json5中添加以下配置:

{
  "module": {
      "requestPermissions": [
        {
          "name": "ohos.permission.GET_BUNDLE_INFO_PRIVILEGED"
        }
      ]
  }
}

依赖

此示例仅展示媒体控制方的相关功能,如果需要媒体会话提供的完整的自定义信息交互功能,请将本示例与媒体提供方示例共同使用。

约束与限制

  1. 本示例仅支持标准系统上运行,支持设备:RK3568。
  2. 本示例为Stage模型,支持API10版本SDK,SDK版本号(API Version 10 Release),镜像版本号(4.0Release)
  3. 本示例需要使用DevEco Studio 版本号(4.0 Release)及以上版本才可编译运行。
  4. 本示例涉及系统接口,需要配置系统应用签名,可以参考特殊权限配置方法
    ,把配置文件中的“app-feature”字段信息改为“hos_system_app”。

下载

如需单独下载本工程,执行如下命令:

git init
git config core.sparsecheckout true
echo code/BasicFeature/Media/AVSession/MediaController > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
git pull origin master

为了帮助大家更深入有效的学习到鸿蒙开发知识点,小编特意给大家准备了一份全套最新版的HarmonyOS NEXT学习资源,获取完整版方式请点击→HarmonyOS教学视频:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

HarmonyOS教学视频:语法ArkTS、TypeScript、ArkUI等…视频教程

HarmonyOS实战开发-如何实现媒体提供方与媒体控制方自定义信息的交互功能。,鸿蒙,HarmonyOS,OpenHarmony,harmonyos,华为,鸿蒙应用开发,鸿蒙系统,鸿蒙开发,鸿蒙,HarmonyOS
HarmonyOS实战开发-如何实现媒体提供方与媒体控制方自定义信息的交互功能。,鸿蒙,HarmonyOS,OpenHarmony,harmonyos,华为,鸿蒙应用开发,鸿蒙系统,鸿蒙开发,鸿蒙,HarmonyOS

鸿蒙生态应用开发白皮书V2.0PDF: 获取完整版白皮书方式请点击→https://docs.qq.com/doc/DZVVkRGRUd3pHSnFG?u=a42c4946d1514235863bb82a7b2ac128

HarmonyOS实战开发-如何实现媒体提供方与媒体控制方自定义信息的交互功能。,鸿蒙,HarmonyOS,OpenHarmony,harmonyos,华为,鸿蒙应用开发,鸿蒙系统,鸿蒙开发,鸿蒙,HarmonyOS

鸿蒙 (Harmony OS)开发学习手册→https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

一、入门必看

1.应用开发导读(ArkTS)
2………
HarmonyOS实战开发-如何实现媒体提供方与媒体控制方自定义信息的交互功能。,鸿蒙,HarmonyOS,OpenHarmony,harmonyos,华为,鸿蒙应用开发,鸿蒙系统,鸿蒙开发,鸿蒙,HarmonyOS

二、HarmonyOS 概念→https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.系统定义
2.技术架构
3.技术特性
4.系统安全
5…

HarmonyOS实战开发-如何实现媒体提供方与媒体控制方自定义信息的交互功能。,鸿蒙,HarmonyOS,OpenHarmony,harmonyos,华为,鸿蒙应用开发,鸿蒙系统,鸿蒙开发,鸿蒙,HarmonyOS

三、如何快速入门?→https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.基本概念
2.构建第一个ArkTS应用
3…

HarmonyOS实战开发-如何实现媒体提供方与媒体控制方自定义信息的交互功能。,鸿蒙,HarmonyOS,OpenHarmony,harmonyos,华为,鸿蒙应用开发,鸿蒙系统,鸿蒙开发,鸿蒙,HarmonyOS

四、开发基础知识→https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
HarmonyOS实战开发-如何实现媒体提供方与媒体控制方自定义信息的交互功能。,鸿蒙,HarmonyOS,OpenHarmony,harmonyos,华为,鸿蒙应用开发,鸿蒙系统,鸿蒙开发,鸿蒙,HarmonyOS

五、基于ArkTS 开发→https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
HarmonyOS实战开发-如何实现媒体提供方与媒体控制方自定义信息的交互功能。,鸿蒙,HarmonyOS,OpenHarmony,harmonyos,华为,鸿蒙应用开发,鸿蒙系统,鸿蒙开发,鸿蒙,HarmonyOS

更多了解更多鸿蒙开发的相关知识可以参考:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3文章来源地址https://www.toymoban.com/news/detail-854086.html

到了这里,关于HarmonyOS实战开发-如何实现媒体提供方与媒体控制方自定义信息的交互功能。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HarmonyOS实战开发- 如何实现VPN的进行服务器连接,发送数据的功能

    本示例使用@ohos.net.vpn接口创建VPN 隧道,建立vpn网络,vpn隧道保护,销毁VPN网络以及使用@ohos.net.vpnExtension接口创建三方vpn等功能。 实现了VPN的进行服务器连接,发送数据的功能 使用说明 进入应用前请先安装VPNFoundation。 进入应用后,主界面有启用VPN和停用VPN的选项。分别对

    2024年04月27日
    浏览(57)
  • HarmonyOS - 实现多设备协同开发实战教程~

    现在随着个人设备越来越多,越来越需要多个设备之间相互感知和连接,设备和设备之间可以相互联动,形成互联互通的场景,而搭载HarmonyOS的设备恰好可以满足这一点 。下面通过开发一个HarmonyOS的多端分布式表白应用来实现设备之间的相互联动。 H5页面可以实现一些比较特

    2024年02月21日
    浏览(43)
  • 鸿蒙实战开发-相机和媒体库、如何在eTS中调用相机拍照和录像

    此Demo展示如何在eTS中调用相机拍照和录像,以及使用媒体库接口将图片和视频保存的操作。实现效果如下: 使用说明 1.启动应用,在权限弹窗中授权后返回应用,进入相机界面。 2.相机界面默认是拍照模式,点击底部拍照按钮可以拍照,拍照完成会在底部左侧显示照片预览

    2024年04月09日
    浏览(62)
  • HarmonyOS实战开发-通过screenshot模块实现屏幕截图 。

    本示例展示全屏截图和屏幕局部截图。 本示例通过screenshot模块实现屏幕截图 ,通过window模块实现隐私窗口切换,通过display模块查询当前隐私窗口。 使用说明: 点击右上角图标打开弹窗,选择截屏,展示全屏截图;选择局部截屏,选择截屏区域,点击右下角完成,展示局部

    2024年04月13日
    浏览(48)
  • HarmonyOS学习路之开发篇—多媒体开发(相机开发 一)

    HarmonyOS相机模块支持相机业务的开发,开发者可以通过已开放的接口实现相机硬件的访问、操作和新功能开发,最常见的操作如:预览、拍照、连拍和录像等。 相机静态能力 用于描述相机的固有能力的一系列参数,比如朝向、支持的分辨率等信息。 物理相机 物理相机就是独

    2024年02月10日
    浏览(67)
  • HarmonyOS学习路之开发篇—多媒体开发(图像开发 一)

    HarmonyOS图像模块支持图像业务的开发,常见功能如图像解码、图像编码、基本的位图操作、图像编辑等。当然,也支持通过接口组合来实现更复杂的图像处理逻辑。 图像解码 图像解码就是不同的存档格式图片(如JPEG、PNG等)解码为无压缩的位图格式,以方便在应用或者系统

    2024年02月11日
    浏览(49)
  • HarmonyOS学习路之开发篇—多媒体开发(相机开发 二)

    Camera操作类,包括相机预览、录像、拍照等功能接口。 接口名 描述 triggerSingleCapture​(FrameConfig frameConfig) 启动相机帧的单帧捕获。 triggerMultiCapture​(ListFrameConfig frameConfigs) 启动相机帧的多帧捕获。 configure​(CameraConfig config) 配置相机。 flushCaptures​() 停止并清除相机帧的捕获

    2024年02月11日
    浏览(55)
  • HarmonyOS学习路之开发篇—多媒体开发(图像开发 二)

    图像编码就是将PixelMap图像编码成不同存档格式图片,用于后续其他处理,比如保存、传输等。当前仅支持JPEG格式。 ImagePacker主要用于图像编码。 接口名 描述 create() 创建图像打包器实例。 initializePacking(byte[] data, PackingOptions opts) 初始化打包任务,将字节数组设置为打包后输

    2024年02月11日
    浏览(58)
  • HarmonyOS学习路之开发篇—多媒体开发(音频开发 二(1)

    接口说明 接口名 描述 AudioCapturer(AudioCapturerInfo audioCapturerInfo) throws IllegalArgumentException 构造函数,设置录音相关音频参数,使用默认录音设备。 AudioCapturer(AudioCapturerInfo audioCapturerInfo, AudioDeviceDescriptor devInfo) throws IllegalArgumentException 构造函数,设置录音相关音频参数并指定录音

    2024年04月23日
    浏览(56)
  • 【HarmonyOS开发】OpenHarmony如何实现⼀次开发,多端部署

    OpenHarmony提供用户程序框架、Ability框架以及UI框架,能够保证开发的应用在多终端运行时保证一致性。一次开发、多端部署。  多终端软件平台API具备一致性,确保用户程序的运行兼容性。 HarmonyOS提供了用户程序框架、 Ability 框架以及UI框架,支持应用开发过程中多终端的业

    2024年02月03日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包