Получить MediaPlayer и AudioManager для воспроизведения через динамик вместо динамика?

Эй, я пытаюсь воспроизвести файл R.raw через динамик вместо основного динамика телефона в своем приложении, но все, что я в него бросаю, не работает. С моим текущим кодом ... он просто воспроизводит очень легкие помехи через динамик, а не R.raw, который я хочу.

Вот мой код ниже, и я установил его в манифесте: <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>

 AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
            am.setSpeakerphoneOn(false);
        am.setMode(AudioManager.MODE_IN_CALL); 

        MediaPlayer tellSecret = MediaPlayer.create(this, R.raw.secret);
    tellSecret.setAudioStreamType(AudioManager.STREAM_VOICE_CALL);
    tellSecret.start();

Есть предположения?


person user961389    schedule 08.12.2011    source источник
comment
Вы заставили это работать? Я заметил, что вы не приняли данный ответ, и я хотел бы знать, что вы сделали, как я пытаюсь сделать, а на самом деле наоборот! - Я хочу, чтобы звук всегда использовал громкоговоритель :)   -  person noelicus    schedule 23.10.2013
comment
@noelicus: Вы наконец нашли решение своей проблемы? Я пытаюсь сделать то, что вы сделали, но не могу найти решение. Я задал огромное количество вопросов об обходных путях (stackoverflow.com/questions/20965530/), но я не могу его найти. Пожалуйста, дайте мне знать.   -  person SoulRayder    schedule 07.01.2014
comment
Привет, @Gautham, да, я ответил - теперь я ответил на твой вопрос по твоей ссылке. Удачи!   -  person noelicus    schedule 08.01.2014


Ответы (2)


Попробуйте установить для Audio Manager и Media Player режимы AudioManager.STREAM_MUSIC.

person BC2    schedule 30.07.2012
comment
Или просто убедитесь, что ваш AudioManager и MediaPlayer находятся в одном и том же режиме. - person BC2; 06.08.2012

не используйте «создать» API для медиаплеера, вместо этого используйте «setDataSource» и «подготовить» API отдельно. Также вызовите API «setAudioStreamType» в экземпляре медиаплеера с помощью STREAM_VOICE_CALL перед вызовом «setDataSource».

В конце концов, после запуска медиаплеера, вызовите setSpeakerphoneOn(false) в аудиоменеджере.

person Deepanshu Bhola    schedule 26.02.2015