0

好吧,我对以下内容有些困惑。
我有一个具有 mediaplayer 对象的类(主播放器 UI)。现在的问题是我希望即使在 UI 被处理后也能播放音乐,因此我必须依赖服务。但是,如果我将 MediaPlayer 移动到 Service 类

  1. 当播放器 UI 出现时,我要如何控制 onCompletion(MediaPlayer arg0),这也需要显示歌曲的变化?但是该方法必须包含在 Service 方法中。
  2. 如何使 UI 上的播放按钮开始播放服务方法中可用的歌曲?

请指导我。当前包含 UI 和媒体播放器的播放器类如下:

protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_boombastic_player);


    //INITIALIZATIONS
    mMediaPlayer=new MediaPlayer();
    utils = new Utilities();
    songProgressBar=(SeekBar)findViewById(R.string.seeker);
    play=(Button)findViewById(R.string.play);
    next=(Button)findViewById(R.string.next);
    previous=(Button)findViewById(R.string.previous);
    playlist=(Button)findViewById(R.string.Playlist);
    search=(Button)findViewById(R.string.search);
    repeat=(Button)findViewById(R.string.repeat);
    shuffle=(Button)findViewById(R.string.shuffle);
    starttime=(TextView)findViewById(R.string.startTime);
    endtime=(TextView)findViewById(R.string.endTime);
    ObjectIntermediate=new Intermediate();
    srvMplayer=new ServiceMan();


    //Preparation
    if(!Searched)
    {
        GetAllSongs();
        Searched=true;
        ShowToast("Finished Search");
    }

    songProgressBar.setOnSeekBarChangeListener(this); // Important
    mMediaPlayer.setOnCompletionListener(this); 

    play.setOnClickListener(new OnClickListener()
    {   
        @Override
        public void onClick(View arg0) 
        {
            // TODO Auto-generated method stub
            // check for already playing
            if(mMediaPlayer.isPlaying())
            {
                if(mMediaPlayer!=null)
                {
                    mMediaPlayer.pause();

                    /* Release Service*/

                    // Changing button image to play button
                    play.setBackgroundResource(R.drawable.playback_play);
                }
            }
            else
            {
                // Resume song
                if(mMediaPlayer!=null)
                {
                    mMediaPlayer.start();

                    /* Starting Service*/

                    // Changing button image to pause button
                    play.setBackgroundResource(R.drawable.pause);
                }
            }
        }
    });

    next.setOnClickListener(new OnClickListener()
    {   
        @Override
        public void onClick(View arg0) 
        {
            // TODO Auto-generated method stub
            // check if next song is there or not
            if(isRepeat)
            {
                playSong(currentSongIndex);
            }
            else if(isShuffle)
            {
                ShuffleSong();
                playSong(currentSongIndex);
            }
            else if(currentSongIndex < (BoombasticPlayer.Songslist.size() - 1))
            {
                try 
                {
                    ShowToast(Integer.toString(currentSongIndex));
                    playSong(currentSongIndex + 1);
                }
                catch (IllegalArgumentException e) 
                {
                    // TODO Auto-generated catch block
                    Log.e("~~IllegalArgumentException~~",e.toString());
                    android.util.Log.e("->>" , "~~stacktrace~~", e);    
                } 
                catch (IllegalStateException e) 
                {
                    // TODO Auto-generated catch block
                    Log.e("~~IllegalStateException~~",e.toString());
                    android.util.Log.e("->>" , "~~stacktrace~~", e);
                }
                currentSongIndex = currentSongIndex + 1;
            }
            else
            {
                // play first song
                try 
                {
                    playSong(0);
                }
                catch (IllegalArgumentException e) 
                {
                    // TODO Auto-generated catch block
                    Log.e("~~IllegalArgumentException~~",e.toString());
                    android.util.Log.e("->>" , "~~stacktrace~~", e);    
                }
                catch (IllegalStateException e) 
                {
                    // TODO Auto-generated catch block
                    Log.e("~~IllegalStateException~~",e.toString());
                    android.util.Log.e("->>" , "~~stacktrace~~", e);    
                }
                currentSongIndex = 0;
            }
        }
    });

    previous.setOnClickListener(new OnClickListener()
    {   
        @Override
        public void onClick(View arg0) 
        {
            // TODO Auto-generated method stub
            if(isRepeat)
            {
                playSong(currentSongIndex);
            }
            else if(currentSongIndex > 0)
            {
                try {
                    playSong(currentSongIndex - 1);
                } catch (IllegalArgumentException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IllegalStateException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                currentSongIndex = currentSongIndex - 1;
            }
            else
            {
                // play last song
                try {
                    playSong(BoombasticPlayer.Songslist.size() - 1);
                } catch (IllegalArgumentException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IllegalStateException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                currentSongIndex = BoombasticPlayer.Songslist.size() - 1;
            }
        }
    });

    playlist.setOnClickListener(new OnClickListener()
    {   
        @Override
        public void onClick(View arg0) 
        {
            // TODO Auto-generated method stub
            Intent playlistIntent= new Intent(arg0.getContext(), Playlist.class);
            startActivityForResult(playlistIntent, MODE_APPEND);
        }
    });

    repeat.setOnClickListener(new OnClickListener()
    {   
        @Override
        public void onClick(View arg0) 
        {
            // TODO Auto-generated method stub
            if(isRepeat==true)
            {
                isRepeat=false;
                ShowToast("Repeat OFF");
            }
            else
            {
                isRepeat=true;
                ShowToast("Repeat ON");
            }
        }
    });

    shuffle.setOnClickListener(new OnClickListener()
    {   
        @Override
        public void onClick(View arg0) 
        {
            // TODO Auto-generated method stub
            if(isShuffle==true)
            {
                isShuffle=false;
                ShowToast("Shuffle OFF");
            }
            else
            {
                isShuffle=true;
                ShowToast("Shuffle ON");
            }
        }
    });
}
4

0 回答 0