package com.tadpolemusic.media.service; import java.util.List; import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.IBinder; import android.os.RemoteException; import android.util.Log; import com.tadpolemusic.media.MusicData; import com.tadpolemusic.media.MusicPlayer; import com.tadpolemusic.media.PlayListInfo; import com.tadpolemusic.media.aidl.MusicConnect; import com.tadpolemusic.media.aidl.MusicConnect.Stub; public class MusicService extends Service { private static final String TAG = "MusicService"; private MusicPlayer m_mMusicPlayer; private SDStateBrocast mSDStateBrocast; @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return mBinder; } @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); m_mMusicPlayer = new MusicPlayer(this); mSDStateBrocast = new SDStateBrocast(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Intent.ACTION_MEDIA_MOUNTED); intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED); intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED); intentFilter.addAction(Intent.ACTION_MEDIA_EJECT); intentFilter.addDataScheme("file"); registerReceiver(mSDStateBrocast, intentFilter); } @Override public void onDestroy() { // TODO Auto-generated method stub unregisterReceiver(mSDStateBrocast); super.onDestroy(); } private MusicConnect.Stub mBinder = new Stub() { @Override public void refreshMusicList(String playListID, List<MusicData> musicFileList) throws RemoteException { // TODO Auto-generated method stub m_mMusicPlayer.refreshMusicList(playListID, musicFileList); } @Override public void getFileList(List<MusicData> musicFileList) throws RemoteException { // TODO Auto-generated method stub List<MusicData> tmp = m_mMusicPlayer.getFileList(); int count = tmp.size(); for (int i = 0; i < count; i++) { musicFileList.add(tmp.get(i)); } } @Override public int getCurPosition() throws RemoteException { // TODO Auto-generated method stub return m_mMusicPlayer.getCurPosition(); } @Override public int getDuration() throws RemoteException { // TODO Auto-generated method stub return m_mMusicPlayer.getDuration(); } @Override public boolean pause() throws RemoteException { // TODO Auto-generated method stub return m_mMusicPlayer.pause(); } @Override public boolean play(int position) throws RemoteException { // TODO Auto-generated method stub Log.i(TAG, "play pos = " + position); return m_mMusicPlayer.play(position); } @Override public boolean playNext() throws RemoteException { // TODO Auto-generated method stub return m_mMusicPlayer.playNext(); } @Override public boolean playPre() throws RemoteException { // TODO Auto-generated method stub return m_mMusicPlayer.playPre(); } @Override public boolean rePlay() throws RemoteException { // TODO Auto-generated method stub return m_mMusicPlayer.replay(); } @Override public boolean seekTo(int rate) throws RemoteException { // TODO Auto-generated method stub return m_mMusicPlayer.seekTo(rate); } @Override public boolean stop() throws RemoteException { // TODO Auto-generated method stub return m_mMusicPlayer.stop(); } @Override public int getPlayState() throws RemoteException { // TODO Auto-generated method stub return m_mMusicPlayer.getPlayState(); } @Override public void exit() throws RemoteException { // TODO Auto-generated method stub m_mMusicPlayer.exit(); } @Override public void sendPlayStateBrocast() throws RemoteException { // TODO Auto-generated method stub m_mMusicPlayer.sendPlayStateBrocast(); } @Override public void setPlayMode(int mode) throws RemoteException { // TODO Auto-generated method stub m_mMusicPlayer.setPlayMode(mode); } @Override public int getPlayMode() throws RemoteException { // TODO Auto-generated method stub return m_mMusicPlayer.getPlayMode(); } @Override public PlayListInfo getCurPlayListInfo() throws RemoteException { // TODO Auto-generated method stub return m_mMusicPlayer.getCurPlayListInfo(); } @Override public void getCurrentPlayListInfo(PlayListInfo info) throws RemoteException { m_mMusicPlayer.getCurrentPlayListInfo(info); } }; class SDStateBrocast extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub String action = intent.getAction(); if (action.equals(Intent.ACTION_MEDIA_MOUNTED)) { } else if (action.equals(Intent.ACTION_MEDIA_UNMOUNTED)) { } else if (Intent.ACTION_MEDIA_SCANNER_FINISHED.equals(action)) { } else if (Intent.ACTION_MEDIA_EJECT.equals(action)) { m_mMusicPlayer.exit(); } } } }