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();
}
}
}
這首歌的時候完成,應該開始播放下一首歌曲
但事實並非如此。然後,我播放切換到默認媒體播放器,切換回我的應用程序,它播放應用程序。 我想它與音頻焦點有關。如何確定它是否已經獲得了重點或者是否將重點放在完成。 謝謝!
完全相同。但我想實現audiofocus更改,以便在其他應用程序開始播放音樂或接聽電話的情況下,應用程序暫停播放音樂。 – StarWars 2013-04-25 07:38:45
然後調用mediaPlayer.pause();新活動開始時。 – 2013-04-25 07:42:49
嗨Gunjan,我在onCreate方法中實現了音頻焦點任務,並解決了這個問題。現在工作正常。 – StarWars 2013-04-25 07:52:28