安卓手机APP开发__媒体开发部分__播放器的接口

这篇具有很好参考价值的文章主要介绍了安卓手机APP开发__媒体开发部分__播放器的接口。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

安卓手机APP开发__媒体开发部分__播放器的接口

目录

概述

组件之间的共同的接口

媒体3的播放的架构

播放器的状态

对改变的监听

当前的播放

定制的播放器实现


概述


一个播放器是你的APP中完成媒体项的播放的组件.
媒体3的播放器接口提供了一个关于播放器处理的功能的总结.
这包括如下的内容:

对于播放的控制,例如播放,暂停,查找与查询当前的媒体的属性
例如播放位置.
管理一个播放列表/媒体项的队列
配置播放属性,例如缓冲,重复,速度,和音量.
向屏幕上渲染视频

媒体3也提供了一个播放器的接口的实现,叫做ExoPlayer.

组件之间的共同的接口

在媒体3中的一些组件实现了播放器的接口.例如:

播放器的列表
组件 描述与行为的解释
ExoPlayer 这是播放器接口的默认的实现
MediaController 与媒体会话的交互来发送播放的命令.如果你的播放器与在一个服务中的媒体会话独立于活动和片段,
你能让你的媒体控制器作为播放器.通过媒体会话让你的播放和播放列表的方法调用发给播放器.
MediaBrowser 除了媒体控制器提供的功能,和一个媒体库会话的交互,来浏览可用的媒体内容.
ForwardingPlayer 把方法调用转给另一个播放器的播放器实现.使用这个类定制化特别的方法.
SimpleBasePlayer 把方法的实现变得最小的播放器的实现.当你要使用一个连接媒体会话的定制化的播放器时很有用.
CastPlayer 和一个广播接收器的APP通信的播放器实现.它的行为依赖于广播的会话.

 

媒体3的播放的架构

如果你和播放器通信,你应该直接调用它的方法来发播放的指令.
你能在你的播放中加上广告,通过实现一个媒体会话,给外部的源
授权它进行播放控制.这些外部的源实现了一个媒体控制器,它的功能是
连接一个媒体会话,和发出播放指令的请求.

当在后台播放媒体时,你需要保持你的媒体会话和有一个媒体会话服务
和媒体库服务的播放器作为一个前台的服务来运行.如果你这么做,你能
让你的播放器与你的APP中的活动独立出来.你在使用一个媒体控制器时
这是必要的.

播放器的状态

一个媒体播放器的状态实现了播放器的接口,包括了4类主要的信息:

第一类:播放状态
使用getPlaybackState()来检索状态.
状态的值由接口来定义,有STATE_IDLE, STATE_BUFFERING, STATE_READY, and STATE_ENDED.

第二类:媒体项的播放列表
播放的媒体项的实现的序列
使用getCurrentTimeline()来检索时间线
播放器实例能提供播放列表的方法,例如加媒体项,删除媒体项,得到当前媒体项.


第三类:播放/暂停属性,例如:
playWhenReady:当可能时或者是保持暂停时,显示用户是否要媒体播放
Playback suppression reason:显示播放挂起的原因
isPlaying:显示播放是否正在播放,如果播放状态为STATE_READY,playWhenReady为真,
并且没有播放挂起时,这个值为真.

第四类:播放位置包括:
Current media item index:在播放列表中的当前媒体项的索引
isPlayingAd: 显示是否正在播放一个插入的广告
Current playback position:当前的媒体项或者是插入的广告的当前播放位置.


此外,播放器接口允许读取可用的轨道,媒体元数据,播放速度,音量和播放的其它的附加的属性.
注意的是播放器实例没有必要支持接口的所有的特性.

对改变的监听

使用一个Player.Listener来监听一个播放器的改变.


Kotlin

val handler = Handler(Looper.getMainLooper())
fun checkPlaybackPosition(delayMs: Long): Boolean =
  handler.postDelayed(
    {
      val currentPosition = player.currentPosition
      // Update UI based on currentPosition
      checkPlaybackPosition(delayMs)
    },
    delayMs)

当前的播放

播放器的接口提供了操纵播放的状态和控制方面的很多的方法.

基本的播放控制有播放,暂停,准备和停止.
播放列表的方法有加媒体项和删除媒体项.
查找当前的媒体项或者是位置.
设置重复模式和乱序模式.
刷新轨道选择的信息
设置播放速度.

定制的播放器实现

为了创建一个定制的播放器,你能扩展一个媒体3中的简单播放器.这个类提供了一个基本的实现.
它把你需要实现的方法的数量减少到了最小的程度.

通过覆盖getState()方法来开始,这个方法包括:

可用的指令集
播放属性例如当播放状态为STATE_READY时,是否开始播放。当前的播放的媒体项的索引,当前
项的播放位置。


Kotlin

class CustomPlayer : SimpleBasePlayer(looper) {
  override fun getState(): State {
    return State.Builder()
      .setAvailableCommands(...) // Set which playback commands the player can handle
      // Configure additional playback properties
      .setPlayWhenReady(true, PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST)
      .setCurrentMediaItemIndex(0)
      .setContentPositionMs(0)
      .build()
  }
}

