Android公式開発ドキュメントTrainingシリーズ中国語版:オーディオ再生のオーディオ出力ハードウェアを管理する処理
原文住所:http://android.xsoftlab.net/training/managing-audio/audio-output.html
ユーザーがAndroidデバイスを使用してオーディオを楽しむ場合、代替案は複数あります.ほとんどのデバイスにはオーディオシステムが内蔵されています.スピーカとケーブルイヤホンのイヤホンジャック、Bluetooth接続、A 2 DPオーディオのサポートもたくさんあります.
使用するハードウェアのタイプを確認
APPの動作は、オーディオ出力のハードウェアタイプによって異なります.
AudioManagerを使用して、現在ルーティングされているデバイススピーカ、ケーブルイヤホン、または付属のBluetoothデバイスを問い合わせることができます.次のコードに示すように、
オーディオハードウェア出力の変動の処理
ヘッドホンがデバイスから取り外された場合、またはBluetoothデバイスが接続解除された場合、オーディオストリームは自動的に内蔵スピーカデバイスに再接続されます.大きな音量で音楽を聴くと、騒がしい体験ができます.
幸いなことに、Androidシステムはイベントが発生するとACTIONを放送します.AUDIO_BECOMING_NOISY意図.ベストプラクティスは、オーディオを再生するときに、この意図に対してBroadcastReceiverを登録して傍受することです.音楽プレーヤーの例では、ユーザは通常、音楽の再生を一時停止することを望んでいる.しかし、ゲームを行う場合は、音量を大幅に下げることができます.
ユーザーがAndroidデバイスを使用してオーディオを楽しむ場合、代替案は複数あります.ほとんどのデバイスにはオーディオシステムが内蔵されています.スピーカとケーブルイヤホンのイヤホンジャック、Bluetooth接続、A 2 DPオーディオのサポートもたくさんあります.
使用するハードウェアのタイプを確認
APPの動作は、オーディオ出力のハードウェアタイプによって異なります.
AudioManagerを使用して、現在ルーティングされているデバイススピーカ、ケーブルイヤホン、または付属のBluetoothデバイスを問い合わせることができます.次のコードに示すように、
if (isBluetoothA2dpOn()) {
// Adjust output for Bluetooth.
} else if (isSpeakerphoneOn()) {
// Adjust output for Speakerphone.
} else if (isWiredHeadsetOn()) {
// Adjust output for headsets
} else {
// If audio plays and noone can hear it, is it still playing?
}
オーディオハードウェア出力の変動の処理
ヘッドホンがデバイスから取り外された場合、またはBluetoothデバイスが接続解除された場合、オーディオストリームは自動的に内蔵スピーカデバイスに再接続されます.大きな音量で音楽を聴くと、騒がしい体験ができます.
幸いなことに、Androidシステムはイベントが発生するとACTIONを放送します.AUDIO_BECOMING_NOISY意図.ベストプラクティスは、オーディオを再生するときに、この意図に対してBroadcastReceiverを登録して傍受することです.音楽プレーヤーの例では、ユーザは通常、音楽の再生を一時停止することを望んでいる.しかし、ゲームを行う場合は、音量を大幅に下げることができます.
private class NoisyAudioStreamReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (AudioManager.ACTION_AUDIO_BECOMING_NOISY.equals(intent.getAction())) {
// Pause the playback
}
}
}
private IntentFilter intentFilter = new IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY);
private void startPlayback() {
registerReceiver(myNoisyAudioStreamReceiver(), intentFilter);
}
private void stopPlayback() {
unregisterReceiver(myNoisyAudioStreamReceiver);
}