2

Soundcloud のようなアプリケーションは、どのようにして別のアプリの を停止しますMediaPlayerか? たとえば、Google ミュージックで曲を再生していて、SoundCloud を開くと、Soundcloud の曲が始まるとすぐに Google ミュージックの曲の再生が停止します。明らかな何かが欠けているかもしれませんが、これがどのように達成されるのか常に疑問に思っていました。

ありがとう、ジャスティン

4

2 に答える 2

1

@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;
}
}
};
于 2016-05-22T12:43:12.243 に答える