Page tree
Skip to end of metadata
Go to start of metadata

Описание

В сборке 1.1.0.19 добавлена возможность ввода/вывода звука через Bluetooth гарнитуру при помощи функции Flashphoner.getAudioManager().setUseBluetoothSco():

Для переключения на гарнитуру

Flashphoner.getAudioManager().setUseBluetoothSco(true);

Для переключения на другое устройство вывода

Flashphoner.getAudioManager().setUseBluetoothSco(false);

Пример использования. Обратите внимание, что для переключения на голосовой динамик телефона или проводную гарнитуру необходимо запретить использование внешнего динамика и Bluetooth гарнитуры.

code

        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);
                                                            }
                                                        });
  • No labels