package com.bt.download.android.gui.services; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Service; import android.os.RemoteException; import com.andrew.apollo.utils.MusicUtils; import com.bt.download.android.core.FileDescriptor; import com.bt.download.android.core.player.CoreMediaPlayer; import com.bt.download.android.core.player.Playlist; import com.bt.download.android.core.player.PlaylistItem; public class ApolloMediaPlayer implements CoreMediaPlayer { private final Service service; private Playlist playlist; private Map<Long, FileDescriptor> idMap = new HashMap<Long, FileDescriptor>(); public ApolloMediaPlayer(Service service) { this.service = service; } @Override public void play(Playlist playlist) { this.playlist = playlist; List<PlaylistItem> items = playlist.getItems(); idMap.clear(); long[] list = new long[items.size()]; int position = 0; PlaylistItem currentItem = playlist.getCurrentItem(); for (int i = 0; i < items.size(); i++) { PlaylistItem item = items.get(i); list[i] = item.getFD().id; idMap.put((long) item.getFD().id, item.getFD()); if (currentItem != null && currentItem.getFD().id == item.getFD().id) { position = i; } } MusicUtils.playAll(service, list, position, false); } @Override public void playPrevious() { } @Override public void playNext() { } @Override public void togglePause() { } @Override public void stop() { try { MusicUtils.mService.stop(); } catch (RemoteException e) { e.printStackTrace(); } } @Override public void shutdown() { try { MusicUtils.mService.shutdown(); } catch (RemoteException e) { e.printStackTrace(); } } @Override public boolean isPlaying() { return MusicUtils.isPlaying(); } @Override public void seekTo(int position) { } @Override public int getPosition() { return 0; } @Override public FileDescriptor getCurrentFD() { try { long audioId = MusicUtils.mService.getAudioId(); return idMap.get(audioId); } catch (Throwable e) { } return null; } @Override public Playlist getPlaylist() { return null; } @Override public void start() { } @Override public int getDuration() { return 0; } @Override public int getCurrentPosition() { return 0; } }