From b5888e629ae7bd821902a1d58962cc7d07828755 Mon Sep 17 00:00:00 2001 From: "Shruthi N.K" Date: Wed, 9 Mar 2011 09:12:07 +0530 Subject: 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 --- .../android/internal/telephony/CallManager.java | 33 ++++++++++++++++++++++ 1 file changed, 33 insertions(+) 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); -- cgit v1.1