diff options
author | Ricardo Cerqueira <cyanogenmod@cerqueira.org> | 2012-03-03 22:04:20 +0300 |
---|---|---|
committer | Gerrit Code Review <gerrit@review.cyanogenmod.com> | 2012-03-03 22:04:20 +0300 |
commit | 74478b165b13e905d5711aa15bc0086561eee11f (patch) | |
tree | 0c0092a35b49b8122ecce50086a6ac6a9c4e2e31 | |
parent | c9a82b44209001856b8b2cb633945006f6d55503 (diff) | |
parent | b5888e629ae7bd821902a1d58962cc7d07828755 (diff) | |
download | frameworks_base-74478b165b13e905d5711aa15bc0086561eee11f.zip frameworks_base-74478b165b13e905d5711aa15bc0086561eee11f.tar.gz frameworks_base-74478b165b13e905d5711aa15bc0086561eee11f.tar.bz2 |
Merge "telephony: Display Supplementary Service Notifications." into gingerbread
-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); |