Как загрузить музыкальные файлы в MusicBrowerService?
У меня трудное время для внедрения My Local Music Fragment в сервис Music Browser. Я пытаюсь сделать самый простой способ сделать музыкальный проигрыватель.
Я знаю, что в Google есть тонны кода музыкального проигрывателя. Но очень немногие используют архитектуру Google.
Вот как я загружаю данные в локальный музыкальный фрагмент
public static ArrayList<Audio> audioList;
public void LoadMediaList() {
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor cursor = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
cursor = Objects.requireNonNull(getActivity()).getContentResolver().query(uri, null, null, null, MediaStore.MediaColumns.TITLE);
}
if (cursor != null) {
if (cursor.moveToFirst()) {
audioList = new ArrayList<>();
do {
String name = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
String url = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
String album = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));
long duration = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION));
if (duration == 0.0 || duration > 10000) {
Audio s = new Audio(name, artist, url, album);
audioList.add(s);
}
} while (cursor.moveToNext());
}
cursor.close();
songAdapter = new SongAdapter(getActivity(), audioList);
}
}
Это основной код, который я нашел на codeLabs для службы Music Browser. Как я могу интегрировать данные в музыкальной библиотеке. Я не могу понять, как я могу использовать приведенный ниже код с моим audioList, который содержит все музыкальные данные.
public class MediaPlayerService extends MediaBrowserServiceCompat {
private MediaSessionCompat mSession;
private PlaybackManager mPlayback;
final MediaSessionCompat.Callback mCallback =
new MediaSessionCompat.Callback() {
@Override
public void onPlayFromMediaId(String mediaId, Bundle extras) {
mSession.setActive(true);
MediaMetadataCompat metadata = MusicLibrary.getMetadata(MediaPlayerService.this, mediaId);
mSession.setMetadata(metadata);
mPlayback.play(metadata);
}
@Override
public void onPlay() {
if (mPlayback.getCurrentMediaId() != null) {
onPlayFromMediaId(mPlayback.getCurrentMediaId(), null);
}
}
@Override
public void onPause() {
mPlayback.pause();
}
@Override
public void onStop() {
stopSelf();
}
@Override
public void onSkipToNext() {
onPlayFromMediaId(MusicLibrary.getNextSong(mPlayback.getCurrentMediaId()), null);
}
@Override
public void onSkipToPrevious() {
onPlayFromMediaId(MusicLibrary.getPreviousSong(mPlayback.getCurrentMediaId()), null);
}
};
@Override
public void onCreate() {
super.onCreate();
// Start a new MediaSession
mSession = new MediaSessionCompat(this, "MusicService");
mSession.setCallback(mCallback);
mSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS | MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
setSessionToken(mSession.getSessionToken());
// TODO: Uncomment the following line to show a notification
final MediaNotificationManager mediaNotificationManager = new MediaNotificationManager(this);
mPlayback = new PlaybackManager(this, new PlaybackManager.Callback() {
@Override
public void onPlaybackStatusChanged(PlaybackStateCompat state) {
mSession.setPlaybackState(state);
// TODO: Uncomment the following line to show a notification
mediaNotificationManager.update(mPlayback.getCurrentMedia(), state, getSessionToken());
}
});
}
@Override
public void onDestroy() {
mPlayback.stop();
mSession.release();
}
@Override
public BrowserRoot onGetRoot(String clientPackageName, int clientUid, Bundle rootHints) {
return new BrowserRoot(MusicLibrary.getRoot(), null);
}
@Override
public void onLoadChildren(
final String parentMediaId, final Result<List<MediaBrowserCompat.MediaItem>> result) {
result.sendResult(MusicLibrary.getMediaItems());
}
}
Этот вопрос слишком велик, чтобы ответить, пожалуйста, потерпите меня. Я только начинающий и пытаюсь понять архитектуру музыки, чтобы поделиться учебником по созданию музыкального плеера с использованием архитектуры Google.