am 6ab94608: Merge "CallManager: add setAudioMode()" into gingerbread

Merge commit '6ab94608750776bcaaee56696cfcfb16ce29db8a' into gingerbread-plus-aosp

* commit '6ab94608750776bcaaee56696cfcfb16ce29db8a':
  CallManager: add setAudioMode()
This commit is contained in:
Hung-ying Tyan
2010-08-18 13:37:50 -07:00
committed by Android Git Automerger

View File

@@ -19,15 +19,14 @@ package com.android.internal.telephony;
import com.android.internal.telephony.sip.SipPhone; import com.android.internal.telephony.sip.SipPhone;
import android.content.Context; import android.content.Context;
import android.media.AudioManager;
import android.os.AsyncResult; import android.os.AsyncResult;
import android.os.Handler; import android.os.Handler;
import android.os.Message; import android.os.Message;
import android.os.RegistrantList; import android.os.RegistrantList;
import android.util.Log;
import android.telephony.PhoneStateListener; import android.telephony.PhoneStateListener;
import android.telephony.ServiceState; import android.telephony.ServiceState;
import android.util.Log;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@@ -54,7 +53,7 @@ import java.util.List;
*/ */
public final class CallManager { public final class CallManager {
private static final String LOG_TAG ="GSM"; private static final String LOG_TAG ="Phone";
private static final boolean LOCAL_DEBUG = true; private static final boolean LOCAL_DEBUG = true;
private static final int EVENT_DISCONNECT = 100; private static final int EVENT_DISCONNECT = 100;
@@ -305,6 +304,32 @@ public final class CallManager {
} }
} }
public void setAudioMode() {
Context context = getContext();
if (context == null) return;
AudioManager audioManager = (AudioManager)
context.getSystemService(Context.AUDIO_SERVICE);
int mode = AudioManager.MODE_NORMAL;
switch (getState()) {
case RINGING:
mode = AudioManager.MODE_RINGTONE;
break;
case OFFHOOK:
Phone fgPhone = getFgPhone();
if (!(fgPhone instanceof SipPhone)) {
mode = AudioManager.MODE_IN_CALL;
}
break;
}
audioManager.setMode(mode);
}
private Context getContext() {
Phone defaultPhone = getDefaultPhone();
return ((defaultPhone == null) ? null : defaultPhone.getContext());
}
private void registerForPhoneStates(Phone phone) { private void registerForPhoneStates(Phone phone) {
phone.registerForPreciseCallStateChanged(mHandler, EVENT_PRECISE_CALL_STATE_CHANGED, null); phone.registerForPreciseCallStateChanged(mHandler, EVENT_PRECISE_CALL_STATE_CHANGED, null);
phone.registerForDisconnect(mHandler, EVENT_DISCONNECT, null); phone.registerForDisconnect(mHandler, EVENT_DISCONNECT, null);