Android Meida 笔记

Android MediaBrowser 各组件使用概览 播放器及其媒体会话在 MediaBrowserService 内实现,界面和媒体控制器与 MediaBrowser 一起位于 Android Activity 中。 阅读详情

涉及到音乐播放,学习googlesample中的ump,结合官网中的Guide

架构预览

实现一个音乐播放器,要是不使用任何设计,简单思路如下:

  1. 获取多媒体文件,扫描本地或远程获取
  2. 使用一个设想中、应有的、可以解码多媒体文件的播放器,对文件播放,暂停,快进…等等操作
  3. 将播放器播放状态同步到UI
  4. UI可以包括:
    • 展示封面的控制按钮的主播放页面、
    • 在音乐列表中悬浮一个底部控制栏,(而这个底部控制栏应该可以在多个acitivity中同时存在,方便用户控制)
    • 通知栏控制器
    • 锁屏页面控制器

问题:真正播放的音乐的播放器和UI的生命周期是不同步,且存在很多个UI可以控制播放
,可以设想会使用Service来做播放器的容器…(大概只能想到这么多了.)

在这里插入图片描述

Android中多媒体播放,包括音频和视频,使用了统一的接口架构,虽有区分,整体上还是很统一的使用了C/S架构。
UI抽象了使用了一个 Media Controller ,在UI中创建和维护,多个UI维护多个控制器。
Media Contrller通过服务中的MediaSession,对播放器操作,并实时返回播放状态
MediaBrower和MediaBrowerService负责两者的连接,交互实现。

具体实现包括下面4个步骤:

1.创建了一个多媒体浏览的服务

这个服务存活于音乐播放过程中,也包括一个多媒体会话,管理客户端的连接。

2. 创建一个多媒体浏览的的客户端

客户端包括一个控制器,负责与服务的连接和交互

3.会话的回调实现

描述如何管理多媒体会话和服务,以及其他应用组件如通知和广播接收器。

4. Activity如何管理多媒体浏览服务

activity如何管理播放状态,还有可以提供多媒体库给其他应用,复用。

mdjz 我说了啥玩意…

Android基于MediaBroswerService的App实现概述,最新Android面试合集 可以将音乐播放器的状态同步到第三方App 能够和第三方App间进行相互通信 类似于CarLife 对音乐App的唤起,首先第三方App开启后,即可拉起音乐App,然后获取其中的歌单,打开歌单之后,获取歌单内的歌曲列表,点击进行播放,可以进行播放,暂停,下一首,上一首的控制。 技术实现 谷歌官方提供了MediaBroswerService,通过其可以帮助我们实现上述的需求。 MediaBroswerService Android多媒体架构 Android多媒体播放采用client,server架构,一. 阅读详情

相关推荐

[gitbook] Android框架分析系列之Android stagefright框架

请支持作者原创: https://mr-cao.gitbooks.io/Android/content/android-traces.html 点击打开链接...

ArcticOcean's blog 1507

Android官方组件 MediaBrowser 分析

Android官方组件 MediaBrowser 分析MediaMetadataCompat:构造方法:PlaybackStateCompat:构造方法: MediaBrowser 是官方推出的基于Android四大组件之一 Service 的新框架,使用起来很方便。 如何连接: //连接到远端Service public boolean registerConnection(@NonNull Context mContext, @NonNull Class<? extends Servic

oChiXinZuoYanTou1的博客 2585

Android 多媒体开发相关技巧

Android 多媒体相关技巧—(JAVA SCOPE)  1 ./packages/providers/MediaProvider/  编译后生成MediaProvider.apk。会在开机时扫描本机和sdcard上的媒体文件(图片、视频、音频),  并在/data/data/com.android.providers.media/databases 目录下生成internal.db

arm10504的专栏 2347

Android基于MediaBroswerService的App实现概述,android零基础入门

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。以上分享【我的阿里P7移动开发架构师学习笔记】七大模块整套学习资料均免费分享,需要的小伙伴,我已经上传到石墨文档了,大家自取就可以了。白嫖可以,别忘了给我点个关注哈。当然我也为你们整理好了百度、阿里、腾讯、字节跳动等等互联网超级大厂的历年面试真题集锦。

qd520_1314的博客 1961

2023东华大学OJ机试题22-70

东华大学计算机考研复试机试22 约瑟夫环223、整除的尾数24、回文质数25、汽水瓶26、阶乘最后的非0位27、算菜价28、 水果价格29、求奇数的乘积30、求最晚和最早日期31、素数32、计算e33 数字之和34 繁殖问题35 奇妙的数字36 整除的尾数37 黑色星期五38 树39 约瑟夫环40 最大与最小41 环42 求数列项43 最高频率44 三艘船45 回文数46 特殊四位数47 最大值48 数列149 修理牛棚50 按要求输出序列51 部落人乘法52 序列53 双重回文数54 等差数列55 人见人

