java.lang.NullPointerException: decodeResource(context.r…rce



我正在尝试从音乐中获取专辑艺术uri(如果为空,则显示我自己的应用内可绘制(

但我得到了:

java.lang.NullPointerException:decodeResource(context.r…rces,r.drawable.ic_logo(不得为null

实用程序.kt

fun getAlbumArtBitmap(context: Context, albumId: Long): Bitmap {
try {
return when {
Build.VERSION.SDK_INT >= Build.VERSION_CODES.P -> {
val source = ImageDecoder.createSource(
context.contentResolver,
getAlbumArtUri(albumId)
)
ImageDecoder.decodeBitmap(source)
}
else -> MediaStore.Images.Media.getBitmap(
context.contentResolver,
getAlbumArtUri(albumId)
)
}
} catch (e: FileNotFoundException) {
Timber.e(e)
} catch (e: UnsupportedOperationException) {
Timber.e(e)
}
return BitmapFactory.decodeResource(context.resources, R.drawable.ic_logo)
}

drawable(R.drawable.ic_logo(是一个xml矢量可绘制文件(导入svg(,位于可绘制文件夹中

Player.kt

val artwork = getAlbumArtBitmap(context, song.albumId)
putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, artwork)

显然,R.drawable.ic_logo是一个向量图像。

我最终使用了这个:

ContextCompat.getDrawable(context, R.drawable.ic_logo)?.toBitmap()

将矢量绘图转换为位图,效果很好!

相关内容

  • 没有找到相关文章

最新更新