API changes to enable account selection for a call

If an account default is not set, the incall ui will display a dialog to
allow the user to select an account for that particular call.

Bug: 16243703

Change-Id: I8faf2f2ce0b2669a141562832f23e8f3ce88f094
This commit is contained in:
Nancy Chen
2014-07-08 14:16:17 -07:00
parent 45374c9afa
commit 5da0fd5e76
6 changed files with 44 additions and 1 deletions

View File

@@ -28031,6 +28031,7 @@ package android.telecomm {
method public int getState();
method public void hold();
method public void phoneAccountClicked();
method public void phoneAccountSelected(android.telecomm.PhoneAccount);
method public void playDtmfTone(char);
method public void postDialContinue(boolean);
method public void reject(boolean, java.lang.String);
@@ -28044,6 +28045,7 @@ package android.telecomm {
field public static final int STATE_DISCONNECTED = 7; // 0x7
field public static final int STATE_HOLDING = 3; // 0x3
field public static final int STATE_NEW = 0; // 0x0
field public static final int STATE_PRE_DIAL_WAIT = 8; // 0x8
field public static final int STATE_RINGING = 2; // 0x2
}
@@ -28131,6 +28133,7 @@ package android.telecomm {
enum_constant public static final android.telecomm.CallState DISCONNECTED;
enum_constant public static final android.telecomm.CallState NEW;
enum_constant public static final android.telecomm.CallState ON_HOLD;
enum_constant public static final android.telecomm.CallState PRE_DIAL_WAIT;
enum_constant public static final android.telecomm.CallState RINGING;
}
@@ -28275,6 +28278,7 @@ package android.telecomm {
method public void holdCall(java.lang.String);
method public void mute(boolean);
method public void phoneAccountClicked(java.lang.String);
method public void phoneAccountSelected(java.lang.String, android.telecomm.PhoneAccount);
method public void playDtmfTone(java.lang.String, char);
method public void postDialContinue(java.lang.String, boolean);
method public void rejectCall(java.lang.String, boolean, java.lang.String);

View File

@@ -62,6 +62,11 @@ public final class Call {
*/
public static final int STATE_DISCONNECTED = 7;
/**
* The state of an outgoing {@code Call}, but waiting for user input before proceeding.
*/
public static final int STATE_PRE_DIAL_WAIT = 8;
public static class Details {
private final Uri mHandle;
private final int mHandlePresentation;
@@ -429,6 +434,15 @@ public final class Call {
mInCallAdapter.phoneAccountClicked(mTelecommCallId);
}
/**
* Notifies this {@code Call} the a {@code PhoneAccount} has been selected and to proceed
* with placing an outgoing call.
*/
public void phoneAccountSelected(PhoneAccount account) {
mInCallAdapter.phoneAccountSelected(mTelecommCallId, account);
}
/**
* Instructs this {@code Call} to enter a conference.
*/
@@ -703,6 +717,8 @@ public final class Call {
switch (inCallCallState) {
case NEW:
return STATE_NEW;
case PRE_DIAL_WAIT:
return STATE_PRE_DIAL_WAIT;
case DIALING:
return STATE_DIALING;
case RINGING:

View File

@@ -31,6 +31,14 @@ public enum CallState {
*/
NEW,
/**
* Indicates that the call is about to go into the outgoing and dialing state but is waiting for
* user input before it proceeds. For example, where no default {@link PhoneAccount} is set,
* this is the state where the InCallUI is waiting for the user to select a {@link PhoneAccount}
* to call from.
*/
PRE_DIAL_WAIT,
/**
* Indicates that a call is outgoing and in the dialing state. A call transitions to this state
* once an outgoing call has begun (e.g., user presses the dial button in Dialer). Calls in this

View File

@@ -199,6 +199,19 @@ public final class InCallAdapter {
}
}
/**
* Instructs Telecomm to add a PhoneAccount to the specified call
*
* @param callId The identifier of the call
* @param account The PhoneAccount through which to place the call
*/
public void phoneAccountSelected(String callId, PhoneAccount account) {
try {
mAdapter.phoneAccountSelected(callId, account);
} catch (RemoteException e) {
}
}
/**
* Instructs Telecomm to conference the specified call.
*

View File

@@ -17,6 +17,7 @@
package com.android.internal.telecomm;
import android.telecomm.CallAudioState;
import android.telecomm.PhoneAccount;
/**
* Internal remote callback interface for in-call services.
@@ -48,6 +49,8 @@ oneway interface IInCallAdapter {
void phoneAccountClicked(String callId);
void phoneAccountSelected(String callId, in PhoneAccount account);
void conference(String callId);
void splitFromConference(String callId);

View File

@@ -24,7 +24,6 @@ import android.os.Bundle;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.SystemProperties;
import android.telecomm.PhoneAccount;
import android.util.Log;
import com.android.internal.telecomm.ITelecommService;