Я пытаюсь загрузить URL-адрес растрового изображения, используя glide, а затем хочу вернуть растровое изображение, используя glide, но когда я пытаюсь получить растровое изображение, оно всегда возвращает мне нулевое растровое изображение, вот мой код:
fun getimage(context: Context, filePath:String ):Bitmap {
val audioUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
val selection = MediaStore.Audio.Media.DATA + "=? "
lateinit var bitmap: Bitmap
GlobalScope.launch(Dispatchers.IO) {
val projection = arrayOf<String>(MediaStore.Audio.Media._ID, MediaStore.Audio.Media.ALBUM_ID)
val cursor = context.getContentResolver().query(
audioUri,
projection,
selection,
arrayOf<String>(filePath), null)
if (cursor != null && cursor.moveToFirst()) {
val albumId = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID))
val sArtworkUri = Uri.parse("content://media/external/audio/albumart")
val imgUri = ContentUris.withAppendedId(sArtworkUri,
albumId)
Glide.with(context)
.asBitmap()
.load(imgUri)
.error(R.mipmap.icon)
.listener(object : RequestListener<Bitmap> {
override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Bitmap>?, isFirstResource: Boolean): Boolean {
bitmap = BitmapFactory.decodeResource(context.resources, R.mipmap.icon)
return true
}
override fun onResourceReady(resource: Bitmap?, model: Any?, target: Target<Bitmap>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {
bitmap = resource!!
return false
}
})
.submit()
.get()
cursor.close()
}
}
return bitmap!!
}
Однако тот же код отлично работает в моем классе адаптера recylerview без каких-либо проблем:
fun loadart(context:Context,filePath:String,holder: ProjectViewHolder) {
val audioUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
val selection = MediaStore.Audio.Media.DATA + "=? "
val projection = arrayOf<String>(MediaStore.Audio.Media._ID, MediaStore.Audio.Media.ALBUM_ID)
val cursor = context.getContentResolver().query(
audioUri,
projection,
selection,
arrayOf<String>(filePath), null)
if (cursor != null && cursor.moveToFirst())
{
val albumId = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID))
val sArtworkUri = Uri.parse("content://media/external/audio/albumart")
val imgUri = ContentUris.withAppendedId(sArtworkUri,
albumId)
Glide.with(context)
.asBitmap()
.load(imgUri)
.error(R.mipmap.icon)
.listener(object : RequestListener<Bitmap>{
override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Bitmap>?, isFirstResource: Boolean): Boolean {
holder.covimg.setImageResource( R.mipmap.icon)
return true
}
override fun onResourceReady(resource: Bitmap?, model: Any?, target: Target<Bitmap>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {
return false
}
})
.into(holder.covimg)
cursor.close()
}
}
Я не могу понять, что я делаю неправильно, любая помощь в этом будет действительно оценена