m0_49263811的博客 2600

AD创建属于自己的元件库(详细)

我今天开始学习AD2022,但是我想自己创建属于自己的元件库,但是奈何找了好多教程就是随便几句话就把我打发走了,弄了一天都没搞定(也许是我比较菜),所以现在乱懂了,自己写一个属于我们自己小白的教程,希望有用吧哈哈我比较偷懒,直接使用嘉立创上画好的元件导入,和我们自己创建自己画的步骤其实都一样。

qq_33591173的博客 2万+

Android音视频API(android.media.browse):概览

一、类 MediaBrowser 浏览由MediaBrowserService提供的媒体内容。 MediaBrowser.ConnectionCallback 回调连接相关事件。 MediaBrowser.ItemCallback 回调接收getItem(String,MediaBrowser.ItemCallback)的结果。 Med

一世豁然的专栏 861

SIGIR 2026:信息检索前沿技术与投稿指南

信息检索(Information Retrieval, IR)是计算机科学中处理大规模数据检索的核心技术,其基本原理是通过算法模型从海量数据中高效提取相关信息。随着深度学习的发展,神经信息检索(Neural IR)和多模态检索成为研究热点,如稠密检索模型(DPR)和跨模态预训练(CLIP)等技术的应用显著提升了检索精度。这些技术不仅在学术领域具有重要价值,还在电商搜索、医疗检索等实际场景中展现出巨大潜力。SIGIR作为信息检索领域的顶级会议,汇聚了全球顶尖学者和工业界专家,是展示最新研究成果的重要平台。本文

weixin_29189363的博客 289

android meida scaner

http://my.unix-center.net/~Simon_fu/?p=549 修改Android Media Scanner的扫描路径 http://blog.youkuaiyun.com/Innost/article/details/6083467 Android Media

guyun_shine的专栏 546

多核异构处理器核间通信:从共享内存到RPMsg协议的实战解析

在多核异构处理器架构中,核间通信是实现高效协同计算的核心技术。其基本原理是通过共享内存作为数据交换的物理媒介,配合硬件信号机制实现同步与通知。从技术价值看,它解决了不同架构核心间的数据共享与指令协同问题,是释放异构计算潜力的关键。在应用场景上,该技术广泛应用于智能物联网设备、汽车电子和工业控制等领域,用于连接高性能应用处理器与实时微控制器。本文以典型的ARM Cortex-A与Cortex-M组合为例,深入剖析了基于共享内存和RPMsg协议的通信机制,涵盖了从硬件基础到软件协议栈的完整实现链路,并提供了针对

weixin_26969269的博客 448

数据挖掘在人力资源分析中的实战案例

在当今竞争激烈的商业环境中,人力资源管理对于企业的成功至关重要。有效的人力资源管理能够提高员工绩效、降低员工流失率、优化人才招聘等。而数据挖掘技术为人力资源管理提供了强大的工具,通过对大量人力资源数据的分析,可以发现潜在的规律和模式,为企业的决策提供有力支持。本文的目的是通过实际案例展示数据挖掘在人力资源分析中的具体应用,涵盖员工绩效预测、人才招聘筛选、员工流失分析等多个方面。通过详细的案例分析,帮助读者理解数据挖掘技术在人力资源管理中的实际操作和应用价值。

移动开发前沿的博客 489

某安卓恶意程序分析

背景:某同事收到一条短信,内容大概为我们聚会的照片我上传到了http://t.cn/RGfj0LP,请查看。该同事使用的是华为安卓手机,点击后自动给通讯录中的所有人都转发了相同内容的短信,由于同事之间互相信任的关系,多个同事都中招了。出于个人兴趣,针对这条短信进行了一下简单的分析:1、直接通过浏览器访问http://t.cn/RGfj0LP时,页面会被转到360的一个提示页面,URL为:http:/

运维记录 1001

四足机器人关节电机控制器实现(附C++代码)

本文先对做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。

qq_35635374的博客 462

meida resolution change

refer:https://software.intel.com/en-us/forums/topic/389609 The Media SDK decode sample should handle this case by default without the need to reset the pipeline. But this assumes that the new  resolu

haima1998的专栏 730

58.Sobel边缘检测算子

