Общая картина: графический интерфейс показывает пользователю список его плейлистов. Пользователь выбирает один. Программа передает выбранный список воспроизведения следующему действию, которое отображает песни в этом списке воспроизведения.
Проблема: я могу отобразить плейлисты и зарегистрировать выбор пользователей, но не могу отобразить песни из этого плейлиста.
Да, я вижу следующие вопросы:
Как запрашивать песни в плейлистах на Android SDK?< /а>
Учитывая Название музыкального плейлиста Android. Как найти песни в плейлисте?
Что такое аргумент String 'volumeName' MediaStore.Audio.Playlists.Members.getContentUri?
Как вы можете видеть в моем коде, я сделал все возможное, чтобы реализовать эти решения, но безрезультатно.
Что нужно иметь в виду: я тестирую это на 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){
}
}
}
Никаких ошибок при компиляции. Но «К сожалению, музыкальное приложение неожиданно закрылось». каждый раз.
Спасибо за помощь!