Soundcloud のようなアプリケーションは、どのようにして別のアプリの を停止しますMediaPlayer
か? たとえば、Google ミュージックで曲を再生していて、SoundCloud を開くと、Soundcloud の曲が始まるとすぐに Google ミュージックの曲の再生が停止します。明らかな何かが欠けているかもしれませんが、これがどのように達成されるのか常に疑問に思っていました。
ありがとう、ジャスティン
Soundcloud のようなアプリケーションは、どのようにして別のアプリの を停止しますMediaPlayer
か? たとえば、Google ミュージックで曲を再生していて、SoundCloud を開くと、Soundcloud の曲が始まるとすぐに Google ミュージックの曲の再生が停止します。明らかな何かが欠けているかもしれませんが、これがどのように達成されるのか常に疑問に思っていました。
ありがとう、ジャスティン
@TCAの答えに追加:
AudioManager は 1 つだけです。そのため、オーディオ フォーカスは、それを要求する各アプリケーションに1 つずつ割り当てられます。これは、別のアプリケーションがオーディオ フォーカスを要求した場合、アプリケーションはそれを失うことを意味します。オーディオ フォーカスを要求したときに登録した Audio Focus Change Listener ( TCA の answer の afChangeListener )の onAudioFocusChange ハンドラを通じて、オーディオ フォーカスの喪失が通知されます。
private OnAudioFocusChangeListener focusChangeListener =
new OnAudioFocusChangeListener() {
public void onAudioFocusChange(int focusChange) {
AudioManager am =(AudioManager)getSystemService(Context.AUDIO_SERVICE);
switch (focusChange) {
case (AudioManager.AUDIOFOCUS_LOSS_TRANSIENT) :
//Transient audio loss
break;
case (AudioManager.AUDIOFOCUS_LOSS) :
//Audio focus loss. Stop playback.
break;
case (AudioManager.AUDIOFOCUS_GAIN) :
//Audio focus gain. Start playback.
break;
default: break;
}
}
};