Android MediaStyle 通知图像(largeIcon)是像素化的

问题描述 投票:0回答:2

我正在尝试显示媒体样式通知,并且我正在通过 Uri 从应用程序的本地文件目录中获取艺术图像。当我的应用程序中显示完全相同的图像时(通过线圈的 AsyncImage),它会以完美的质量显示,但是当图像显示在通知中时,它会变得非常像素化和模糊。

我正在使用 ImageDecoder.decodeBitmap 为通知创建位图,并使用 ImageDecoder.createSource 为其提供源(我尝试过使用内容解析器和 Uri 作为源并使用 File(Uri .path) 作为源,两者给出相同的结果)。

然后我使用 setLargeIcon 提供创建的位图。

奇怪的是,当我在创建位图之后并在传递给 setLargeIcon 之前记录位图的宽度和高度时,它报告的尺寸与原始图像相同,因此在传递给媒体样式通知之前看起来很好。

有什么想法吗?

android bitmap notifications android-jetpack-compose android-notification.mediastyle
2个回答
1
投票

请尝试使用MediaSessionCompat的setMetadata()。

MediaSessionCompat mediasession = new MediaSessionCompat(..);
MediaMetadataCompat.Builder bld = new MediaMetadataCompat.Builder();
//put metadata such as title, artist...
bld.putBitmap(BITMAP_FROM_RESOURCE);
mediaSession.setMetadata(bld.build());

MediaStyle 通知似乎没有使用 setLargeIcon 中的图像。


0
投票

这个问题首先出现在Android 12上,之前在Android 10上不需要专门设置位图。所以如果是旧设备,仍然可以使用setLargeIcon。但Android 10+ 最好使用标准方法。

顺便说一句,METADATA_KEY_ALBUM_ART 也可以用作键值放入位图中。

builder.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, yourBitmap)

© www.soinside.com 2019 - 2024. All rights reserved.