Android锁屏界面控制音乐播放


目前,在锁屏界面控制音乐播放有两种常用方式。

第一种方式:原生Android系统及自带音乐播放器。

锁屏界面端:

    原生Android中,锁屏界面相关的UI由KeyguardHostView提供,KeyguardHostView向KeyguardUpdateMonitor注册一个类型为 KeyguardUpdateMonitorCallback的回调, KeyguardUpdateMonitort向AudioManager.registerRemoteControlDisplay向AudioManager(AudioService)注册一个 IRemoteControlDisplay,最后注册到MediaFocusControl,当音乐播放状态变化时,将状态传上来。

    KeyguardHostView根据音乐是否在播放来显示KeyguardTransportControlView。这个view提供了具体的UI,如按钮等,并且监听onClick事件,将click事件转换成keyCode, 并由RemoteController通过PendingIntent发送给注册的RemoteControlClient(创建时指定了一个PendingIntent). 在KeyguardTransportControlView中,使用RemoteController.MetadataEditor就可以获得音乐的相关信息,比如歌名等,这些信息是在音乐播放状态变化时通过回调更新的。

    参考源码:
        KeyguardTransportControlView.java
        KeyguardHostView.java

Music APP端:

    在MediaPlaybackService中,创建RemoteControlClient, 并通过AudioManager.registerRemoteControlClient(RemoteControlClient)进行注册,在注册之前,通过AudioManager.registerMediaButtonEventReceiver(ComponentName)注册事件广播接收器,就可以对按键事件进行响应处理了(具体在MediaButtonIntentReceiver中实现),比如播放下一首等。

       参考源码:MediaPlaybackService.java

第二种方式:第三方APP

    这种方式是有APP自身提供锁屏界面,即自己监听屏幕的关或开,从而显示带有音乐控制的锁屏界面。这种方式优势在于使控制播放的UI有更大的灵活性,而且不依赖于具体的rom。不足之处在于,在解锁时,APP自带的锁屏界面先解锁,再到系统锁屏界面,操作繁琐。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM