0

我是Android應用程序開發新手,它是我的第一個應用程序。 我建立一個音樂播放器,我有以下方法檢查Android應用程序是否具有音頻焦點並繼續播放下一首歌曲

public void playSong(int songIndex){ 
    // Play song 

     mContext = getApplicationContext(); 
     AudioManager am = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE); 

     OnAudioFocusChangeListener afChangeListener = new OnAudioFocusChangeListener() { 
      public void onAudioFocusChange(int focusChange) { 
       if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT){ 
        mp.pause(); 
       } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) { 
        mp.start(); 
       } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) { 
        mp.stop(); 
       } 
      } 
     }; 

     // Request audio focus for playback 
     int result = am.requestAudioFocus(afChangeListener, 
             // Use the music stream. 
             AudioManager.STREAM_MUSIC, 
             // Request permanent focus. 
             AudioManager.AUDIOFOCUS_GAIN); 

     if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) { 
      // Start playback. 
      try { 
       mp.reset(); 
       mp.setDataSource(songsList.get(songIndex).get("songPath")); 
       mp.prepare(); 
       mp.start(); 
       String songTitle = songsList.get(songIndex).get("songTitle"); 
       songTitleLabel.setText(songTitle); 

       // Changing Button Image to pause image 
       btnPlay.setImageResource(R.drawable.btn_pause); 

       // set Progress bar values 
       songProgressBar.setProgress(0); 
       songProgressBar.setMax(100); 

       // Updating progress bar 
       updateProgressBar();  
      } 
      catch (IllegalArgumentException e) { 
       e.printStackTrace(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 

} 
這首歌的時候完成,應該開始播放下一首歌曲

但事實並非如此。然後,我播放切換到默認媒體播放器,切換回我的應用程序,它播放應用程序。 我想它與音頻焦點有關。如何確定它是否已經獲得了重點或者是否將重點放在完成。 謝謝!

回答

0

你有沒有試過這種

   @Override 
    public void onCompletion(MediaPlayer arg0) { 

     // check for repeat is ON or OFF 
     if(isRepeat){ 
      // repeat is on play same song again 
      //playSong(currentSongIndex); 
      songPlayOnThread(currentSongIndex); 
     } else if(isShuffle){ 
      // shuffle is on - play a random song 
      Random rand = new Random(); 
      currentSongIndex = rand.nextInt((songsList.size() - 1) - 0 + 1) + 0; 
      //playSong(currentSongIndex); 
      playsong(currentSongIndex); 
     } else{ 
      // no repeat or shuffle ON - play next song 
      if(currentSongIndex < (songsList.size() - 1)){ 
       String result=playSong(currentSongIndex + 1); 
       if(result!="success") 
       { 
       // mp.stop(); 
       // currentSongIndex=0; 
       } 
       currentSongIndex = currentSongIndex + 1; 
      }else{ 
       // play first song 
      // playSong(0); 
       currentSongIndex = 0; 
      } 
     } 
    } 
+0

完全相同。但我想實現audiofocus更改,以便在其他應用程序開始播放音樂或接聽電話的情況下,應用程序暫停播放音樂。 – StarWars 2013-04-25 07:38:45

+0

然後調用mediaPlayer.pause();新活動開始時。 – 2013-04-25 07:42:49

+1

嗨Gunjan,我在onCreate方法中實現了音頻焦點任務,並解決了這個問題。現在工作正常。 – StarWars 2013-04-25 07:52:28

相關問題