`
liguanyi11111
  • 浏览: 62514 次
  • 性别: Icon_minigender_1
  • 来自: 黑龙江
社区版块
存档分类
最新评论

Android广播控制音乐播放器中的小问题

阅读更多

        本来只想做一个简单的锁屏界面控制音频APP播放音乐的快捷方式。方便在锁屏页面操作音乐软件暂停,下一曲等功能,主体功能实现并不复杂。

        由于有一些外接耳机上带有类似的一些功能按钮,Android系统为了实现耳机对播放音乐的控制,开发了对外的接口。其实就是利用广播机制,通过发送广播来对播放器进行控制。这些广播会首先进入系统中的AudioManager中,通过binder最终进入AudioService进行了一些处理,为了音频不会出现混乱。我们不用管它,我们只需要知道播放器最终会接收到这个广播而进行相应的处理即可。整套流程网上有很多样例,只不过是发送各种模仿按键的广播即可做到,这里不做叙述。主要说明一下过程中出现的几个小问题。

1.播放与暂停,这是同一个按钮。只是要根据当前的情况不同来执行不同的功能,尤其是初始状      态,有可能改程序执行时,已经有音乐在播放,所以这里要进行判断,这个可以通过AudioManager的isMusicActive()方法来判断音乐的状况,但是由于智能判断音乐是否开始,但是无法分辨出音乐结束还是暂停。

2.一般的播放器会有拔出耳机就暂停音乐的设定,所以我们的控制器也要随之变化,不过android系统提供了耳机拔出或插入的广播,我们可以监听这个广播然后进行操作。

3.由于有的播放器在通知栏可以操作播放器播放状态,所以他可以不开屏的状态下直接暂停(或其他操作)音乐。但是我们在锁屏页面无法知道这个操作,无法更新我们页面的按钮。而且通知栏操作属于其软件的内部操作,不需要像我们一样使用广播,所以也无法监听广播来控制。经过思考,由于没有接收到通知的方法。只能选择监控的方式来进行,所以我在后台写了一个timer来每间隔一秒监控一次当前的音乐播放状态,如果发现与显示的状态不符,则将其修改正确。这种方法比较浪费资源,但是基本可以满足需求。所以在资源不紧张的情况下可以考虑使用。

4.在android4.4中,系统修改了远程控制音乐播放的相关api导致曾经的方法出现问题。这里简单描述一下,在4.4之前,我使用sendOrderedBroadcast的方式来发送广播,防止这个广播被多个音乐软件同时收到导致播放错乱(有的并未启动的音乐软件甚至会因为收到了这个广播而自启动)。但是在4.4后,使用有序广播则无法正常控制音乐软件,必须使用无序的放送方法才能控制。但也同时导致了上述问题。为了单一控制,我准备在广播的intent中加入目标包,即通过setPackage的方法,指定广播的发送对象。经过测试,确实可以完美解决广播控制多个音乐软件的问题。但是关键的问题来了,我如何知道当前播放音乐软件的包名。这里我将在下一篇博客“如何获取当前正在播放音乐的音乐软件的包名”中在详细讲解。

 

分享到:
评论
1 楼 shadaiodewangwei 2015-12-14  
这个问题后来怎么解决的呢》?

相关推荐

    Android开发音乐播放器

    Android音乐播放器实战,实现本地歌曲播放控制,可后台播放,拔出耳机暂停,来电暂停,电话挂断继续播放。这个项目很好的结合了Android的四大组件知识。其中音乐来源于手机本地,使用了Content Provider获取,播放...

    android studio手机MP3音乐播放器

    2. **Activity与Intent**:在音乐播放器中,`Activity`是用户界面的主要组成部分。`Intent`用于启动或切换不同的`Activity`,比如从音乐列表跳转到播放界面。 3. **MediaPlayer类**:这是Android系统提供的音频播放...

    android平台的音乐播放器源码

    在Android平台上开发一款音乐播放器是一项复杂而有趣的任务,它涉及到多媒体处理、用户界面设计、音频流控制等多个方面的技术。这个“android平台的音乐播放器源码”提供了一个实际的实现示例,可以帮助我们深入理解...

    基于Android的简易音乐播放器源码

    在这个音乐播放器中,我们可能会看到一个主Activity用于展示音乐列表,用户可以在此选择要播放的音乐;还有一个Service,它在后台执行音乐播放的任务,即使用户离开应用,音乐也能继续播放。 音乐播放的核心是...

    基于Eclipse的Android音乐播放器.rar

    本项目“基于Eclipse的Android音乐播放器”提供了一个完整的示例,展示了如何在Eclipse中构建一个功能完备的音乐播放应用。 1. **Android SDK和Eclipse集成** 在开始开发之前,开发者需要安装Android SDK并配置...

    Android代码-音乐播放器消息通知栏切歌栏效果NotificationBroadcastReceiver.zip

    开发者可以设置通知的各种属性,如图标、标题、内容文本,以及扩展功能,如远程视图(RemoteViews)来展示自定义布局,比如在音乐播放器中添加切歌、暂停等操作按钮。 2. **RemoteViews**: 这是一个特殊的视图类,...

    课程设计 Android音乐播放器

    在这个音乐播放器中,Activity可能包含播放控制界面和歌曲列表显示。 9. **BroadcastReceiver**:BroadcastReceiver允许应用监听并响应系统广播事件,例如当SD卡插入或移除时,应用可以接收到相应的广播并进行相应...

    基于android的音乐播放器

    在音乐播放器中,Intent常用于在Activity之间切换或启动服务。 6. **Broadcast Receiver**:广播接收器可监听系统事件,例如当耳机插拔时,音乐播放器可以接收到广播并相应地调整播放行为。 7. **Service**:服务...

    Android实现音乐播放器3.0

    在音乐播放器中,这可能意味着初始化音乐库的加载、设置全局的音频播放服务等。 在音乐播放器2.0到3.0的升级中,可能的改动包括: 1. **全局状态管理**:通过`Application`,开发者可以更好地管理和维护音乐播放的...

    Android高级应用源码-音乐播放器消息通知栏切歌栏效果(

    在音乐播放器中,可以注册一个BroadcastReceiver来监听如设备锁屏、耳机拔插等事件,以便在这些情况下做出相应的播放控制。例如,当用户拔掉耳机时,可以自动暂停音乐播放。 5. **生命周期管理**:在创建后台服务和...

    Android在线音乐播放器源码

    在这个音乐播放器中,活动主要负责用户界面交互,服务则用于在后台持续播放音乐,即使用户离开应用。 1. **活动(Activity)**:用户界面的核心,如播放列表、播放控制界面等,都是通过活动实现的。开发者会看到如何...

    Android音乐播放器 原码

    在音乐播放器中,我们可能需要监听以下广播: 1. **BOOT_COMPLETED**:系统启动完成后发送,可用于启动服务,确保音乐播放器在用户解锁设备时可以继续播放。 2. **HEADSET_UNPLUG**:耳机拔出时发送,这样可以自动...

    基于Android的音乐播放器

    在这个音乐播放器中,Activity可能是主界面,用于显示歌曲列表和播放控制;Service则负责在后台播放音乐,即使用户离开应用,音乐也能继续播放。 UI设计是关键部分。Android Studio提供了XML布局文件来定义用户界面...

    原生Android4.4音乐播放器源码

    6. **通知栏控制**:在Android 4.4中,音乐播放器常会在通知栏提供控制选项,让用户无需打开应用就能控制播放。这部分涉及到Notification的使用和媒体控制器(MediaSession)的建立。 7. **广播接收器...

    android音乐播放器源码

    在这款音乐播放器中,MediaPlayer被用来加载和控制音乐的播放。 2. **音频流处理**:音乐播放器需要处理音频流,这包括解码音频文件、调整音量、处理音频效果(如均衡器)等。源码可能包含了对音频数据的缓冲和预读...

    android音乐播放器源代码

    在这款音乐播放器中,主要使用了`MediaPlayer`类来播放音频文件。`MediaPlayer`支持多种音频格式,如MP3、AAC等,能够进行播放、暂停、停止、 seek等功能操作。 2. **Service组件:** 音乐播放通常需要在后台持续...

    Android应用源码音乐播放器开发项目源码

    在Android平台上,开发一款音乐播放器应用涉及到许多关键知识点,这些知识点构成了整个项目的骨架。以下是对这个"Android应用源码音乐播放器开发项目源码"的详细解析: 1. **Activity与Fragment**:Android应用的...

    android音乐播放器Demo

    通过分析和学习"android音乐播放器Demo"中的代码,开发者可以逐步掌握上述技能,最终创建出功能完备、用户体验良好的音乐播放器应用。同时,不断研究和学习最新的Android SDK和最佳实践,可以提升应用的性能和稳定性...

    Android代码-简易音乐播放器源码.zip

    在音乐播放器中,可能有一个`BroadcastReceiver`用于在耳机拔出时暂停播放,或者在屏幕关闭时切换到后台播放。 6. **通知栏控制**:为了方便用户在通知栏中控制音乐播放,开发者会使用`Notification`类创建一个带有...

Global site tag (gtag.js) - Google Analytics