Как включить динамик во время разговора
Я пытаюсь включить динамик во время звонка. Я пробовал этот код. Зарегистрируйте новый телефон слушателя. Но это не работает. Он показывает тост сообщение, но динамик по-прежнему молчит (по умолчанию только динамик).
@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
switch (state) {
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.i(LOG_TAG, "onCallStateChanged: CALL_STATE_OFFHOOK");
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Toast.makeText(mContext,"Call, time to turn speaker on",Toast.LENGTH_SHORT).show();
AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
audioManager.setSpeakerphoneOn(true);
break;
}
}
Конечно, я добавил permisions в мой AndroidManifest.xml.
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
РЕДАКТИРОВАТЬ
Это также не работает. Возвращает ложь (Тост сообщение ложно);
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.i(LOG_TAG, "onCallStateChanged: CALL_STATE_OFFHOOK");
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Toast.makeText(mContext,"Call, time to turn speaker on",Toast.LENGTH_SHORT).show();
audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
((Activity)mContext).setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);
audioManager.setMode(AudioManager.MODE_IN_CALL);
audioManager.setSpeakerphoneOn(true);
boolean check = audioManager.isSpeakerphoneOn();
Toast.makeText(mContext, "Speaker is on :" +String.valueOf(check),Toast.LENGTH_SHORT).show();
break;
2 ответа
Решение
У меня была такая же проблема из-за пользовательских rom. Я установил стоковый ROM и все отлично работает, вот мой код
audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_IN_CALL);
if (!audioManager.isSpeakerphoneOn())
audioManager.setSpeakerphoneOn(true);
audioManager.setMode(AudioManager.MODE_NORMAL);
Пожалуйста, попробуйте в вашем CALL_STATE_OFFHOOK
setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);
audioManager.setMode(AudioManager.MODE_IN_CALL);
audioManager.setSpeakerphoneOn(true);
audioManager.setMode(AudioManager.MODE_NORMAL);
boolean check = am.isSpeakerphoneOn();//Toast it or Log it