Loading telephony/java/com/android/internal/telephony/CallManager.java +294 −54 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ package com.android.internal.telephony; import android.content.Context; import android.os.AsyncResult; import android.os.Handler; Loading @@ -25,7 +23,6 @@ import android.os.Message; import android.os.RegistrantList; import android.telephony.PhoneStateListener; import java.util.ArrayList; import java.util.List; Loading @@ -49,8 +46,23 @@ import java.util.List; public final class CallManager { private static final int EVENT_DISCONNECT = 100; private static final int EVENT_CALL_STATE_CHANGED = 101; private static final int EVENT_PRECISE_CALL_STATE_CHANGED = 101; private static final int EVENT_NEW_RINGING_CONNECTION = 102; private static final int EVENT_UNKNOWN_CONNECTION = 103; private static final int EVENT_INCOMING_RING = 104; private static final int EVENT_RINGBACK_TONE = 105; private static final int EVENT_IN_CALL_VOICE_PRIVACY_ON = 106; private static final int EVENT_IN_CALL_VOICE_PRIVACY_OFF = 107; private static final int EVENT_CALL_WAITING = 108; private static final int EVENT_DISPLAY_INFO = 109; private static final int EVENT_SIGNAL_INFO = 110; private static final int EVENT_CDMA_OTA_STATUS_CHANGE = 111; private static final int EVENT_RESEND_INCALL_MUTE = 112; private static final int EVENT_MMI_INITIATE = 113; private static final int EVENT_MMI_COMPLETE = 114; private static final int EVENT_ECM_TIMER_RESET = 115; private static final int EVENT_SUBSCRIPTION_INFO_READY = 116; private static final int EVENT_SUPP_SERVICE_FAILED = 117; // Singleton instance private static final CallManager INSTANCE = new CallManager(); Loading Loading @@ -89,13 +101,46 @@ public final class CallManager { protected final RegistrantList mServiceStateRegistrants = new RegistrantList(); protected final RegistrantList mMmiRegistrants = new RegistrantList(); protected final RegistrantList mUnknownConnectionRegistrants = new RegistrantList(); protected final RegistrantList mRingbackToneRegistrants = new RegistrantList(); protected final RegistrantList mInCallVoicePrivacyOnRegistrants = new RegistrantList(); protected final RegistrantList mInCallVoicePrivacyOffRegistrants = new RegistrantList(); protected final RegistrantList mCallWaitingRegistrants = new RegistrantList(); protected final RegistrantList mDisplayInfoRegistrants = new RegistrantList(); protected final RegistrantList mSignalInfoRegistrants = new RegistrantList(); protected final RegistrantList mCdmaOtaStatusChangeRegistrants = new RegistrantList(); protected final RegistrantList mResendIncallMuteRegistrants = new RegistrantList(); protected final RegistrantList mMmiInitiateRegistrants = new RegistrantList(); protected final RegistrantList mMmiCompleteRegistrants = new RegistrantList(); protected final RegistrantList mMmiRegistrants protected final RegistrantList mEcmTimerResetRegistrants = new RegistrantList(); protected final RegistrantList mUnknownConnectionRegistrants protected final RegistrantList mSubscriptionInfoReadyRegistrants = new RegistrantList(); protected final RegistrantList mSuppServiceFailedRegistrants Loading @@ -117,10 +162,29 @@ public final class CallManager { return INSTANCE; } /** * Get current coarse-grained voice call state. * If the Call Manager has an active call and call waiting occurs, * then the phone state is RINGING not OFFHOOK * */ public Phone.State getState() { Phone.State s = Phone.State.IDLE; for(Phone phone : mPhones) { if (phone.getState() == Phone.State.RINGING) { return Phone.State.RINGING; } else if (phone.getState() == Phone.State.OFFHOOK) { s = Phone.State.OFFHOOK; } } return s; } /** * Register phone to CallManager * @param phone * @return * @return true if register successfully */ public boolean registerPhone(Phone phone) { if (phone != null && !mPhones.contains(phone)) { Loading Loading @@ -159,13 +223,45 @@ public final class CallManager { } private void registerForPhoneStates(Phone phone) { phone.registerForPreciseCallStateChanged(mHandler, EVENT_CALL_STATE_CHANGED, null); phone.registerForPreciseCallStateChanged(mHandler, EVENT_PRECISE_CALL_STATE_CHANGED, null); phone.registerForDisconnect(mHandler, EVENT_DISCONNECT, null); phone.registerForNewRingingConnection(mHandler, EVENT_NEW_RINGING_CONNECTION, null); phone.registerForUnknownConnection(mHandler, EVENT_UNKNOWN_CONNECTION, null); phone.registerForIncomingRing(mHandler, EVENT_INCOMING_RING, null); phone.registerForRingbackTone(mHandler, EVENT_RINGBACK_TONE, null); phone.registerForInCallVoicePrivacyOn(mHandler, EVENT_IN_CALL_VOICE_PRIVACY_ON, null); phone.registerForInCallVoicePrivacyOff(mHandler, EVENT_IN_CALL_VOICE_PRIVACY_OFF, null); phone.registerForCallWaiting(mHandler, EVENT_CALL_WAITING, null); phone.registerForDisplayInfo(mHandler, EVENT_DISPLAY_INFO, null); phone.registerForSignalInfo(mHandler, EVENT_SIGNAL_INFO, null); phone.registerForCdmaOtaStatusChange(mHandler, EVENT_CDMA_OTA_STATUS_CHANGE, null); phone.registerForResendIncallMute(mHandler, EVENT_RESEND_INCALL_MUTE, null); phone.registerForMmiInitiate(mHandler, EVENT_MMI_INITIATE, null); phone.registerForMmiComplete(mHandler, EVENT_MMI_COMPLETE, null); phone.registerForEcmTimerReset(mHandler, EVENT_ECM_TIMER_RESET, null); phone.registerForSubscriptionInfoReady(mHandler, EVENT_SUBSCRIPTION_INFO_READY, null); phone.registerForSuppServiceFailed(mHandler, EVENT_SUPP_SERVICE_FAILED, null); } private void unregisterForPhoneStates(Phone phone) { phone.unregisterForPreciseCallStateChanged(mHandler); phone.unregisterForDisconnect(mHandler); phone.unregisterForNewRingingConnection(mHandler); phone.unregisterForUnknownConnection(mHandler); phone.unregisterForIncomingRing(mHandler); phone.unregisterForRingbackTone(mHandler); phone.unregisterForInCallVoicePrivacyOn(mHandler); phone.unregisterForInCallVoicePrivacyOff(mHandler); phone.unregisterForCallWaiting(mHandler); phone.unregisterForDisplayInfo(mHandler); phone.unregisterForSignalInfo(mHandler); phone.unregisterForCdmaOtaStatusChange(mHandler); phone.unregisterForResendIncallMute(mHandler); phone.unregisterForMmiInitiate(mHandler); phone.unregisterForMmiComplete(mHandler); phone.unregisterForEcmTimerReset(mHandler); phone.unregisterForSubscriptionInfoReady(mHandler); phone.unregisterForSuppServiceFailed(mHandler); } /** Loading Loading @@ -523,12 +619,16 @@ public final class CallManager { * Notifies when a previously untracked non-ringing/waiting connection has appeared. * This is likely due to some other entity (eg, SIM card application) initiating a call. */ public void registerForUnknownConnection(Handler h, int what, Object obj){} public void registerForUnknownConnection(Handler h, int what, Object obj){ mUnknownConnectionRegistrants.addUnique(h, what, obj); } /** * Unregisters for unknown connection notifications. */ public void unregisterForUnknownConnection(Handler h){} public void unregisterForUnknownConnection(Handler h){ mUnknownConnectionRegistrants.remove(h); } /** Loading @@ -543,14 +643,18 @@ public final class CallManager { * If Connection.isRinging() is true, then * Connection.getCall() == Phone.getRingingCall() */ public void registerForNewRingingConnection(Handler h, int what, Object obj){} public void registerForNewRingingConnection(Handler h, int what, Object obj){ mNewRingingConnectionRegistrants.addUnique(h, what, obj); } /** * Unregisters for new ringing connection notification. * Extraneous calls are tolerated silently */ public void unregisterForNewRingingConnection(Handler h){} public void unregisterForNewRingingConnection(Handler h){ mNewRingingConnectionRegistrants.remove(h); } /** * Notifies when an incoming call rings.<p> Loading @@ -560,14 +664,18 @@ public final class CallManager { * AsyncResult.userObj = obj * AsyncResult.result = a Connection. <p> */ public void registerForIncomingRing(Handler h, int what, Object obj){} public void registerForIncomingRing(Handler h, int what, Object obj){ mIncomingRingRegistrants.addUnique(h, what, obj); } /** * Unregisters for ring notification. * Extraneous calls are tolerated silently */ public void unregisterForIncomingRing(Handler h){} public void unregisterForIncomingRing(Handler h){ mIncomingRingRegistrants.remove(h); } /** * Notifies when out-band ringback tone is needed.<p> Loading @@ -578,26 +686,32 @@ public final class CallManager { * AsyncResult.result = boolean, true to start play ringback tone * and false to stop. <p> */ public void registerForRingbackTone(Handler h, int what, Object obj){} public void registerForRingbackTone(Handler h, int what, Object obj){ mRingbackToneRegistrants.addUnique(h, what, obj); } /** * Unregisters for ringback tone notification. */ public void unregisterForRingbackTone(Handler h){} public void unregisterForRingbackTone(Handler h){ mRingbackToneRegistrants.remove(h); } /** * Registers the handler to reset the uplink mute state to get * uplink audio. */ public void registerForResendIncallMute(Handler h, int what, Object obj){} public void registerForResendIncallMute(Handler h, int what, Object obj){ mResendIncallMuteRegistrants.addUnique(h, what, obj); } /** * Unregisters for resend incall mute notifications. */ public void unregisterForResendIncallMute(Handler h){} public void unregisterForResendIncallMute(Handler h){ mResendIncallMuteRegistrants.remove(h); } /** * Register for notifications of initiation of a new MMI code request. Loading @@ -610,13 +724,17 @@ public final class CallManager { * * <code>obj.result</code> will be an "MmiCode" object. */ public void registerForMmiInitiate(Handler h, int what, Object obj){} public void registerForMmiInitiate(Handler h, int what, Object obj){ mMmiInitiateRegistrants.addUnique(h, what, obj); } /** * Unregisters for new MMI initiate notification. * Extraneous calls are tolerated silently */ public void unregisterForMmiInitiate(Handler h){} public void unregisterForMmiInitiate(Handler h){ mMmiInitiateRegistrants.remove(h); } /** * Register for notifications that an MMI request has completed Loading @@ -626,13 +744,17 @@ public final class CallManager { * <code>Message.obj</code> will contain an AsyncResult. * <code>obj.result</code> will be an "MmiCode" object */ public void registerForMmiComplete(Handler h, int what, Object obj){} public void registerForMmiComplete(Handler h, int what, Object obj){ mMmiCompleteRegistrants.addUnique(h, what, obj); } /** * Unregisters for MMI complete notification. * Extraneous calls are tolerated silently */ public void unregisterForMmiComplete(Handler h){} public void unregisterForMmiComplete(Handler h){ mMmiCompleteRegistrants.remove(h); } /** * Registration point for Ecm timer reset Loading @@ -640,15 +762,17 @@ public final class CallManager { * @param what user-defined message code * @param obj placed in Message.obj */ public void registerForEcmTimerReset(Handler h, int what, Object obj){} public void registerForEcmTimerReset(Handler h, int what, Object obj){ mEcmTimerResetRegistrants.addUnique(h, what, obj); } /** * Unregister for notification for Ecm timer reset * @param h Handler to be removed from the registrant list. */ public void unregisterForEcmTimerReset(Handler h){} public void unregisterForEcmTimerReset(Handler h){ mEcmTimerResetRegistrants.remove(h); } /** * Register for ServiceState changed. Loading @@ -664,73 +788,133 @@ public final class CallManager { public void unregisterForServiceStateChanged(Handler h){} /** * Register for Supplementary Service notifications from the network. * Register for notifications when a supplementary service attempt fails. * Message.obj will contain an AsyncResult. * AsyncResult.result will be a SuppServiceNotification instance. * * @param h Handler that receives the notification message. * @param what User-defined message code. * @param obj User object. */ public void registerForSuppServiceNotification(Handler h, int what, Object obj){} public void registerForSuppServiceFailed(Handler h, int what, Object obj){ mSuppServiceFailedRegistrants.addUnique(h, what, obj); } /** * Unregisters for Supplementary Service notifications. * Unregister for notifications when a supplementary service attempt fails. * Extraneous calls are tolerated silently * * @param h Handler to be removed from the registrant list. */ public void unregisterForSuppServiceNotification(Handler h){} public void unregisterForSuppServiceFailed(Handler h){ mSuppServiceFailedRegistrants.remove(h); } /** * Register for notifications when a supplementary service attempt fails. * Message.obj will contain an AsyncResult. * Register for notifications when a sInCall VoicePrivacy is enabled * * @param h Handler that receives the notification message. * @param what User-defined message code. * @param obj User object. */ public void registerForSuppServiceFailed(Handler h, int what, Object obj){} public void registerForInCallVoicePrivacyOn(Handler h, int what, Object obj){ mInCallVoicePrivacyOnRegistrants.addUnique(h, what, obj); } /** * Unregister for notifications when a supplementary service attempt fails. * Extraneous calls are tolerated silently * Unregister for notifications when a sInCall VoicePrivacy is enabled * * @param h Handler to be removed from the registrant list. */ public void unregisterForSuppServiceFailed(Handler h){} public void unregisterForInCallVoicePrivacyOn(Handler h){ mInCallVoicePrivacyOnRegistrants.remove(h); } /** * Register for notifications when a sInCall VoicePrivacy is enabled * Register for notifications when a sInCall VoicePrivacy is disabled * * @param h Handler that receives the notification message. * @param what User-defined message code. * @param obj User object. */ public void registerForInCallVoicePrivacyOn(Handler h, int what, Object obj){} public void registerForInCallVoicePrivacyOff(Handler h, int what, Object obj){ mInCallVoicePrivacyOffRegistrants.addUnique(h, what, obj); } /** * Unegister for notifications when a sInCall VoicePrivacy is enabled * Unregister for notifications when a sInCall VoicePrivacy is disabled * * @param h Handler to be removed from the registrant list. */ public void unregisterForInCallVoicePrivacyOn(Handler h){} public void unregisterForInCallVoicePrivacyOff(Handler h){ mInCallVoicePrivacyOffRegistrants.remove(h); } /** * Register for notifications when a sInCall VoicePrivacy is disabled * Register for notifications when CDMA call waiting comes * * @param h Handler that receives the notification message. * @param what User-defined message code. * @param obj User object. */ public void registerForCallWaiting(Handler h, int what, Object obj){ mCallWaitingRegistrants.addUnique(h, what, obj); } /** * Unregister for notifications when CDMA Call waiting comes * @param h Handler to be removed from the registrant list. */ public void unregisterForCallWaiting(Handler h){ mCallWaitingRegistrants.remove(h); } /** * Register for signal information notifications from the network. * Message.obj will contain an AsyncResult. * AsyncResult.result will be a SuppServiceNotification instance. * * @param h Handler that receives the notification message. * @param what User-defined message code. * @param obj User object. */ public void registerForSignalInfo(Handler h, int what, Object obj){ mSignalInfoRegistrants.addUnique(h, what, obj); } /** * Unregisters for signal information notifications. * Extraneous calls are tolerated silently * * @param h Handler to be removed from the registrant list. */ public void unregisterForSignalInfo(Handler h){ mSignalInfoRegistrants.remove(h); } /** * Register for display information notifications from the network. * Message.obj will contain an AsyncResult. * AsyncResult.result will be a SuppServiceNotification instance. * * @param h Handler that receives the notification message. * @param what User-defined message code. * @param obj User object. */ public void registerForInCallVoicePrivacyOff(Handler h, int what, Object obj){} public void registerForDisplayInfo(Handler h, int what, Object obj){ mDisplayInfoRegistrants.addUnique(h, what, obj); } /** * Unegister for notifications when a sInCall VoicePrivacy is disabled * Unregisters for display information notifications. * Extraneous calls are tolerated silently * * @param h Handler to be removed from the registrant list. */ public void unregisterForInCallVoicePrivacyOff(Handler h){} public void unregisterForDisplayInfo(Handler h) { mDisplayInfoRegistrants.remove(h); } /** * Register for notifications when CDMA OTA Provision status change Loading @@ -739,13 +923,17 @@ public final class CallManager { * @param what User-defined message code. * @param obj User object. */ public void registerForCdmaOtaStatusChange(Handler h, int what, Object obj){} public void registerForCdmaOtaStatusChange(Handler h, int what, Object obj){ mCdmaOtaStatusChangeRegistrants.addUnique(h, what, obj); } /** * Unegister for notifications when CDMA OTA Provision status change * Unregister for notifications when CDMA OTA Provision status change * @param h Handler to be removed from the registrant list. */ public void unregisterForCdmaOtaStatusChange(Handler h){} public void unregisterForCdmaOtaStatusChange(Handler h){ mCdmaOtaStatusChangeRegistrants.remove(h); } /** * Registration point for subscription info ready Loading @@ -753,13 +941,17 @@ public final class CallManager { * @param what what code of message when delivered * @param obj placed in Message.obj */ public void registerForSubscriptionInfoReady(Handler h, int what, Object obj){} public void registerForSubscriptionInfoReady(Handler h, int what, Object obj){ mSubscriptionInfoReadyRegistrants.addUnique(h, what, obj); } /** * Unregister for notifications for subscription info * @param h Handler to be removed from the registrant list. */ public void unregisterForSubscriptionInfoReady(Handler h){} public void unregisterForSubscriptionInfoReady(Handler h){ mSubscriptionInfoReadyRegistrants.remove(h); } /* APIs to access foregroudCalls, backgroudCalls, and ringingCalls * 1. APIs to access list of calls Loading Loading @@ -974,9 +1166,57 @@ public final class CallManager { case EVENT_DISCONNECT: mDisconnectRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_CALL_STATE_CHANGED: case EVENT_PRECISE_CALL_STATE_CHANGED: mPreciseCallStateRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_NEW_RINGING_CONNECTION: mNewRingingConnectionRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_UNKNOWN_CONNECTION: mUnknownConnectionRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_INCOMING_RING: mIncomingRingRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_RINGBACK_TONE: mRingbackToneRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_IN_CALL_VOICE_PRIVACY_ON: mInCallVoicePrivacyOnRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_IN_CALL_VOICE_PRIVACY_OFF: mInCallVoicePrivacyOffRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_CALL_WAITING: mCallWaitingRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_DISPLAY_INFO: mDisplayInfoRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_SIGNAL_INFO: mSignalInfoRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_CDMA_OTA_STATUS_CHANGE: mCdmaOtaStatusChangeRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_RESEND_INCALL_MUTE: mResendIncallMuteRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_MMI_INITIATE: mMmiInitiateRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_MMI_COMPLETE: mMmiCompleteRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_ECM_TIMER_RESET: mEcmTimerResetRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_SUBSCRIPTION_INFO_READY: mSubscriptionInfoReadyRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_SUPP_SERVICE_FAILED: mSuppServiceFailedRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; } } }; Loading telephony/java/com/android/internal/telephony/cdma/CdmaCall.java +1 −2 Original line number Diff line number Diff line Loading @@ -75,8 +75,7 @@ public final class CdmaCall extends Call { public Phone getPhone() { //TODO, see GsmCall return null; return owner.phone; } public boolean isMultiparty() { Loading telephony/java/com/android/internal/telephony/gsm/GsmCall.java +1 −2 Original line number Diff line number Diff line Loading @@ -70,8 +70,7 @@ class GsmCall extends Call { public Phone getPhone() { //TODO return null; return owner.phone; } public boolean Loading Loading
telephony/java/com/android/internal/telephony/CallManager.java +294 −54 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ package com.android.internal.telephony; import android.content.Context; import android.os.AsyncResult; import android.os.Handler; Loading @@ -25,7 +23,6 @@ import android.os.Message; import android.os.RegistrantList; import android.telephony.PhoneStateListener; import java.util.ArrayList; import java.util.List; Loading @@ -49,8 +46,23 @@ import java.util.List; public final class CallManager { private static final int EVENT_DISCONNECT = 100; private static final int EVENT_CALL_STATE_CHANGED = 101; private static final int EVENT_PRECISE_CALL_STATE_CHANGED = 101; private static final int EVENT_NEW_RINGING_CONNECTION = 102; private static final int EVENT_UNKNOWN_CONNECTION = 103; private static final int EVENT_INCOMING_RING = 104; private static final int EVENT_RINGBACK_TONE = 105; private static final int EVENT_IN_CALL_VOICE_PRIVACY_ON = 106; private static final int EVENT_IN_CALL_VOICE_PRIVACY_OFF = 107; private static final int EVENT_CALL_WAITING = 108; private static final int EVENT_DISPLAY_INFO = 109; private static final int EVENT_SIGNAL_INFO = 110; private static final int EVENT_CDMA_OTA_STATUS_CHANGE = 111; private static final int EVENT_RESEND_INCALL_MUTE = 112; private static final int EVENT_MMI_INITIATE = 113; private static final int EVENT_MMI_COMPLETE = 114; private static final int EVENT_ECM_TIMER_RESET = 115; private static final int EVENT_SUBSCRIPTION_INFO_READY = 116; private static final int EVENT_SUPP_SERVICE_FAILED = 117; // Singleton instance private static final CallManager INSTANCE = new CallManager(); Loading Loading @@ -89,13 +101,46 @@ public final class CallManager { protected final RegistrantList mServiceStateRegistrants = new RegistrantList(); protected final RegistrantList mMmiRegistrants = new RegistrantList(); protected final RegistrantList mUnknownConnectionRegistrants = new RegistrantList(); protected final RegistrantList mRingbackToneRegistrants = new RegistrantList(); protected final RegistrantList mInCallVoicePrivacyOnRegistrants = new RegistrantList(); protected final RegistrantList mInCallVoicePrivacyOffRegistrants = new RegistrantList(); protected final RegistrantList mCallWaitingRegistrants = new RegistrantList(); protected final RegistrantList mDisplayInfoRegistrants = new RegistrantList(); protected final RegistrantList mSignalInfoRegistrants = new RegistrantList(); protected final RegistrantList mCdmaOtaStatusChangeRegistrants = new RegistrantList(); protected final RegistrantList mResendIncallMuteRegistrants = new RegistrantList(); protected final RegistrantList mMmiInitiateRegistrants = new RegistrantList(); protected final RegistrantList mMmiCompleteRegistrants = new RegistrantList(); protected final RegistrantList mMmiRegistrants protected final RegistrantList mEcmTimerResetRegistrants = new RegistrantList(); protected final RegistrantList mUnknownConnectionRegistrants protected final RegistrantList mSubscriptionInfoReadyRegistrants = new RegistrantList(); protected final RegistrantList mSuppServiceFailedRegistrants Loading @@ -117,10 +162,29 @@ public final class CallManager { return INSTANCE; } /** * Get current coarse-grained voice call state. * If the Call Manager has an active call and call waiting occurs, * then the phone state is RINGING not OFFHOOK * */ public Phone.State getState() { Phone.State s = Phone.State.IDLE; for(Phone phone : mPhones) { if (phone.getState() == Phone.State.RINGING) { return Phone.State.RINGING; } else if (phone.getState() == Phone.State.OFFHOOK) { s = Phone.State.OFFHOOK; } } return s; } /** * Register phone to CallManager * @param phone * @return * @return true if register successfully */ public boolean registerPhone(Phone phone) { if (phone != null && !mPhones.contains(phone)) { Loading Loading @@ -159,13 +223,45 @@ public final class CallManager { } private void registerForPhoneStates(Phone phone) { phone.registerForPreciseCallStateChanged(mHandler, EVENT_CALL_STATE_CHANGED, null); phone.registerForPreciseCallStateChanged(mHandler, EVENT_PRECISE_CALL_STATE_CHANGED, null); phone.registerForDisconnect(mHandler, EVENT_DISCONNECT, null); phone.registerForNewRingingConnection(mHandler, EVENT_NEW_RINGING_CONNECTION, null); phone.registerForUnknownConnection(mHandler, EVENT_UNKNOWN_CONNECTION, null); phone.registerForIncomingRing(mHandler, EVENT_INCOMING_RING, null); phone.registerForRingbackTone(mHandler, EVENT_RINGBACK_TONE, null); phone.registerForInCallVoicePrivacyOn(mHandler, EVENT_IN_CALL_VOICE_PRIVACY_ON, null); phone.registerForInCallVoicePrivacyOff(mHandler, EVENT_IN_CALL_VOICE_PRIVACY_OFF, null); phone.registerForCallWaiting(mHandler, EVENT_CALL_WAITING, null); phone.registerForDisplayInfo(mHandler, EVENT_DISPLAY_INFO, null); phone.registerForSignalInfo(mHandler, EVENT_SIGNAL_INFO, null); phone.registerForCdmaOtaStatusChange(mHandler, EVENT_CDMA_OTA_STATUS_CHANGE, null); phone.registerForResendIncallMute(mHandler, EVENT_RESEND_INCALL_MUTE, null); phone.registerForMmiInitiate(mHandler, EVENT_MMI_INITIATE, null); phone.registerForMmiComplete(mHandler, EVENT_MMI_COMPLETE, null); phone.registerForEcmTimerReset(mHandler, EVENT_ECM_TIMER_RESET, null); phone.registerForSubscriptionInfoReady(mHandler, EVENT_SUBSCRIPTION_INFO_READY, null); phone.registerForSuppServiceFailed(mHandler, EVENT_SUPP_SERVICE_FAILED, null); } private void unregisterForPhoneStates(Phone phone) { phone.unregisterForPreciseCallStateChanged(mHandler); phone.unregisterForDisconnect(mHandler); phone.unregisterForNewRingingConnection(mHandler); phone.unregisterForUnknownConnection(mHandler); phone.unregisterForIncomingRing(mHandler); phone.unregisterForRingbackTone(mHandler); phone.unregisterForInCallVoicePrivacyOn(mHandler); phone.unregisterForInCallVoicePrivacyOff(mHandler); phone.unregisterForCallWaiting(mHandler); phone.unregisterForDisplayInfo(mHandler); phone.unregisterForSignalInfo(mHandler); phone.unregisterForCdmaOtaStatusChange(mHandler); phone.unregisterForResendIncallMute(mHandler); phone.unregisterForMmiInitiate(mHandler); phone.unregisterForMmiComplete(mHandler); phone.unregisterForEcmTimerReset(mHandler); phone.unregisterForSubscriptionInfoReady(mHandler); phone.unregisterForSuppServiceFailed(mHandler); } /** Loading Loading @@ -523,12 +619,16 @@ public final class CallManager { * Notifies when a previously untracked non-ringing/waiting connection has appeared. * This is likely due to some other entity (eg, SIM card application) initiating a call. */ public void registerForUnknownConnection(Handler h, int what, Object obj){} public void registerForUnknownConnection(Handler h, int what, Object obj){ mUnknownConnectionRegistrants.addUnique(h, what, obj); } /** * Unregisters for unknown connection notifications. */ public void unregisterForUnknownConnection(Handler h){} public void unregisterForUnknownConnection(Handler h){ mUnknownConnectionRegistrants.remove(h); } /** Loading @@ -543,14 +643,18 @@ public final class CallManager { * If Connection.isRinging() is true, then * Connection.getCall() == Phone.getRingingCall() */ public void registerForNewRingingConnection(Handler h, int what, Object obj){} public void registerForNewRingingConnection(Handler h, int what, Object obj){ mNewRingingConnectionRegistrants.addUnique(h, what, obj); } /** * Unregisters for new ringing connection notification. * Extraneous calls are tolerated silently */ public void unregisterForNewRingingConnection(Handler h){} public void unregisterForNewRingingConnection(Handler h){ mNewRingingConnectionRegistrants.remove(h); } /** * Notifies when an incoming call rings.<p> Loading @@ -560,14 +664,18 @@ public final class CallManager { * AsyncResult.userObj = obj * AsyncResult.result = a Connection. <p> */ public void registerForIncomingRing(Handler h, int what, Object obj){} public void registerForIncomingRing(Handler h, int what, Object obj){ mIncomingRingRegistrants.addUnique(h, what, obj); } /** * Unregisters for ring notification. * Extraneous calls are tolerated silently */ public void unregisterForIncomingRing(Handler h){} public void unregisterForIncomingRing(Handler h){ mIncomingRingRegistrants.remove(h); } /** * Notifies when out-band ringback tone is needed.<p> Loading @@ -578,26 +686,32 @@ public final class CallManager { * AsyncResult.result = boolean, true to start play ringback tone * and false to stop. <p> */ public void registerForRingbackTone(Handler h, int what, Object obj){} public void registerForRingbackTone(Handler h, int what, Object obj){ mRingbackToneRegistrants.addUnique(h, what, obj); } /** * Unregisters for ringback tone notification. */ public void unregisterForRingbackTone(Handler h){} public void unregisterForRingbackTone(Handler h){ mRingbackToneRegistrants.remove(h); } /** * Registers the handler to reset the uplink mute state to get * uplink audio. */ public void registerForResendIncallMute(Handler h, int what, Object obj){} public void registerForResendIncallMute(Handler h, int what, Object obj){ mResendIncallMuteRegistrants.addUnique(h, what, obj); } /** * Unregisters for resend incall mute notifications. */ public void unregisterForResendIncallMute(Handler h){} public void unregisterForResendIncallMute(Handler h){ mResendIncallMuteRegistrants.remove(h); } /** * Register for notifications of initiation of a new MMI code request. Loading @@ -610,13 +724,17 @@ public final class CallManager { * * <code>obj.result</code> will be an "MmiCode" object. */ public void registerForMmiInitiate(Handler h, int what, Object obj){} public void registerForMmiInitiate(Handler h, int what, Object obj){ mMmiInitiateRegistrants.addUnique(h, what, obj); } /** * Unregisters for new MMI initiate notification. * Extraneous calls are tolerated silently */ public void unregisterForMmiInitiate(Handler h){} public void unregisterForMmiInitiate(Handler h){ mMmiInitiateRegistrants.remove(h); } /** * Register for notifications that an MMI request has completed Loading @@ -626,13 +744,17 @@ public final class CallManager { * <code>Message.obj</code> will contain an AsyncResult. * <code>obj.result</code> will be an "MmiCode" object */ public void registerForMmiComplete(Handler h, int what, Object obj){} public void registerForMmiComplete(Handler h, int what, Object obj){ mMmiCompleteRegistrants.addUnique(h, what, obj); } /** * Unregisters for MMI complete notification. * Extraneous calls are tolerated silently */ public void unregisterForMmiComplete(Handler h){} public void unregisterForMmiComplete(Handler h){ mMmiCompleteRegistrants.remove(h); } /** * Registration point for Ecm timer reset Loading @@ -640,15 +762,17 @@ public final class CallManager { * @param what user-defined message code * @param obj placed in Message.obj */ public void registerForEcmTimerReset(Handler h, int what, Object obj){} public void registerForEcmTimerReset(Handler h, int what, Object obj){ mEcmTimerResetRegistrants.addUnique(h, what, obj); } /** * Unregister for notification for Ecm timer reset * @param h Handler to be removed from the registrant list. */ public void unregisterForEcmTimerReset(Handler h){} public void unregisterForEcmTimerReset(Handler h){ mEcmTimerResetRegistrants.remove(h); } /** * Register for ServiceState changed. Loading @@ -664,73 +788,133 @@ public final class CallManager { public void unregisterForServiceStateChanged(Handler h){} /** * Register for Supplementary Service notifications from the network. * Register for notifications when a supplementary service attempt fails. * Message.obj will contain an AsyncResult. * AsyncResult.result will be a SuppServiceNotification instance. * * @param h Handler that receives the notification message. * @param what User-defined message code. * @param obj User object. */ public void registerForSuppServiceNotification(Handler h, int what, Object obj){} public void registerForSuppServiceFailed(Handler h, int what, Object obj){ mSuppServiceFailedRegistrants.addUnique(h, what, obj); } /** * Unregisters for Supplementary Service notifications. * Unregister for notifications when a supplementary service attempt fails. * Extraneous calls are tolerated silently * * @param h Handler to be removed from the registrant list. */ public void unregisterForSuppServiceNotification(Handler h){} public void unregisterForSuppServiceFailed(Handler h){ mSuppServiceFailedRegistrants.remove(h); } /** * Register for notifications when a supplementary service attempt fails. * Message.obj will contain an AsyncResult. * Register for notifications when a sInCall VoicePrivacy is enabled * * @param h Handler that receives the notification message. * @param what User-defined message code. * @param obj User object. */ public void registerForSuppServiceFailed(Handler h, int what, Object obj){} public void registerForInCallVoicePrivacyOn(Handler h, int what, Object obj){ mInCallVoicePrivacyOnRegistrants.addUnique(h, what, obj); } /** * Unregister for notifications when a supplementary service attempt fails. * Extraneous calls are tolerated silently * Unregister for notifications when a sInCall VoicePrivacy is enabled * * @param h Handler to be removed from the registrant list. */ public void unregisterForSuppServiceFailed(Handler h){} public void unregisterForInCallVoicePrivacyOn(Handler h){ mInCallVoicePrivacyOnRegistrants.remove(h); } /** * Register for notifications when a sInCall VoicePrivacy is enabled * Register for notifications when a sInCall VoicePrivacy is disabled * * @param h Handler that receives the notification message. * @param what User-defined message code. * @param obj User object. */ public void registerForInCallVoicePrivacyOn(Handler h, int what, Object obj){} public void registerForInCallVoicePrivacyOff(Handler h, int what, Object obj){ mInCallVoicePrivacyOffRegistrants.addUnique(h, what, obj); } /** * Unegister for notifications when a sInCall VoicePrivacy is enabled * Unregister for notifications when a sInCall VoicePrivacy is disabled * * @param h Handler to be removed from the registrant list. */ public void unregisterForInCallVoicePrivacyOn(Handler h){} public void unregisterForInCallVoicePrivacyOff(Handler h){ mInCallVoicePrivacyOffRegistrants.remove(h); } /** * Register for notifications when a sInCall VoicePrivacy is disabled * Register for notifications when CDMA call waiting comes * * @param h Handler that receives the notification message. * @param what User-defined message code. * @param obj User object. */ public void registerForCallWaiting(Handler h, int what, Object obj){ mCallWaitingRegistrants.addUnique(h, what, obj); } /** * Unregister for notifications when CDMA Call waiting comes * @param h Handler to be removed from the registrant list. */ public void unregisterForCallWaiting(Handler h){ mCallWaitingRegistrants.remove(h); } /** * Register for signal information notifications from the network. * Message.obj will contain an AsyncResult. * AsyncResult.result will be a SuppServiceNotification instance. * * @param h Handler that receives the notification message. * @param what User-defined message code. * @param obj User object. */ public void registerForSignalInfo(Handler h, int what, Object obj){ mSignalInfoRegistrants.addUnique(h, what, obj); } /** * Unregisters for signal information notifications. * Extraneous calls are tolerated silently * * @param h Handler to be removed from the registrant list. */ public void unregisterForSignalInfo(Handler h){ mSignalInfoRegistrants.remove(h); } /** * Register for display information notifications from the network. * Message.obj will contain an AsyncResult. * AsyncResult.result will be a SuppServiceNotification instance. * * @param h Handler that receives the notification message. * @param what User-defined message code. * @param obj User object. */ public void registerForInCallVoicePrivacyOff(Handler h, int what, Object obj){} public void registerForDisplayInfo(Handler h, int what, Object obj){ mDisplayInfoRegistrants.addUnique(h, what, obj); } /** * Unegister for notifications when a sInCall VoicePrivacy is disabled * Unregisters for display information notifications. * Extraneous calls are tolerated silently * * @param h Handler to be removed from the registrant list. */ public void unregisterForInCallVoicePrivacyOff(Handler h){} public void unregisterForDisplayInfo(Handler h) { mDisplayInfoRegistrants.remove(h); } /** * Register for notifications when CDMA OTA Provision status change Loading @@ -739,13 +923,17 @@ public final class CallManager { * @param what User-defined message code. * @param obj User object. */ public void registerForCdmaOtaStatusChange(Handler h, int what, Object obj){} public void registerForCdmaOtaStatusChange(Handler h, int what, Object obj){ mCdmaOtaStatusChangeRegistrants.addUnique(h, what, obj); } /** * Unegister for notifications when CDMA OTA Provision status change * Unregister for notifications when CDMA OTA Provision status change * @param h Handler to be removed from the registrant list. */ public void unregisterForCdmaOtaStatusChange(Handler h){} public void unregisterForCdmaOtaStatusChange(Handler h){ mCdmaOtaStatusChangeRegistrants.remove(h); } /** * Registration point for subscription info ready Loading @@ -753,13 +941,17 @@ public final class CallManager { * @param what what code of message when delivered * @param obj placed in Message.obj */ public void registerForSubscriptionInfoReady(Handler h, int what, Object obj){} public void registerForSubscriptionInfoReady(Handler h, int what, Object obj){ mSubscriptionInfoReadyRegistrants.addUnique(h, what, obj); } /** * Unregister for notifications for subscription info * @param h Handler to be removed from the registrant list. */ public void unregisterForSubscriptionInfoReady(Handler h){} public void unregisterForSubscriptionInfoReady(Handler h){ mSubscriptionInfoReadyRegistrants.remove(h); } /* APIs to access foregroudCalls, backgroudCalls, and ringingCalls * 1. APIs to access list of calls Loading Loading @@ -974,9 +1166,57 @@ public final class CallManager { case EVENT_DISCONNECT: mDisconnectRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_CALL_STATE_CHANGED: case EVENT_PRECISE_CALL_STATE_CHANGED: mPreciseCallStateRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_NEW_RINGING_CONNECTION: mNewRingingConnectionRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_UNKNOWN_CONNECTION: mUnknownConnectionRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_INCOMING_RING: mIncomingRingRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_RINGBACK_TONE: mRingbackToneRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_IN_CALL_VOICE_PRIVACY_ON: mInCallVoicePrivacyOnRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_IN_CALL_VOICE_PRIVACY_OFF: mInCallVoicePrivacyOffRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_CALL_WAITING: mCallWaitingRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_DISPLAY_INFO: mDisplayInfoRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_SIGNAL_INFO: mSignalInfoRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_CDMA_OTA_STATUS_CHANGE: mCdmaOtaStatusChangeRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_RESEND_INCALL_MUTE: mResendIncallMuteRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_MMI_INITIATE: mMmiInitiateRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_MMI_COMPLETE: mMmiCompleteRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_ECM_TIMER_RESET: mEcmTimerResetRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_SUBSCRIPTION_INFO_READY: mSubscriptionInfoReadyRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; case EVENT_SUPP_SERVICE_FAILED: mSuppServiceFailedRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; } } }; Loading
telephony/java/com/android/internal/telephony/cdma/CdmaCall.java +1 −2 Original line number Diff line number Diff line Loading @@ -75,8 +75,7 @@ public final class CdmaCall extends Call { public Phone getPhone() { //TODO, see GsmCall return null; return owner.phone; } public boolean isMultiparty() { Loading
telephony/java/com/android/internal/telephony/gsm/GsmCall.java +1 −2 Original line number Diff line number Diff line Loading @@ -70,8 +70,7 @@ class GsmCall extends Call { public Phone getPhone() { //TODO return null; return owner.phone; } public boolean Loading