Android歌词秀设计思路(3)通用的音乐播放服务(上)

来源:未知 责任编辑:责任编辑 发表时间:2014-05-10 12:23 点击:

MediaPlayerService作为通用的音乐播放Service类,它的功能有:
控制音乐播放,停止,暂停,前/后歌曲切换。
Audio Focus相关处理(对应应用程序切换)。
Intent处理(对应多媒体键,耳机线拔出,打入电话)
Notification处理
其实这个类本来是和LyricPlayerService在一起的,但是随着功能的增加代码越来越乱。于是就有了分开的想法。但是分也要分出点名堂,于是为这个类定义的功能就是实现一个通用的媒体播放服务。
分开后的类关系可以从下面的全体图中看出。

下面针对各功能加以说明
控制音乐播放,停止,暂停,前/后歌曲切换。
在开始真正的工作之前要解决的一个问题是:作为通用的音乐播放那个服务,就一定会还有在后台时播放前/后一首歌的要求。但是这是应用已经不存在了,不可能把这个任务交个Activie来处理。为了解决这个问题定义了一个用于取得相应的媒体文件信息的MediaInfoProvider类。
public interface MediaInfoProvider{ 
    String getUrl(); 
    String getTitle(); 
    boolean moveToNext(); 
    boolean moveToPrev(); 
}
通过调用moveToNext和moveToPrev方法实现媒体文件的切换,然后通过调用getUrl和getTitle来取得文件的信息。
注意在这里只是规定接口,真正的实例必须由利用者通过下面的方法来提供。有一点额外的工作就是如果希望播放的歌曲和正在播放的不一样的话就先停止正在播放的歌曲。
public void setMediaInfoProvider(MediaInfoProvider provider) {   
    if( mDataSource != provider.getUrl() && (isStop() == false)){ 
        stop(); 
    } 
    mMediaInfoProvider = provider; 
    mDataSource = provider.getUrl(); 
    mTitle = provider.getTitle(); 

当然在利用MediaPlayer之前我们需要onCreate方法中进行一些准备工作。内容包括
创建MediaPlayer对象,
设定唤醒方式(目的是防止播放中CPU进入休眠状态,记得在 AndroidManifest.xml中设定权限为android.permission.WAKE_LOCK)
指定播放完了后的监听器。
mMediaPlayer = new MediaPlayer(); 
mMediaPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK); 
mMediaPlayer.setOnCompletionListener(this);
 
这个播放完了监听器的目的有两个。一个是停止任务栏上的图标显示,另外一个是在没有前台应用的时候自动关闭本服务。要是没有人管了怎么办?对吧。
@Override
    public void onCompletion(MediaPlayer mp) { 
        mIsPausing = false; 
        mNotificationManager.cancel(NOTIFICATION); 
        if(mBinded == false){ 
            stopSelf(); 
        } 
    }  

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Android 完全退出程序
  • 原创:Android应用开发-Andorid歌词秀,含源码
  • android 屏幕保护
  • Android手机软件汉化教程---第四课 dex文件汉化
  • 众多Android 开源项目推荐,给力工作给力学习
  • Android Audio代码分析4
  • Android得到已安装的应用程序信息!
  • Android开发者指南(29) —— USB Host and Accessory
  • Android成长的幕后推手:工程师鲁宾
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1