2011-10-14 14 views
1

アンドロイドミュージックプレイヤーを書いています。プレイリストの次の曲を見つけるのに問題があります。 私は歌のための2つの値、 playlistID(MediaStore.Audio.Playlists.Members.PLAYLIST_ID) を持っており、ここでプレイリストの曲ID MediaStore.Audio.Playlists.Members._IDアンドロイドプレイリストの次/前の曲を取得

をしようとし、関連するコードです現在の1の後にすべての曲の上にカーソルを取得:audio_playlists_map、AU:

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) 

をキャッチし、それは2つのテーブルを検索しますディオは、問題の原因と思われる。

これらの値で次の曲を見つけることは可能でしょうか?それは私のプログラムがプレイリストの歌を違ったやり方で扱い、何か他の価値を蓄えなければならないことを複雑にするでしょう。私はMediaStore.Audio.Playlists.Members.AUDIO_IDの可能性は分かりません。

+0

をお試しください - http://sudarmuthu.com/blog/finding-the-songtrack-which-is-currently-playing-in-android –

答えて

2

//シークして追加することができます。 (それが文書化されていない方法ですが)これがうまくいけば、助けるこの

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); 
関連する問題