Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从android播放列表中获取下一首/上一首歌曲_Java_Android_Sqlite - Fatal编程技术网

Java 从android播放列表中获取下一首/上一首歌曲

Java 从android播放列表中获取下一首/上一首歌曲,java,android,sqlite,Java,Android,Sqlite,我正在编写一个android音乐播放器,在播放列表中查找下一首歌曲时遇到了问题。 我对一首歌有两个价值观, 播放ID(MediaStore.Audio.Playlists.Members.PLAYLIST\u ID) 和播放列表歌曲ID MediaStore.Audio.Playlists.Members.\u ID 以下是相关代码,试图将光标移到当前歌曲之后的所有歌曲上: Uri qUri = MediaStore.Audio.Playlists.Members.getContentU

我正在编写一个android音乐播放器,在播放列表中查找下一首歌曲时遇到了问题。 我对一首歌有两个价值观, 播放ID(MediaStore.Audio.Playlists.Members.PLAYLIST\u ID) 和播放列表歌曲ID MediaStore.Audio.Playlists.Members.\u 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)
出于某种原因,它搜索两个表:音频、播放列表、地图、音频,这似乎是问题的根源


有可能找到下一首具有这些值的歌曲吗?如果我的程序必须以不同的方式处理播放列表中的歌曲,并存储其他一些我甚至不知道会是什么的值,MediaStore.Audio.Playlists.Members.Audio\u ID可能会使我的程序复杂化?

//您只能搜索和附加。试试这个

 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);
希望这会有所帮助(尽管这是一种未记录的方式)-