From 8190168077aa3ef02a1f5a3a636130d83c4eec1d Mon Sep 17 00:00:00 2001 From: Bryce Lee Date: Fri, 28 Aug 2015 16:38:02 -0700 Subject: Add capability for a connection hand rejection text response. Change-Id: Id90417736bed7ab8750144ccaf3c7b449ec832b8 --- telecomm/java/android/telecom/Call.java | 8 +++++++- telecomm/java/android/telecom/Connection.java | 20 ++++++++++++++++++- .../java/android/telecom/ConnectionService.java | 23 ++++++++++++++++++++++ 3 files changed, 49 insertions(+), 2 deletions(-) (limited to 'telecomm/java/android') diff --git a/telecomm/java/android/telecom/Call.java b/telecomm/java/android/telecom/Call.java index f149f24..6511705 100644 --- a/telecomm/java/android/telecom/Call.java +++ b/telecomm/java/android/telecom/Call.java @@ -206,8 +206,14 @@ public final class Call { */ public static final int CAPABILITY_CAN_PAUSE_VIDEO = 0x00100000; + /** + * Call sends responses through connection. + * @hide + */ + public static final int CAPABILITY_CAN_SEND_RESPONSE_VIA_CONNECTION = 0x00400000; + //****************************************************************************************** - // Next CAPABILITY value: 0x00004000 + // Next CAPABILITY value: 0x00800000 //****************************************************************************************** /** diff --git a/telecomm/java/android/telecom/Connection.java b/telecomm/java/android/telecom/Connection.java index 7b277c5..430760a 100644 --- a/telecomm/java/android/telecom/Connection.java +++ b/telecomm/java/android/telecom/Connection.java @@ -248,8 +248,15 @@ public abstract class Connection extends Conferenceable { */ public static final int CAPABILITY_CONFERENCE_HAS_NO_CHILDREN = 0x00200000; + /** + * Indicates that the connection itself wants to handle any sort of reply response, rather than + * relying on SMS. + * @hide + */ + public static final int CAPABILITY_CAN_SEND_RESPONSE_VIA_CONNECTION = 0x00400000; + //********************************************************************************************** - // Next CAPABILITY value: 0x00400000 + // Next CAPABILITY value: 0x00800000 //********************************************************************************************** /** @@ -388,6 +395,10 @@ public abstract class Connection extends Conferenceable { if (can(capabilities, CAPABILITY_CONFERENCE_HAS_NO_CHILDREN)) { builder.append(" CAPABILITY_SINGLE_PARTY_CONFERENCE"); } + if (can(capabilities, CAPABILITY_CAN_SEND_RESPONSE_VIA_CONNECTION)) { + builder.append(" CAPABILITY_CAN_SEND_RESPONSE_VIA_CONNECTION"); + } + builder.append("]"); return builder.toString(); } @@ -1763,6 +1774,13 @@ public abstract class Connection extends Conferenceable { public void onReject() {} /** + * Notifies ths Connection of a request reject with a message. + * + * @hide + */ + public void onReject(String replyMessage) {} + + /** * Notifies this Connection whether the user wishes to proceed with the post-dial DTMF codes. */ public void onPostDialContinue(boolean proceed) {} diff --git a/telecomm/java/android/telecom/ConnectionService.java b/telecomm/java/android/telecom/ConnectionService.java index 383e45b..4e330bd 100644 --- a/telecomm/java/android/telecom/ConnectionService.java +++ b/telecomm/java/android/telecom/ConnectionService.java @@ -101,6 +101,7 @@ public abstract class ConnectionService extends Service { private static final int MSG_ANSWER_VIDEO = 17; private static final int MSG_MERGE_CONFERENCE = 18; private static final int MSG_SWAP_CONFERENCE = 19; + private static final int MSG_REJECT_WITH_MESSAGE = 20; private static Connection sNullConnection; @@ -166,6 +167,14 @@ public abstract class ConnectionService extends Service { } @Override + public void rejectWithMessage(String callId, String message) { + SomeArgs args = SomeArgs.obtain(); + args.arg1 = callId; + args.arg2 = message; + mHandler.obtainMessage(MSG_REJECT_WITH_MESSAGE, args).sendToTarget(); + } + + @Override public void disconnect(String callId) { mHandler.obtainMessage(MSG_DISCONNECT, callId).sendToTarget(); } @@ -296,6 +305,15 @@ public abstract class ConnectionService extends Service { case MSG_REJECT: reject((String) msg.obj); break; + case MSG_REJECT_WITH_MESSAGE: { + SomeArgs args = (SomeArgs) msg.obj; + try { + reject((String) args.arg1, (String) args.arg2); + } finally { + args.recycle(); + } + break; + } case MSG_DISCONNECT: disconnect((String) msg.obj); break; @@ -681,6 +699,11 @@ public abstract class ConnectionService extends Service { findConnectionForAction(callId, "reject").onReject(); } + private void reject(String callId, String rejectWithMessage) { + Log.d(this, "reject %s with message", callId); + findConnectionForAction(callId, "reject").onReject(rejectWithMessage); + } + private void disconnect(String callId) { Log.d(this, "disconnect %s", callId); if (mConnectionById.containsKey(callId)) { -- cgit v1.1