Glide возвращает нулевое растровое изображение при попытке получить только растровое изображение - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь загрузить 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()
        }
    }

Я не могу понять, что я делаю неправильно, любая помощь в этом будет действительно оценена

...