0

さて、私は次のことで少し混乱しています。
mediaplayer オブジェクトを持つクラス (メイン プレーヤー UI) があります。問題は、UI が破棄された後でも音楽を再生したいため、サービスに依存する必要があることです。しかし、MediaPlayer を Service クラスに移動すると

  1. 曲の変更も表示する必要があるプレーヤー UI が表示されているときに、onCompletion(MediaPlayer arg0) を制御するにはどうすればよいですか? ただし、そのメソッドは Service メソッドに含める必要があります。
  2. Service メソッドで利用可能な曲を開始するために、UI の [再生] ボタンを作成するにはどうすればよいですか?

私を案内してください。UI と mediaplayer を保持する現在のプレーヤー クラスは次のとおりです。

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