2010-04-18 16 views
9

Estoy tratando de configurar el altavoz en una llamada programáticamente utilizando audiomanager.setSpeakerphoneOn(true) en un servicio, pero parece que no está funcionando y no sé por qué. ¿Debo hacer algo más?Android configurar el altavoz del teléfono mediante programación

Gracias

+0

se hizo una pregunta similar y respondió [aquí] [1] [1]: http://stackoverflow.com/questions/8617381/turn-on-speakerphone-whenever-an-outgoing- call-is-made/21328490 # 21328490 –

Respuesta

13

comprobar si su archivo de manifiesto tiene los permisos tienen que hacer esta operación.

creo que este es el permiso que necesita MODIFY_AUDIO_SETTINGS

+0

¡Funciona! ¡Fue bastante fácil! Gracias – Matroska

4

En Android 4.1 y más cuando se hace una llamada, el teléfono se apaga automáticamente el altavoz del teléfono. Así que lo que necesita hacer es añadir el altavoz en el receptor que escucha la llamada que se hizo cuando el estado es "descolgado" e incluso poner un segundo 0,5 retardada para activar el altavoz de esa manera:

final Handler mHandler = new Handler(); 
mHandler.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
    audioManager.setMode(AudioManager.MODE_IN_CALL); 
    audioManager.setSpeakerphoneOn(true); 
    MainActivity.shouldTurnSpeakerOn = false; 
    MainActivity.shouldTurnSpeakerOff = true; 
    Log.d("incoming_call","speaker_on");      
    } 
}, 500); 

Recuerde agregar esto al detector de estado del teléfono. Y para salir del altavoz cuando el estado es IDLE (necesario para versiones anteriores).

Buena suerte.

+0

No sé el motivo, pero se requiere este retraso de 500 ms. ¡Gracias! – Ishaan

Cuestiones relacionadas