summaryrefslogtreecommitdiffstats
path: root/telephony/java/android/telephony/PhoneStateListener.java
diff options
context:
space:
mode:
authorAntonio Marín Cerezuela <amarin@swissms.ch>2013-05-27 11:36:36 +0200
committerAntonio Marín Cerezuela <amarin@swissms.ch>2014-01-10 11:08:06 +0100
commitc5ac15a3e11c03951e269b243674858411204b67 (patch)
tree2af4eef7e97318ae606ca78a3b683e62471762ff /telephony/java/android/telephony/PhoneStateListener.java
parentde8c3cf13b0fc0655cf49934658e652b441ee019 (diff)
downloadframeworks_base-c5ac15a3e11c03951e269b243674858411204b67.zip
frameworks_base-c5ac15a3e11c03951e269b243674858411204b67.tar.gz
frameworks_base-c5ac15a3e11c03951e269b243674858411204b67.tar.bz2
Telephony API extension v2
Added new AndroidManifest permission: android.permission.READ_PRECISE_PHONE_STATE Added the following PhoneStateListeners and corresponding broadcast intents: onPreciseCallStateChanged(PreciseCallState callState); onPreciseDataConnectionStateChanged(PreciseDataConnectionState dataConnectionState); broadcastPreciseCallStateChanged(int ringingCallState, int foregroundCallState, int backgroundCallState, int disconnectCause, int preciseDisconnectCause) broadcastPreciseDataConnectionStateChanged(int state, int networkType, String apnType, String apn, String reason, LinkProperties linkProperties, String failCause) Added TelephonyManager intent actions with their extras and constants: public static final String ACTION_PRECISE_CALL_STATE_CHANGED = "android.intent.action.PRECISE_CALL_STATE"; public static final String ACTION_PRECISE_DATA_CONNECTION_STATE_CHANGED = "android.intent.action.PRECISE_DATA_CONNECTION_STATE_CHANGED"; public static final int PRECISE_CALL_STATE_* Moved public static final int DISCONNECT_CAUSE_* from PreciseCallState.java to a new class DisconnectCause.java Moved public static final int PRECISE_DISCONNECT_CAUSE_* from PreciseCallState.java to a new class PreciseDisconnectCause.java Change-Id: If3b88c679507c529b746046c4a17cf6d9974bd09
Diffstat (limited to 'telephony/java/android/telephony/PhoneStateListener.java')
-rw-r--r--telephony/java/android/telephony/PhoneStateListener.java58
1 files changed, 58 insertions, 0 deletions
diff --git a/telephony/java/android/telephony/PhoneStateListener.java b/telephony/java/android/telephony/PhoneStateListener.java
index ff77fc0..538548d 100644
--- a/telephony/java/android/telephony/PhoneStateListener.java
+++ b/telephony/java/android/telephony/PhoneStateListener.java
@@ -24,6 +24,8 @@ import android.telephony.SignalStrength;
import android.telephony.CellLocation;
import android.telephony.CellInfo;
import android.telephony.Rlog;
+import android.telephony.PreciseCallState;
+import android.telephony.PreciseDataConnectionState;
import com.android.internal.telephony.IPhoneStateListener;
@@ -165,6 +167,27 @@ public class PhoneStateListener {
*/
public static final int LISTEN_CELL_INFO = 0x00000400;
+ /**
+ * Listen for precise changes and fails to the device calls (cellular).
+ * {@more}
+ * Requires Permission: {@link android.Manifest.permission#READ_PRECISE_PHONE_STATE
+ * READ_PRECISE_PHONE_STATE}
+ *
+ * @hide
+ */
+ public static final int LISTEN_PRECISE_CALL_STATE = 0x00000800;
+
+ /**
+ * Listen for precise changes and fails on the data connection (cellular).
+ * {@more}
+ * Requires Permission: {@link android.Manifest.permission#READ_PRECISE_PHONE_STATE
+ * READ_PRECISE_PHONE_STATE}
+ *
+ * @see #onPreciseDataConnectionStateChanged
+ * @hide
+ */
+ public static final int LISTEN_PRECISE_DATA_CONNECTION_STATE = 0x00001000;
+
public PhoneStateListener() {
}
@@ -293,6 +316,25 @@ public class PhoneStateListener {
}
/**
+ * Callback invoked when precise device call state changes.
+ *
+ * @hide
+ */
+ public void onPreciseCallStateChanged(PreciseCallState callState) {
+ // default implementation empty
+ }
+
+ /**
+ * Callback invoked when data connection state changes with precise information.
+ *
+ * @hide
+ */
+ public void onPreciseDataConnectionStateChanged(
+ PreciseDataConnectionState dataConnectionState) {
+ // default implementation empty
+ }
+
+ /**
* The callback methods need to be called on the handler thread where
* this object was created. If the binder did that for us it'd be nice.
*/
@@ -344,6 +386,16 @@ public class PhoneStateListener {
public void onCellInfoChanged(List<CellInfo> cellInfo) {
Message.obtain(mHandler, LISTEN_CELL_INFO, 0, 0, cellInfo).sendToTarget();
}
+
+ public void onPreciseCallStateChanged(PreciseCallState callState) {
+ Message.obtain(mHandler, LISTEN_PRECISE_CALL_STATE, 0, 0, callState).sendToTarget();
+ }
+
+ public void onPreciseDataConnectionStateChanged(
+ PreciseDataConnectionState dataConnectionState) {
+ Message.obtain(mHandler, LISTEN_PRECISE_DATA_CONNECTION_STATE, 0, 0,
+ dataConnectionState).sendToTarget();
+ }
};
Handler mHandler = new Handler() {
@@ -383,6 +435,12 @@ public class PhoneStateListener {
break;
case LISTEN_CELL_INFO:
PhoneStateListener.this.onCellInfoChanged((List<CellInfo>)msg.obj);
+ break;
+ case LISTEN_PRECISE_CALL_STATE:
+ PhoneStateListener.this.onPreciseCallStateChanged((PreciseCallState)msg.obj);
+ break;
+ case LISTEN_PRECISE_DATA_CONNECTION_STATE:
+ PhoneStateListener.this.onPreciseDataConnectionStateChanged((PreciseDataConnectionState)msg.obj);
}
}
};