如何访问播放列表搭载Android默认的音乐应用程序,创建并调用应用程序的音乐播放呢?应用程序、播放列表、音乐播放、音乐

2023-09-04 11:30:10 作者:爱与不爱介于一字之差

我写一个Android应用程序,我想通过访问Android的默认的音乐应用程序创建的播放列表。

I am writing an android app, and I want to access the playlist created by android default music app.

在我的应用程序,用户应该能够浏览播放列表,选择播放列表,播放。

In my app, the user should be able to browse the playlist and select any playlist to play.

所以基本上我想知道如何访问它,当用户选择的任何播放列表,如何将它传递给默认的音乐应用程序,以发挥它的背景。

So basically I want to know how to access it and when user selects any playlist, how to pass it to default music app to play it in background.

有什么事情做的ContentProvider或mediastore?我真的不知道如何访问其他应用程序的数据。

Is it something to do with ContentProvider or mediastore?? I really don't know how to access data on other apps.

感谢你了!

推荐答案

从上面的播放列表播放的歌曲,我为调用函数

To play the songs from above playlists, I m calling the function

PlaySongsFromAPlaylist(PlayListID); // 0℃ PlayListID<计数的

从上面的的onCreate 的方法。而剩下的code是按照如下所述。

from the above onCreate method. And remaining code is as per mentioned below.

public void PlaySongsFromAPlaylist(int playListID){

    String[] ARG_STRING = {MediaStore.Audio.Media._ID,MediaStore.Audio.Media.DATA,MediaStore.Audio.Media.DISPLAY_NAME,MediaStore.Video.Media.SIZE,android.provider.MediaStore.MediaColumns.DATA};
    Uri membersUri = MediaStore.Audio.Playlists.Members.getContentUri("external", playListID);
    Cursor songsWithingAPlayList = mThis.managedQuery(membersUri, ARG_STRING, null, null, null);
    int theSongIDIwantToPlay = 0; // PLAYING FROM THE FIRST SONG
    if(songsWithingAPlayList != null)
    {
        songsWithingAPlayList.moveToPosition(theSongIDIwantToPlay);
        String DataStream = songsWithingAPlayList.getString(4);
        PlayMusic(DataStream);
        songsWithingAPlayList.close();
    }   
}

 public static void PlayMusic(String DataStream){
    MediaPlayer mpObject = new MediaPlayer();
    if(DataStream == null)
        return;
    try {
        mpObject.setDataSource(DataStream);
        mpObject.prepare();
        mpObject.start();
    } catch (Exception e) {
        e.printStackTrace();
    }
 }

希望这会工作。 :)

Hope this will work. :)