diff options
author | Shruthi N.K <shruthink@codeaurora.org> | 2011-03-09 09:12:07 +0530 |
---|---|---|
committer | Danny Baumann <dannybaumann@web.de> | 2012-02-12 12:25:35 +0100 |
commit | b5888e629ae7bd821902a1d58962cc7d07828755 (patch) | |
tree | b2060091283ecc505f9ce5dc450342bb02e53cfd | |
parent | 3836ca19dba4dead4584fd47dd8b8dacba2b90b0 (diff) | |
download | frameworks_base-b5888e629ae7bd821902a1d58962cc7d07828755.zip frameworks_base-b5888e629ae7bd821902a1d58962cc7d07828755.tar.gz frameworks_base-b5888e629ae7bd821902a1d58962cc7d07828755.tar.bz2 |
telephony: Display Supplementary Service Notifications.
telephony: Display Supplementary Service Notifications.
CallManager registers for supplementary service notifications
with Phone to notify Phone App.
Change-Id: I20c1c908200a9a2ced017e14821cb65249521708
-rw-r--r-- | telephony/java/com/android/internal/telephony/CallManager.java | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/telephony/java/com/android/internal/telephony/CallManager.java b/telephony/java/com/android/internal/telephony/CallManager.java index b40e7a3..3929864 100644 --- a/telephony/java/com/android/internal/telephony/CallManager.java +++ b/telephony/java/com/android/internal/telephony/CallManager.java @@ -78,6 +78,7 @@ public final class CallManager { private static final int EVENT_SUPP_SERVICE_FAILED = 117; private static final int EVENT_SERVICE_STATE_CHANGED = 118; private static final int EVENT_POST_DIAL_CHARACTER = 119; + private static final int EVENT_SUPP_SERVICE_NOTIFY = 120; // Singleton instance private static final CallManager INSTANCE = new CallManager(); @@ -159,6 +160,9 @@ public final class CallManager { protected final RegistrantList mSuppServiceFailedRegistrants = new RegistrantList(); + protected final RegistrantList mSuppServiceNotificationRegistrants + = new RegistrantList(); + protected final RegistrantList mServiceStateChangedRegistrants = new RegistrantList(); @@ -428,6 +432,9 @@ public final class CallManager { phone.registerForMmiComplete(mHandler, EVENT_MMI_COMPLETE, null); phone.registerForSuppServiceFailed(mHandler, EVENT_SUPP_SERVICE_FAILED, null); phone.registerForServiceStateChanged(mHandler, EVENT_SERVICE_STATE_CHANGED, null); + if (phone.getPhoneType() == Phone.PHONE_TYPE_GSM) { + phone.registerForSuppServiceNotification(mHandler, EVENT_SUPP_SERVICE_NOTIFY, null); + } // for events supported only by GSM and CDMA phone if (phone.getPhoneType() == Phone.PHONE_TYPE_GSM || @@ -460,6 +467,7 @@ public final class CallManager { phone.unregisterForMmiInitiate(mHandler); phone.unregisterForMmiComplete(mHandler); phone.unregisterForSuppServiceFailed(mHandler); + phone.unregisterForSuppServiceNotification(mHandler); phone.unregisterForServiceStateChanged(mHandler); // for events supported only by GSM and CDMA phone @@ -1268,6 +1276,27 @@ public final class CallManager { } /** + * Register for supplementary service notifications. + * Message.obj will contain an AsyncResult. + * + * @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){ + mSuppServiceNotificationRegistrants.addUnique(h, what, obj); + } + + /** + * Unregister for supplementary service notifications. + * + * @param h Handler to be removed from the registrant list. + */ + public void unregisterForSuppServiceNotification(Handler h){ + mSuppServiceNotificationRegistrants.remove(h); + } + + /** * Register for notifications when a sInCall VoicePrivacy is enabled * * @param h Handler that receives the notification message. @@ -1776,6 +1805,10 @@ public final class CallManager { if (VDBG) Log.d(LOG_TAG, " handleMessage (EVENT_SUPP_SERVICE_FAILED)"); mSuppServiceFailedRegistrants.notifyRegistrants((AsyncResult) msg.obj); break; + case EVENT_SUPP_SERVICE_NOTIFY: + if (VDBG) Log.d(LOG_TAG, " handleMessage (EVENT_SUPP_SERVICE_NOTIFICATION)"); + mSuppServiceNotificationRegistrants.notifyRegistrants((AsyncResult) msg.obj); + break; case EVENT_SERVICE_STATE_CHANGED: if (VDBG) Log.d(LOG_TAG, " handleMessage (EVENT_SERVICE_STATE_CHANGED)"); mServiceStateChangedRegistrants.notifyRegistrants((AsyncResult) msg.obj); |