facebook twitter hatena line email

「Android/audio/他アプリの音を制御」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
行33: 行33:
 
     Log.i(TAG, "AudioManager.AUDIOFOCUS_REQUEST_GRANTED");
 
     Log.i(TAG, "AudioManager.AUDIOFOCUS_REQUEST_GRANTED");
 
}
 
}
<pre>
+
</pre>
 
音のフォーカスを外す
 
音のフォーカスを外す
 
<pre>
 
<pre>

2018年11月22日 (木) 18:33時点における版

音のフォーカスを制御

// 音フォーカスイベント
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");
}

音のフォーカスを外す

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 で要求してた場合は、バックで流してた音楽が元に戻る