Я пишу музыкальный плеер андроида, и у меня проблемы с поиском следующей песни в плейлисте. У меня есть два значения для песни, playlistID (MediaStore.Audio.Playlists.Members.PLAYLIST_ID) и список воспроизведения песни ID MediaStore.Audio.Playlists.Members._IDПолучите следующую/предыдущую песню из плейлиста android
здесь соответствующий код, пытаясь получить курсор все песни после текущей:
Uri qUri = MediaStore.Audio.Playlists.Members.getContentUri("external", playlistId);
String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0 AND " + MediaStore.Audio.Playlists.Members._ID + " > " + songId +
" AND "+ MediaStore.Audio.Playlists.Members.PLAYLIST_ID + " = " + playlistId;
String[] projection = { MediaStore.Audio.Playlists.Members._ID };
Cursor cursor;
/* Execute query. */
try{
cursor = mContentResolver.query(qUri, projection, selection, null, null);
} catch(SQLiteException s)
{
ReconApp.debugToast("SQLiteException in next track finder", ReconApp.ERROR_TOAST);
s.printStackTrace();
return -1;
}
ловит следующее исключение
10-14 14:24:08.207: ERROR/DatabaseUtils(1479): android.database.sqlite.SQLiteException: ambiguous column name: _id: , while compiling: SELECT audio_playlists_map._id AS _id FROM audio_playlists_map, audio WHERE (audio._id = audio_id AND playlist_id = 1) AND (is_music != 0 AND _id > 29 AND playlist_id = 1)
по какой-то причине он ищет две таблицы: audio_playlists_map, аи dio, который, кажется, является источником проблемы.
можно ли найти следующую песню с этими значениями? Это усложнит мою программу, чтобы по-разному обрабатывать песни в плейлисте и хранить какую-то другую ценность, о которой я даже не знаю, что бы это было, MediaStore.Audio.Playlists.Members.AUDIO_ID, может быть?
Это поможет, надеюсь (хотя это недокументированная путь) - http://sudarmuthu.com/blog/finding-the-songtrack-which-is-currently-playing-in-android –