저는 PhoneStateListener를 사용하므로 사용자가 전화를 받거나 전화를 걸 때 즉시 스피커가 켜집니다.SpeakStateListener를 사용하여 스피커를 설정하는 방법
PhoneStateListener phoneStateListener = new PhoneStateListener()
{
@Override
public void onCallStateChanged(int state, String incomingNumber)
{
if (state == TelephonyManager.CALL_STATE_RINGING)
{
} else if(state == TelephonyManager.CALL_STATE_IDLE)
{
AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
audioManager.setSpeakerphoneOn(false);
} else if(state == TelephonyManager.CALL_STATE_OFFHOOK)
{
AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
audioManager.setSpeakerphoneOn(true);
}
super.onCallStateChanged(state, incomingNumber);
}
};
TelephonyManager mgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
if(mgr != null)
{
mgr.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
}
이것은 내가 사용하는 코드입니다. 그것은 jelly bean을 설치하기 전까지는 잘 동작했지만 이제는 사용자가 전화를받을 때만 스피커를 켜는 것으로 나타났습니다. 그러나 전화를 걸면 아무 것도하지 않습니다.
상대방에서 전화가 울릴 때 이상하게, 상태가 OFFHOOK가되어야합니다 (발신 전화를 할 때) – Timmetje