我知道这个话题已经被here,here和here讨论过了,答案似乎是不可能的。
但我最近在我的Nexus4 (4.4.2)中安装了Spotify,这似乎是可能的。当我在Spotify中听一首歌时,锁定屏幕背景会随着我正在听的专辑的封面而改变(见截图)。
我的理论是:当手机被锁定时,他们使用专辑封面进行change the phone wallpaper,以便同时更改锁定屏幕背景,然后在手机解锁时设置前一个背景。但他们不是这样做的,因为在Spotify的权限列表中没有"android.permission.SET_WALLPAPER"...:(
他们是怎么做到的?一些理论?
发布于 2018-10-29 19:12:30
在尝试了一些方法之后,我在这里有一个简单的代码;尝试使用这个方法;
private void updateMetaData() {
mediaSession =new MediaSessionCompat(context,"BXPlayer");
Bitmap cover = BitmapFactory.decodeResource(context.getResources(),
R.drawable.cover2);
mediaSession.setMetadata(new MediaMetadataCompat.Builder()
.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, cover)
.putString(MediaMetadataCompat.METADATA_KEY_ARTIST, mSelectedSong.getArtist())
.putString(MediaMetadataCompat.METADATA_KEY_ALBUM, mSelectedSong.getAlbum())
.putString(MediaMetadataCompat.METADATA_KEY_TITLE, mSelectedSong.getTitle())
.build());
}
然后,在通知中,您需要将样式设置为android.support.v4.media.app.NotificationCompat.MediaStyle()
,并将媒体会话令牌设置为使用当前元数据。检查下面的代码片段;
builder.setStyle(new android.support.v4.media.app.NotificationCompat.MediaStyle()
.setShowActionsInCompactView(0, 1, 2)
.setMediaSession(mediaSession.getSessionToken()));
return builder.build();
要工作,你必须在你的应用程序build.gradle
和boom中包含implementation "com.android.support:support-v4:$latest_version"
!你可以走了。
发布于 2017-06-22 17:09:47
下面是新的“官方文档”
在底部它描述了锁定屏幕的详细信息
作为另一种选择,一旦我理解了所有术语和行话,本教程将帮助我概述MediaSessionCompat服务的一般结构。
https://code.tutsplus.com/tutorials/background-audio-in-android-with-mediasessioncompat--cms-27030
最后,在Nougat和更高版本中有一个用于锁定屏幕墙纸的API。现在我不明白为什么不支持lib。
发布于 2017-11-07 11:45:30
正如here所解释的,关键是将MediaMetadata对象传递给您的MediaSession。如果这些术语对您来说很陌生,最好从头开始链接教程。
我发现.putBitmap(MediaMetadata.METADATA_KEY_ART, bitmap)
行是用于将图像加载到锁屏背景的那行代码。但也要确保填充.putBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART, bitmap)
。
https://stackoverflow.com/questions/22281616
复制相似问题