Использование Bluetooth гарнитуры¶
Описание¶
В сборке 1.0.1.74 добавлена возможность ввода/вывода звука через Bluetooth гарнитуру при помощи функции Flashphoner.getAudioManager().setUseBluetoothSco()
:
Для переключения на гарнитуру
Для переключения на другое устройство вывода
Пример использования. Обратите внимание, что для переключения на голосовой динамик телефона или проводную гарнитуру необходимо запретить использование внешнего динамика и Bluetooth гарнитуры.
mAudioOutput = (LabelledSpinner) findViewById(R.id.audio_output);
mAudioOutput.setOnItemChosenListener(new LabelledSpinner.OnItemChosenListener() {
@Override
public void onItemChosen(View labelledSpinner, AdapterView<?> adapterView, View itemView, int position, long id) {
String audioType = getResources().getStringArray(R.array.audio_output)[position];
switch (audioType) {
case "speakerphone": Flashphoner.getAudioManager().setUseSpeakerPhone(true); break;
case "phone":
Flashphoner.getAudioManager().setUseBluetoothSco(false);
Flashphoner.getAudioManager().setUseSpeakerPhone(false);
break;
case "bluetooth": Flashphoner.getAudioManager().setUseBluetoothSco(true); break;
}
}
@Override
public void onNothingChosen(View labelledSpinner, AdapterView<?> adapterView) {
}
});
Проигрывание потока и локального медиафайла в гарнитуру¶
Для того, чтобы одновременно проигрывать в гарнитуру и поток с сервера,и локальный медиафайл с устройства, необходимо установить атрибут AudioAttributes.USAGE_VOICE_COMMUNICATION
и запросить аудио фокус для медиаплеера, например
/**
* Audio focus example
*/
MediaPlayer music = MediaPlayer.create(getBaseContext(), R.raw.sound1);
music.setAudioAttributes(
new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION)
.build());
music.start();
AudioManager.OnAudioFocusChangeListener audioFocusChangeListener = new AudioManager.OnAudioFocusChangeListener() {
@Override
public void onAudioFocusChange(int focusChange) {
Log.d("AudioFocus,", "onAudioFocusChange="+focusChange);
music.setVolume(1, 1);
}
};
// Request audio focus for playback
int requestResult = Flashphoner.getAudioManager().getAudioManager().requestAudioFocus(audioFocusChangeListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
Log.d("AudioFocus,", "requestResult="+requestResult);
// Abandon audio focus when playback complete
music.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
Flashphoner.getAudioManager().getAudioManager().abandonAudioFocus(audioFocusChangeListener);
}
});