summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShruthi N.K <shruthink@codeaurora.org>2011-03-09 09:12:07 +0530
committerDanny Baumann <dannybaumann@web.de>2012-02-12 12:25:35 +0100
commitb5888e629ae7bd821902a1d58962cc7d07828755 (patch)
treeb2060091283ecc505f9ce5dc450342bb02e53cfd
parent3836ca19dba4dead4584fd47dd8b8dacba2b90b0 (diff)
downloadframeworks_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.java33
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);