首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Android中设置锁屏背景(像Spotify一样)

在Android中设置锁屏背景(像Spotify一样)
EN

Stack Overflow用户
提问于 2014-03-09 19:29:56
回答 3查看 23.8K关注 0票数 24

我知道这个话题已经被hereherehere讨论过了,答案似乎是不可能的。

但我最近在我的Nexus4 (4.4.2)中安装了Spotify,这似乎是可能的。当我在Spotify中听一首歌时,锁定屏幕背景会随着我正在听的专辑的封面而改变(见截图)。

我的理论是:当手机被锁定时,他们使用专辑封面进行change the phone wallpaper,以便同时更改锁定屏幕背景,然后在手机解锁时设置前一个背景。但他们不是这样做的,因为在Spotify的权限列表中没有"android.permission.SET_WALLPAPER"...:(

他们是怎么做到的?一些理论?

EN

回答 3

Stack Overflow用户

发布于 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"!你可以走了。

票数 1
EN

Stack Overflow用户

发布于 2017-06-22 17:09:47

下面是新的“官方文档”

在底部它描述了锁定屏幕的详细信息

https://developer.android.com/guide/topics/media-apps/working-with-a-media-session.html#maintain-state

作为另一种选择,一旦我理解了所有术语和行话,本教程将帮助我概述MediaSessionCompat服务的一般结构。

https://code.tutsplus.com/tutorials/background-audio-in-android-with-mediasessioncompat--cms-27030

最后,在Nougat和更高版本中有一个用于锁定屏幕墙纸的API。现在我不明白为什么不支持lib。

票数 0
EN

Stack Overflow用户

发布于 2017-11-07 11:45:30

正如here所解释的,关键是将MediaMetadata对象传递给您的MediaSession。如果这些术语对您来说很陌生,最好从头开始链接教程。

我发现.putBitmap(MediaMetadata.METADATA_KEY_ART, bitmap)行是用于将图像加载到锁屏背景的那行代码。但也要确保填充.putBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART, bitmap)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22281616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档