全体像: GUI はユーザーにプレイリストのリストを表示します。ユーザーはいずれかを選択します。プログラムは、選択したプレイリストを次のアクティビティに渡し、そのプレイリスト内の曲を表示します。
問題: プレイリストを表示してユーザーの選択を登録することはできますが、そのプレイ リストの曲を表示できないようです。
はい、次の質問を見ました。
Android SDK でプレイリスト内の曲をクエリする方法は?
Android の音楽プレイリスト名が与えられた場合、プレイリスト内の曲を見つけるにはどうすればよいですか?
MediaStore.Audio.Playlists.Members.getContentUri の String 'volumeName' 引数は何を参照していますか?
コードでわかるように、これらのソリューションを実装するために最善を尽くしましたが、役に立ちませんでした。
心に留めておくべきこと: 私はこれを Galaxy Nexus でテストしているので、SD カードはありません。クラウド内の内部ストレージと音楽のみ。あらゆるシナリオ (内部、外部、またはクラウド) で機能する必要があります。現在、それらのいずれでも機能しません。
//@SuppressWarnings ("serial)")
public class CreationActivity extends Activity {
private final String [] STAR= {"*"};
//reads in all songs to an array
@Override
public void onCreate (Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//set layout view and assign to variable
setContentView(R.layout.creation);
TableLayout myLayout = (TableLayout)findViewById(R.id.creationLayout);
try {
Bundle extras = getIntent().getExtras();
if (extras!=null){
//get the desired playlist and ID
String playlist = extras.getString("playlist");
Long playlistID = extras.getLong("playlistID");
ArrayList<song> songs = new ArrayList<song>();
//read in the songs from the playlist
String[] proj = {MediaStore.Audio.Playlists.Members.TITLE,
MediaStore.Audio.Playlists.Members.ARTIST,
MediaStore.Audio.Playlists.Members.DURATION};
//method 1
Cursor songCursor = getContentResolver().query(MediaStore.Audio.Playlists.Members.getContentUri(null,playlistID),
proj,
null,
null,
null);
//method 2
/*
Cursor songCursor = getContentResolver().query(Uri.parse("content://com.google.android.music.MusicContent/playlists/members"),
proj,
null,
null,
null);
*/
//method 3
/*
Uri membersUri = MediaStore.Audio.Playlists.Members.getContentUri("internal", playlistID);
Cursor membersCursor = managedQuery(membersUri, STAR, null, null, null);
*/
//then this part with methods 1 and 2
/*
if (songCursor.getCount() > 0) {
songCursor.moveToFirst();
do {
song currSong = new song();
currSong.title = songCursor.getString(0);
currSong.artist = songCursor.getString(1);
songs.add(currSong);
} while (songCursor.moveToNext());
}
songCursor.close();
*/
//or this part with method 3
/*
membersCursor.moveToFirst();
for(int s= 0; s<membersCursor.getCount(); s++,
membersCursor.moveToNext()){
song currSong = new song();
currSong.title = songCursor.getString(0);
currSong.artist = songCursor.getString(1);
songs.add(currSong);
}
membersCursor.close();
*/
}else{
Toast.makeText(getBaseContext(), "No songs",Toast.LENGTH_LONG).show();
}
} catch (NumberFormatException e){
}
}
}
コンパイル中にエラーはありません。しかし、「残念ながら音楽アプリは予期せず終了しました。」毎回。
助けてくれてありがとう!