Описание
В сборке 1.0.1.74 добавлена возможность ввода/вывода звука через Bluetooth гарнитуру при помощи функции Flashphoner.getAudioManager().setUseBluetoothSco():
Для переключения на гарнитуру
Flashphoner.getAudioManager().setUseBluetoothSco(true);
Для переключения на другое устройство вывода
Flashphoner.getAudioManager().setUseBluetoothSco(false);
Пример использования. Обратите внимание, что для переключения на голосовой динамик телефона или проводную гарнитуру необходимо запретить использование внешнего динамика и 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); } });