在UI关闭后播放音乐

时间:2013-09-15 10:17:51

标签: android android-service android-mediaplayer android-pendingintent

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

  1. 当播放器UI显示时,我如何控制onCompletion(MediaPlayer arg0),还需要显示歌曲的变化?但是,该方法必须包含在Service方法中。
  2. 如何让UI上的“播放”按钮启动“服务”方法中可用的歌曲?
  3. 请指导我。保存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");
                }
            }
        });
    }
    

0 个答案:

没有答案