UniversalMusicPlayer 学习笔记(一)

学习Android有一段时间了,接下来的这段时间想选择一个代码量较小但质量高的开源App进行学习。最终选择了UniversalMusicPlayer。
首先,把几张App截图贴上来。这里写图片描述这里写图片描述

接下来,就要开始学习代码了。

工程下的代码学习

源码下载地址:http://download.csdn.net/detail/sinat_24495381/9540997
程序的包结构

首先,找到了程序的入口Activity—-MusicPlayerActivity, 来看它的描述。
/**
* Main activity for the music player.
* This class hold the MediaBrowser and the MediaController instances. It will create a MediaBrowser
* when it is created and connect/disconnect on start/stop. Thus, a MediaBrowser will be always
* connected while this activity is running.
*/
看这句话It will create a MediaBrowser when it is created and connect/disconnect on start/stop但是,我们发现,这个Activity中并没有Override onStart()函数,其实,它是继承了BaseActivity,在BaseActivity的onStart()函数中创建了MediaBrowser。
从上面的描述中,我们知道,MusicPlayerActivity会持有MediaBrowser 和 MediaController 两个类的实例(注:为了兼容低版本的android系统,此时,MusicplayerActivity持有的是v4包的MediaBrowserCompat 和 MediaControllerCompat的实例)。那么它们是什么呢?

## MediaBrowserCompat##
android.support.v4.media.MediaBrowserCompat;
Browses media content offered by a {@link MediaBrowserServiceCompat}. 浏览MediaBrowserServiceCompat提供的media内容。 MediaBrowserServiceCompat稍后讨论。
## MediaControllerCompat##
android.support.v4.media.session.MediaControllerCompat

/**
 * Allows an app to interact with an ongoing media session. Media buttons and
 * other commands can be sent to the session. A callback may be registered to
 * receive updates from the session, such as metadata and play state changes.
 * <p>
 * A MediaController can be created if you have a {@link MediaSessionCompat.Token}
 * from the session owner.
 * <p>
 * MediaController objects are thread-safe.

它是用来和正在进行的MediaSession进行互动的。它可以发送命令给MediaSession,还可以注册一个callback来接收来自MediaSession的更新。 另外, MediaControllerCompat的创建是需要 MediaSession.Token对象的。
这是一个关于MediaSession的介绍,可以先有个大体的印象:http://www.oschina.net/question/2561862_2150611?fromerr=RK8zJQV6

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值