Merge "Use UUIDs for call management in Headset Client (HF)"
This commit is contained in:
@@ -27,6 +27,7 @@ import android.util.Log;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* Public API to control Hands Free Profile (HFP role only).
|
||||
@@ -799,7 +800,9 @@ public final class BluetoothHeadsetClient implements BluetoothProfile {
|
||||
* Works only when Extended Call Control is supported by Audio Gateway.
|
||||
*
|
||||
* @param device remote device
|
||||
* @param index index of the call to be terminated
|
||||
* @param call Handle of call obtained in {@link dial()} or obtained via
|
||||
* {@link ACTION_CALL_CHANGED}. {@code call} may be null in which
|
||||
* case we will hangup all active calls.
|
||||
* @return <code>true</code> if command has been issued successfully;
|
||||
* <code>false</code> otherwise;
|
||||
* upon completion HFP sends {@link #ACTION_CALL_CHANGED}
|
||||
@@ -809,12 +812,12 @@ public final class BluetoothHeadsetClient implements BluetoothProfile {
|
||||
* {@link #EXTRA_AG_FEATURE_ECC}.
|
||||
* This method invocation will fail silently when feature is not supported.</p>
|
||||
*/
|
||||
public boolean terminateCall(BluetoothDevice device, int index) {
|
||||
public boolean terminateCall(BluetoothDevice device, BluetoothHeadsetClientCall call) {
|
||||
if (DBG) log("terminateCall()");
|
||||
if (mService != null && isEnabled() &&
|
||||
isValidDevice(device)) {
|
||||
try {
|
||||
return mService.terminateCall(device, index);
|
||||
return mService.terminateCall(device, call);
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, Log.getStackTraceString(new Throwable()));
|
||||
}
|
||||
@@ -882,42 +885,19 @@ public final class BluetoothHeadsetClient implements BluetoothProfile {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Redials last number from Audio Gateway.
|
||||
*
|
||||
* @param device remote device
|
||||
* @return <code>true</code> if command has been issued successfully;
|
||||
* <code>false</code> otherwise;
|
||||
* upon completion HFP sends {@link #ACTION_CALL_CHANGED}
|
||||
* intent in case of success; {@link #ACTION_RESULT} is sent
|
||||
* otherwise;
|
||||
*/
|
||||
public boolean redial(BluetoothDevice device) {
|
||||
if (DBG) log("redial()");
|
||||
if (mService != null && isEnabled() &&
|
||||
isValidDevice(device)) {
|
||||
try {
|
||||
return mService.redial(device);
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, Log.getStackTraceString(new Throwable()));
|
||||
}
|
||||
}
|
||||
if (mService == null) Log.w(TAG, "Proxy not attached to service");
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Places a call with specified number.
|
||||
*
|
||||
* @param device remote device
|
||||
* @param number valid phone number
|
||||
* @return <code>true</code> if command has been issued successfully;
|
||||
* <code>false</code> otherwise;
|
||||
* upon completion HFP sends {@link #ACTION_CALL_CHANGED}
|
||||
* intent in case of success; {@link #ACTION_RESULT} is sent
|
||||
* otherwise;
|
||||
* @return <code>{@link BluetoothHeadsetClientCall} call</code> if command has been
|
||||
* issued successfully;
|
||||
* <code>{@link null}</code> otherwise;
|
||||
* upon completion HFP sends {@link #ACTION_CALL_CHANGED}
|
||||
* intent in case of success; {@link #ACTION_RESULT} is sent
|
||||
* otherwise;
|
||||
*/
|
||||
public boolean dial(BluetoothDevice device, String number) {
|
||||
public BluetoothHeadsetClientCall dial(BluetoothDevice device, String number) {
|
||||
if (DBG) log("dial()");
|
||||
if (mService != null && isEnabled() &&
|
||||
isValidDevice(device)) {
|
||||
@@ -928,32 +908,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile {
|
||||
}
|
||||
}
|
||||
if (mService == null) Log.w(TAG, "Proxy not attached to service");
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Places a call to the number under specified memory location.
|
||||
*
|
||||
* @param device remote device
|
||||
* @param location valid memory location
|
||||
* @return <code>true</code> if command has been issued successfully;
|
||||
* <code>false</code> otherwise;
|
||||
* upon completion HFP sends {@link #ACTION_CALL_CHANGED}
|
||||
* intent in case of success; {@link #ACTION_RESULT} is sent
|
||||
* otherwise;
|
||||
*/
|
||||
public boolean dialMemory(BluetoothDevice device, int location) {
|
||||
if (DBG) log("dialMemory()");
|
||||
if (mService != null && isEnabled() &&
|
||||
isValidDevice(device)) {
|
||||
try {
|
||||
return mService.dialMemory(device, location);
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, Log.getStackTraceString(new Throwable()));
|
||||
}
|
||||
}
|
||||
if (mService == null) Log.w(TAG, "Proxy not attached to service");
|
||||
return false;
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -18,6 +18,7 @@ package android.bluetooth;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.os.SystemClock;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@@ -70,6 +71,7 @@ public final class BluetoothHeadsetClientCall implements Parcelable {
|
||||
private boolean mMultiParty;
|
||||
private final boolean mOutgoing;
|
||||
private final UUID mUUID;
|
||||
private final long mCreationElapsedMilli;
|
||||
|
||||
/**
|
||||
* Creates BluetoothHeadsetClientCall instance.
|
||||
@@ -88,6 +90,7 @@ public final class BluetoothHeadsetClientCall implements Parcelable {
|
||||
mNumber = number != null ? number : "";
|
||||
mMultiParty = multiParty;
|
||||
mOutgoing = outgoing;
|
||||
mCreationElapsedMilli = SystemClock.elapsedRealtime();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -170,6 +173,15 @@ public final class BluetoothHeadsetClientCall implements Parcelable {
|
||||
return mNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets call's creation time in millis since epoch.
|
||||
*
|
||||
* @return long representing the creation time.
|
||||
*/
|
||||
public long getCreationElapsedMilli() {
|
||||
return mCreationElapsedMilli;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if call is an active call in a conference mode (aka multi party).
|
||||
*
|
||||
|
||||
@@ -47,14 +47,12 @@ interface IBluetoothHeadsetClient {
|
||||
boolean acceptCall(in BluetoothDevice device, int flag);
|
||||
boolean holdCall(in BluetoothDevice device);
|
||||
boolean rejectCall(in BluetoothDevice device);
|
||||
boolean terminateCall(in BluetoothDevice device, int index);
|
||||
boolean terminateCall(in BluetoothDevice device, in BluetoothHeadsetClientCall call);
|
||||
|
||||
boolean enterPrivateMode(in BluetoothDevice device, int index);
|
||||
boolean explicitCallTransfer(in BluetoothDevice device);
|
||||
|
||||
boolean redial(in BluetoothDevice device);
|
||||
boolean dial(in BluetoothDevice device, String number);
|
||||
boolean dialMemory(in BluetoothDevice device, int location);
|
||||
BluetoothHeadsetClientCall dial(in BluetoothDevice device, String number);
|
||||
|
||||
boolean sendDTMF(in BluetoothDevice device, byte code);
|
||||
boolean getLastVoiceTagNumber(in BluetoothDevice device);
|
||||
|
||||
Reference in New Issue
Block a user