Получить следующую / предыдущую песню из списка воспроизведения Android - PullRequest
1 голос
/ 15 октября 2011

Я пишу музыкальный проигрыватель Android, и у меня возникают проблемы с поиском следующей песни в списке воспроизведения. У меня есть два значения для песни, идентификатор списка воспроизведения (MediaStore.Audio.Playlists.Members.PLAYLIST_ID) и идентификатор песни списка воспроизведения MediaStore.Audio.Playlists.Members._ID

вот соответствующий код, пытающийся навести курсор на все песни после текущей:

    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, audio, который, кажется, является источником проблемы.

возможно ли найти следующую песню с этими значениями? Это усложнит мою программу тем, что придется обрабатывать песни плейлиста по-другому и сохранять какое-то другое значение, которое я даже не знаю, что это будет, MediaStore.Audio.Playlists.Members.AUDIO_ID может быть?

1 Ответ

2 голосов
/ 10 ноября 2011

// Вы можете только искать и добавлять.Попробуйте это

 String[] projection = new String[] {MediaStore.Audio.Playlists.Members.PLAYLIST_ID,
                MediaStore.Audio.Media.TITLE,
                MediaStore.Audio.Media.DATA,
                MediaStore.Audio.Media.ALBUM,
                MediaStore.Audio.Playlists.Members.AUDIO_ID};
            Uri contentUri = MediaStore.Audio.Playlists.Members.getContentUri("external", _playlistid);
            contentUri = contentUri.buildUpon().appendQueryParameter("limit", "1").build();
            Cursor playlistCursor = getContentResolver().query(contentUri,
                    projection,
                    null, null, MediaStore.Audio.Playlists.Members.PLAY_ORDER);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...