diff options
| author | 2016-10-28 20:13:57 +0000 | |
|---|---|---|
| committer | 2016-10-28 20:13:57 +0000 | |
| commit | 958dab93cde1c05a8ae9cb4cba1acbbce9bced63 (patch) | |
| tree | d74fcd8aff5cfc1bf37c104d1e6670ade5c8fd2a | |
| parent | aacbdf59d616fd736e0a5041907572a69c175419 (diff) | |
| parent | 678ba24533139c1e54a9729f3ad9f4614da8fbad (diff) | |
Merge "Use UUIDs for call management in Headset Client (HF)"
am: 678ba24533
Change-Id: I77553f45f3d5de04e9b443e425f15afb8946e237
3 files changed, 28 insertions, 63 deletions
diff --git a/core/java/android/bluetooth/BluetoothHeadsetClient.java b/core/java/android/bluetooth/BluetoothHeadsetClient.java index 874026fb157d..93790feecd11 100644 --- a/core/java/android/bluetooth/BluetoothHeadsetClient.java +++ b/core/java/android/bluetooth/BluetoothHeadsetClient.java @@ -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())); } @@ -883,41 +886,18 @@ public final class BluetoothHeadsetClient implements BluetoothProfile { } /** - * 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; } /** diff --git a/core/java/android/bluetooth/BluetoothHeadsetClientCall.java b/core/java/android/bluetooth/BluetoothHeadsetClientCall.java index c73bc3cb53e5..420c079f5fea 100644 --- a/core/java/android/bluetooth/BluetoothHeadsetClientCall.java +++ b/core/java/android/bluetooth/BluetoothHeadsetClientCall.java @@ -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(); } /** @@ -171,6 +174,15 @@ public final class BluetoothHeadsetClientCall implements Parcelable { } /** + * 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). * * @return <code>true</code> if call is a multi party call, diff --git a/core/java/android/bluetooth/IBluetoothHeadsetClient.aidl b/core/java/android/bluetooth/IBluetoothHeadsetClient.aidl index 79ae4e48fa7d..a351bd2d7076 100644 --- a/core/java/android/bluetooth/IBluetoothHeadsetClient.aidl +++ b/core/java/android/bluetooth/IBluetoothHeadsetClient.aidl @@ -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); |