如何在android中的mp3相册中将我们的图像设置为图稿

时间:2013-09-03 10:49:12

标签: android

我正在创建一个应用程序,我们要在其中插入一个没有任何艺术作品的.mp3文件。以及我也想用从SD卡中获取的新图像替换旧的艺术品,每当我想要恢复旧的艺术品时,能够检索它。请帮助别人。

1 个答案:

答案 0 :(得分:0)

希望这能帮到你 -

   ContentResolver res = context.getContentResolver();
    Uri uri = ContentUris.withAppendedId(sArtworkUri, album_id);
    if (uri != null) {
        InputStream in = null;
        try {
            in = res.openInputStream(uri);
            return BitmapFactory.decodeStream(in, null, sBitmapOptions);
        } catch (FileNotFoundException ex) {
            // The album art thumbnail does not actually exist. Maybe the user deleted it, or
            // maybe it never existed to begin with.
            Bitmap bm = getArtworkFromFile(context, null, album_id);
            if (bm != null) {
                // Put the newly found artwork in the database.
                // Note that this shouldn't be done for the "unknown" album,
                // but if this method is called correctly, that won't happen.

                // first write it somewhere
                String file = Environment.getExternalStorageDirectory()
                    + "/albumthumbs/" + String.valueOf(System.currentTimeMillis());
                if (ensureFileExists(file)) {
                    try {
                        OutputStream outstream = new FileOutputStream(file);
                        if (bm.getConfig() == null) {
                            bm = bm.copy(Bitmap.Config.RGB_565, false);
                            if (bm == null) {
                                return getDefaultArtwork(context);
                            }
                        }
                        boolean success = bm.compress(Bitmap.CompressFormat.JPEG, 75, outstream);
                        outstream.close();
                        if (success) {
                            ContentValues values = new ContentValues();
                            values.put("album_id", album_id);
                            values.put("_data", file);
                            Uri newuri = res.insert(sArtworkUri, values);
                            if (newuri == null) {
                                // Failed to insert in to the database. The most likely
                                // cause of this is that the item already existed in the
                                // database, and the most likely cause of that is that
                                // the album was scanned before, but the user deleted the
                                // album art from the sd card.
                                // We can ignore that case here, since the media provider
                                // will regenerate the album art for those entries when
                                // it detects this.
                                success = false;
                            }
                        }
                        if (!success) {
                            File f = new File(file);
                            f.delete();
                        }
                    } catch (FileNotFoundException e) {
                        Log.e(TAG, "error creating file", e);
                    } catch (IOException e) {
                        Log.e(TAG, "error creating file", e);
                    }
                }
            } else {
                bm = getDefaultArtwork(context);
            }
            return bm;
        } finally {
            try {
                if (in != null) {
                    in.close();
                }
            } catch (IOException ex) {
            }
        }
    }

来自 - How can I update the album art path using contentResolver?

的答案