三星远程开发测试平台

反馈 注册 登录

锁屏状态音乐快捷控制


通过使用三星手机的屏幕小组件,可在锁定屏幕状态展示多种实用信息,比如天气、日程安排、音乐控制等,用户在锁屏界面即可获得信息并进行便捷操作。适配过程中我们发现越来越多的音乐类、音频类应用希望为用户提供锁屏显示的功能,方便用户进行快捷控制。另外,在最新上市的Galaxy Z Flip中,折叠后的外屏小窗口也为用户提供了快捷操作功能,在手机外屏操作既简单又便捷。


image.png


本文针对适配中遇到的问题,为大家介绍如何正确的实现锁屏状态下音频类文件的控制。如果使用锁屏音乐小组件,手机上需要确保打开锁屏音乐小组件开关:在手机【设定】-》【锁定屏幕】-》【屏幕小组件】-》打开【音乐】。针对折叠机Galaxy Z Flip外屏的音乐控制则无需开关控制。


image.png

<1. 锁屏音乐小组件打开方法>

 

锁屏音乐小组件和Galaxy Z Flip外屏的小窗口实现的原理相同:Google在Android5.0中增加的MediaSession功能,它帮助应用在锁定屏幕上控制媒体播放控件。同时为了向下兼容,在support-v4.media中也提供了MediaSessionCompat兼容方案。锁屏音乐小组件就是通过MediaSession或MediaSessionCompat实现应用和系统间的通话。对于应用来说两种实现方式类似,下面以MediaSessionCompat为例进行说明。

 

1.什么是MediaSessionCompat

MediaSessionCompat用于播放器Media player与系统之间的交互,应用通过它告诉系统和其它应用正在播放的内容和应用所支持的媒体控制类型,即在播放音乐时,通过MediaSessionCompat可以在锁屏界面实现对音乐播放的控制功能。


image.png

<2.关系图>

 

2.创建MediaSessionCompat实例

首先需要创建MediaSessionCompat。

ComponentName mediaButtonReceiver= new ComponentName(context, RemoteControlReceiver.class);

MediaSessionCompat mediaSession= new MediaSessionCompat(context, tag, mediaButtonReceiver, null);

 

创建好一个MediaSessionCompat实例,还需做以下三件事情:

 

1)        设置Flag表明应用支持媒体按钮控制

2)        设置回调函数,在播放、暂停、前一首、后一首按键被触动时收到回调

3)        在开始播放的时候将mediaSession设为激活

 

//表明支持的媒体按钮

mediaSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS |  MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);

 //设置回调函数

mediaSession.setCallback(this); 

 //设为true,开始接收各种信息

mediaSession.setActive(true); 

 

3.如何实现便捷音频控制

MediaSessionCompat的实现分为两部分,第一部分由MediaMetadataCompat负责,通过SetMetadata()设定正在播放的内容;第二部分由PlaybackStateCompat负责,通过SetState()来设定当前的状态,比如播放、暂停或缓冲。通过setActions()来设定当前的动作指令,比如停止-播放或者播放-暂停。


image.png

<3.Mediasession结构图>


设定监听事件(表示支持播放,暂停,上一曲,下一曲)

stateBuilder = new PlaybackStateCompat.Builder().setActions(PlaybackStateCompat.ACTION_PLAY | PlaybackStateCompat.ACTION_PLAY_PAUSE |

PlaybackStateCompat.ACTION_SKIP_TO_NEXT |

PlaybackStateCompat.ACTION_ SKIP_TO_PREVIOUS);

MediaSession.setPlaybackState(stateBuilder.build());

 

    设置好回调函数和监听的事件后,就需要在回调函数中处理监听事件,比如onPlay、onPause、onSkipToNext、onSkipToPrevious等。播放音乐时使用MediaMetadataCompat更新屏幕上的歌曲信息,比如歌曲名称、歌手名字、播放进度等。点击按键时使用PlaybackStateCompat来更新播放状态。

4.适配建议

   在我们适配过程中,发现有一些音乐类应用提供了自有的锁屏界面,在应用自己的锁屏界面可以显示歌词等自定义界面,满足用户需要浏览歌词的需求。但是,这样同时会给用户带来繁琐的操作,因为在解锁应用自有的锁屏界面后,仍然需要解锁系统的锁屏界面。所以我们建议应用默认使用系统锁屏,如果用户需要浏览歌词,再提供给用户打开自有锁屏的设置菜单。


image.png


    在Galaxy Z Flip中,只要应用使用了MediaMetadata和PlaybackState,并设置了flag :FLAG_HANDLES_TRANSPORT_CONTROLS,就可以在外屏窗口实现音乐控制。建议音乐类应用按照Android标准适配MediaSession或MediaSessionCompat,方便用户在锁屏状态下进行音乐快捷操作的基本需要。

 

5.参考资料

Ø  https://developer.android.google.cn/reference/android/media/session/MediaSession?hl=zh_cn

Ø  https://developer.android.google.cn/reference/android/support/v4/media/session/PlaybackStateCompat?hl=en

Ø  https://developer.android.google.cn/reference/android/support/v4/media/session/PlaybackStateCompat.Builder?hl=en

Ø  https://developer.android.com/reference/android/media/session/PlaybackState.Builder.html#setActions(long)

6.联系我们

如果您在适配过程中遇到了技术问题,对锁屏音乐小组件有任何建议或意见:

 

欢迎发邮件到:rdtpservice@samsung.com

邮件主题:三星锁屏音乐小组件+APP名

 

感谢您的关注和参与!更多适配文章请关注【三星开发者】微信公众号!