Код, который я использую для установки АЛЬБОМА ID :
song.setAlbumID(cursor.getLong(cursor.getColumnIndexOrThrow(SONG_ALBUMID)));
Теперь, когда я регистрирую эти значения в logcat с помощью:
Log.d(TAG, "album ids: " + cursor.getLong(cursor.getColumnIndexOrThrow(SONG_ALBUMID)));
Я получаю это в моем logcat:
Song: albumids: [1]
Song: albumids: [3]
Song: albumids: [1]
Song: albumids: [4]
Song: albumids: [5]
Song: albumids: [6]
Song: albumids: [1]
Song: albumids: [1]
Song: albumids: [1]
Как видите, несколько песен имеют одинаковый АЛЬБОМ ИД , что вызывает проблему при попытке обновить АЛЬБОМ АРТ , поскольку каждая песня с ИД 1 будет обновлена до что АЛЬБОМ АРТ я выбрал.
Как дать каждой Песне УНИКАЛЬНЫЙ ID ?
EDIT
final Uri musicUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
final String musicsOnly = SONG_IS_MUSIC + "!=0";
// Querying the Media DATABASE.
cursor = resolver.query(musicUri, projection1, musicsOnly, null, null);
try {
if (cursor != null && cursor.moveToFirst()) {
do {
// Creating a SONG from the VALUES in each column.
Song song = new Song(cursor.getLong(cursor.getColumnIndexOrThrow(SONG_ID)),
cursor.getString(cursor.getColumnIndexOrThrow(SONG_FILEPATH)));
song.setTitle(cursor.getString(cursor.getColumnIndexOrThrow(SONG_TITLE)));
song.setArtist(cursor.getString(cursor.getColumnIndexOrThrow(SONG_ARTIST)));
song.setAlbumID(cursor.getLong(cursor.getColumnIndexOrThrow(SONG_ALBUMID)));
song.setAlbum(cursor.getString(cursor.getColumnIndexOrThrow(SONG_ALBUM)));
song.setDuration(cursor.getLong(cursor.getColumnIndexOrThrow(SONG_DURATION)));
song.setYear(cursor.getInt(cursor.getColumnIndexOrThrow(SONG_YEAR)));
// Using the previously created maps to add the current song GENRE.
String currentGenreID = songIdToGenreIdMap.get(Long.toString(song.getId()));
String currentGenreName = genreIdToGenreNameMap.get(currentGenreID);
song.setGenre(currentGenreName);
//song.add(cursor.getLong(cursor.getColumnIndexOrThrow(SONG_ALBUMID)));
Log.d(TAG, "album id: " + cursor.getLong(cursor.getColumnIndexOrThrow(SONG_ALBUMID)));
// Adding the Song to the global array list 'songs'.
songs.add(song);
} while (cursor.moveToNext());
}
Как мне вставить новый АЛЬБОМ АРТ в Mediastore
final Uri sArtworkUri =
Uri.parse("content://media/external/audio/albumart");
Uri albumArtUri = ContentUris.withAppendedId(sArtworkUri, albumID);
ContentResolver resolver = c.getContentResolver();
ContentValues valuesAlbum = new ContentValues();
valuesAlbum.put(currentAlbumID, albumID);
valuesAlbum.put(currentAlbumData, file_path);
//Update albumArt.
resolver.delete(albumArtUri, null,null);
resolver.insert(sArtworkUri, valuesAlbum);