简单播放器强调了状态值的有效组合的状态。它也能处理监听器和通知状态改变的监听器。
如果你需要手工地触发一个状态上的刷新,就调用invalidateState().

除了getState()方法,你仅需要实现你的播放器声明可用的指令的方法。文章来源地址https://www.toymoban.com/news/detail-856954.html

到了这里,关于安卓手机APP开发__媒体开发部分__播放器的接口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 用Qt开发的ffmpeg流媒体播放器,支持截图、录像,支持音视频播放,支持本地文件播放、网络流播放

    本工程qt用的版本是5.8-32位,ffmpeg用的版本是较新的5.1版本。它支持TCP或UDP方式拉取实时流,实时流我采用的是监控摄像头的RTSP流。音频播放采用的是QAudioOutput,视频经ffmpeg解码并由YUV转RGB后是在QOpenGLWidget下进行渲染显示。本工程的代码有注释,可以通过本博客查看代码或者

    2024年02月03日
    浏览(97)
  • APP推荐:推荐一款免费无广告的本地音乐播放器,手机听歌必备

    目录 一、软件简介 二、软件特色 三、软件使用 四、软件下载 相信很多朋友都喜欢听歌,今天给大家推荐一款非常棒的手机本地音乐APP——糖醋音乐,完全无广告、免费听歌,大家只需要把自己需要的歌曲下载到你的手机就可以愉快的听歌了,并且不需要手机联网省点、省

    2024年02月05日
    浏览(45)
  • Android手机开发课程设计之音乐播放器

    一、音乐播放器概述与分析 目前手机的音乐播放功能已经是大家比较关注的一个部分,不少在人在购买手机的时候都会关心手机的音乐播放的能力,这也足以看出目前大家对音乐播放功能的重视,所以一款性能良好的手机音乐播放器软件一定会受到欢迎。和传统的音乐播放器

    2024年02月05日
    浏览(51)
  • iOS开发Swift-4-IBAction,group,音乐播放器-木琴App

    1.使用素材创建木琴App的UI。  2.连接IBAction。  其余按钮直接拖拽到play里边。  当鼠标置于1处时2处显示如图,表示成功。当用户按下任一按钮都会触发play中的内容。  3.将7个按钮的View中的Tag值分别调为1、2、3、4、5、6、7.  4.将音频文件拖入项目文件中。  Create groups时,实

    2024年02月10日
    浏览(40)
  • Ubuntu 多媒体播放器——KMPlayer Linux:功能强大的视频播放工具

    KMPlayer Linux是一款功能强大的多媒体播放器,专为Ubuntu操作系统设计。它提供了丰富的功能和用户友好的界面,使得在Ubuntu上观看视频变得更加方便和愉快。本文将介绍KMPlayer Linux的安装过程,并提供一些示例代码来演示其功能。 安装KMPlayer Linux 要安装KMPlayer Linux,请按照以下

    2024年02月04日
    浏览(80)
  • 零基础搭建私人影音媒体平台【远程访问Jellyfin播放器】

    转载自内网穿透工具的文章:零基础搭建私人影音媒体平台【远程访问Jellyfin播放器】 随着移动智能设备的普及,各种各样的使用需求也被开发出来,从最早的移动听音乐、看图片(MP3时代),到之后的移动视频需求(MP4时代)到现在的移动流媒体需求(智能手机看视频)。

    2023年04月24日
    浏览(88)
  • 基于.Net 的 AvaloniUI 多媒体播放器方案汇总

    随着国产化的推进,相信.Net的桌面端的小伙伴的可能已经有感受到了。 为了让.Net的桌面框架能够跨桌面平台,首选的就是Avalona-UI。 为了让AvaloniaUI能够跨多个平台播放视频,这里测试主要播放视频形式是使用 RTSP 。 所以,在这篇博文中,我打算对目前的Avalonia-UI框架上播放

    2024年02月08日
    浏览(60)
  • 基于OpenCV设计的流媒体播放器(RTSP、RTMP)

    随着互联网的普及和发展,流媒体技术已成为日常生活中不可或缺的一部分。流媒体播放器作为流媒体技术的重要组成部分,其性能和功能直接影响到用户的观影体验。本文介绍使用OpenCV和Qt设计一款流媒体播放器,专门用于播放直播视频流,例如RTSP、RTMP。该播放器只播放实

    2024年02月03日
    浏览(76)
  • 零基础搭建个人影音媒体平台,实现远程访问Jellyfin播放器的简易方法

    随着移动智能设备的普及,各种各样的使用需求也被开发出来,从最早的移动听音乐、看图片(MP3时代),到之后的移动视频需求(MP4时代)到现在的移动流媒体需求(智能手机看视频)。但当我们习惯这些需求后,忽然发现自己不知不觉间成了待割的韭菜(3台设备就要加钱

    2024年02月11日
    浏览(36)
  • Android 13.0 系统多个播放器app时,设置默认播放器

     在13.0的系统产品开发中,对于在系统中有多个播放器的时候,这时候如果调用代码打开播放器,会出现多个播放器列表让用户 选择启动哪个播放器,所以产品开发需求需要设置默认播放器,当打开播放器的时候,就直接打开播放器就可以了,所以就需要 了解查询播放器列

    2024年02月08日
    浏览(66)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包