注:在梯度运算中,很可能会出现负的灰度值,我们不能再采用uint8类型作为像素的数据类型,而是采用了CV_16S或者CV_32F这种有负数范围的类型,运算结果里的负数也不能不处理,否则在显示的时候就会被截断为0,这样就会丢失边界信息。如下图所示,对中心像素Z5求取多个方向的灰度差分,对于Z5的8邻域,分为4个方向,即对角线和水平垂直4个方向对:(z1, z9) ,(z2, z8), (z3, z7), (z6, z4) 给定邻域方向梯度矢量g的幅度为:|g| = <像素灰度差分>/<相邻像素的距离>。

twnkie的博客 4884

华为s110、s220、s310、s530、s620 配置ssh,配置web登录

在服务器端创建SSH用户。

送个祝福给小豪的博客 319

android6.0关机动画,安卓系统修改开机动画,关机动画

开机动画两种开机动画关于安卓动画的研究主要在frameworks/base/cmds/bootanimation/BootAnimation.cpp中。安卓系统默认的开机动画(谷歌)的动画是显示android字样。如下:bool BootAnimation::threadLoop(){bool r;if (mAndroidAnimation) {//如果没有bootanimation.zip则执行...

weixin_39816946的博客 532

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

下载安卓源码都干了什么?

android源码同步过程记录

可见光分子 191

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Pro Android学习笔记(一):Android平台

本系列是阅读《Pro Android4》的读书笔记,也包括网络阅读资料的整理,以及个人心得。 由于智能手机引入AP(应用处理器),Android在某种意义上是个人计算机,具有桌面计算机的完整架构,采用Linux-based OS stack来管理设备、内存和进程。Android的Java库覆盖电话,视频、连接、图形、UI编程等多个方面。Android SDK支持几乎全部的J2SE,除去UI的AW

愷风(Wei)的专栏 8382

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Pro Android学习笔记(一) Android平台

Pro Android学习笔记(一) Android平台

skdhfdfc的博客 249

pro android学习笔记,【转】Pro Android学习笔记(一):Android 平台 2013.6.4

由于智能手机引入AP(应用处理器),Android在某种意义上是个人计算机,具有桌面计算机的完整架构,采用Linux-based OS stack来管理设备、内存和进程。Android的Java库覆盖电话,视频、连接、图形、UI编程等多个方面。Android SDK支持几乎全部的J2SE,除去UI的AWT和Swing部分,而用Android UI framework取而代之。Android针对手持...

weixin_33028765的博客 205

安卓拓展 MediaPlayer 实现淡入淡出效果

安卓拓展 MediaPlayer 实现淡入淡出效果 @Moriafly 未经允许,严禁搬运抄袭 在椒盐音乐开发中有需求,播放暂停需要实现淡入淡出效果,就是在暂停时慢慢减弱音量而在播放时缓慢增加音量。 MediaPlayer 是 android.meida 下的类,拓展性比不上 ExoPlayer,但是对于这样的淡入淡出效果还是很好实现的。 为什么选择拓展 MediaPlayer 而不是在业务代码中拓展嗯?其实还是因为播放器的播放暂停(按照唯一来源设计)应该只有一处实现调用 MediaPlayer 的 sta

Moriafly的博客 2373

安卓系统签名修改

1.安卓签名和密钥 Android OS 映像在两个地方使用加密签名: 映像中的所有 .apk 文件都必须经过签名。Android 软件包管理器通过下列两种方式使用 .apk 签名: 更换应用时,必须使用与旧应用相同的密钥对其签名,才能存取旧应用的数据。无论是通过覆盖 .apk 来更新用户应用,还是使用安装在 /data 下的新版本应用来覆盖系统应用,这一点都适用。 如果两个或多个应用想要共享同一个用户 ID(方便共享数据等),则必须使用相同的密钥对它们进行签名。 必须使用符合系统预期的密钥

流水mpc 8045

Android13 MediaCodec创建流程分析

static MediaCodec createDecoderByType(String type):实例化支持给定MIME类型(如"video/avc")的输入数据的首选解码器。static MediaCodec createEncoderByType(String type):实例化支持给定MIME类型(如"video/avc")的输出数据的首选编码器。

liuning1985622的博客 1267

Android细笔记--DataStorage

Shared Preferences 即使应用被杀了,shared preference也还是存在的 Internal Storage 创建于internal的文件只对本应用开放权限,即使手机用户本身也无法使用该文件。如果用户卸载该应用,那么这些文件也一起被卸载 如果想在编译时就放一个文件到应用中,可以把它放到res/raw目录下,同openRawResource打开该文件。对...

weixin_30437847的博客 150
上一篇: 监听多个网络请求完成后,才显示正常页面
下一篇: Rxjava官网API预览
wjploop
博客等级 码龄11年 4粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值