「Android/audio/他アプリの音を制御」の版間の差分
提供: 初心者エンジニアの簡易メモ
(ページの作成:「==音のフォーカスを制御== <pre> // 音フォーカスイベント AudioManager.OnAudioFocusChangeListener afChangeListener = new AudioManager.OnAudioFocusChangeL...」) |
|||
行35: | 行35: | ||
<pre> | <pre> | ||
音のフォーカスを外す | 音のフォーカスを外す | ||
− | < | + | <pre> |
AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE); | AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE); | ||
am.abandonAudioFocus(afChangeListener); // 音楽削除 | am.abandonAudioFocus(afChangeListener); // 音楽削除 |
2018年11月22日 (木) 18:32時点における版
音のフォーカスを制御
// 音フォーカスイベント AudioManager.OnAudioFocusChangeListener afChangeListener = new AudioManager.OnAudioFocusChangeListener() { @Override public void onAudioFocusChange(int focusChange) { Log.i(TAG, "onAudioFocusChange focusChange=" + focusChange); if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT) { Log.i(TAG, "onAudioFocusChange focusChange=AUDIOFOCUS_LOSS_TRANSIENT"); // Pause playback } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) { Log.i(TAG, "onAudioFocusChange focusChange=AUDIOFOCUS_GAIN"); // Resume playback } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) { Log.i(TAG, "onAudioFocusChange focusChange=AUDIOFOCUS_LOSS"); } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) { Log.i(TAG, "onAudioFocusChange focusChange=AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK"); } } };
音のフォーカスを取得
AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE); int result = am.requestAudioFocus(afChangeListener, AudioManager.STREAM_MUSIC, // AudioManager.AUDIOFOCUS_GAIN // 永続的なフォーカスを要求 // AudioManager.AUDIOFOCUS_GAIN_TRANSIENT // 一時的なフォーカスを取得 AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE // 一時的なフォーカスを取得(システム音のフォーカスも奪う) // AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK // バック音として小さな音にしてフォーカスを要求 ); if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) { Log.i(TAG, "AudioManager.AUDIOFOCUS_REQUEST_GRANTED"); } <pre> 音のフォーカスを外す <pre> AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE); am.abandonAudioFocus(afChangeListener); // 音楽削除 // AUDIOFOCUS_GAIN で要求してた場合は、バック音は流れないまま。 // AUDIOFOCUS_GAIN_TRANSIENT で要求してた場合は、バックで流してた音楽が元に戻る // AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE で要求してた場合は、バックで流してた音楽が元に戻る // AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK で要求してた場合は、バックで流してた音楽が元に戻る