17aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta/* 27aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * Copyright (C) 2014 The Android Open Source Project 37aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * 47aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * Licensed under the Apache License, Version 2.0 (the "License"); 57aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * you may not use this file except in compliance with the License. 67aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * You may obtain a copy of the License at 77aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * 87aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * http://www.apache.org/licenses/LICENSE-2.0 97aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * 107aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * Unless required by applicable law or agreed to in writing, software 117aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * distributed under the License is distributed on an "AS IS" BASIS, 127aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * See the License for the specific language governing permissions and 147aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * limitations under the License. 157aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta */ 167aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta 177aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Guptapackage android.bluetooth; 187aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta 197aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Guptaimport android.os.Parcel; 207aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Guptaimport android.os.Parcelable; 2140bb6f3f8fc02600fe24301c11e804196ced3531Sanket Agarwalimport android.os.SystemClock; 227aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta 23e457fa4b9d6c37746ba16cf8a1ad801b87ede2fbBryce Leeimport java.util.UUID; 24e457fa4b9d6c37746ba16cf8a1ad801b87ede2fbBryce Lee 257aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta/** 267aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * This class represents a single call, its state and properties. 277aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * It implements {@link Parcelable} for inter-process message passing. 28a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He * 297aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * @hide 307aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta */ 31cf916d34671f0ab6aad8de24c18e4dc96fb21941Mike Lockwoodpublic final class BluetoothHeadsetClientCall implements Parcelable { 327aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta 337aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta /* Call state */ 347aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta /** 357aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * Call is active. 367aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta */ 377aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta public static final int CALL_STATE_ACTIVE = 0; 387aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta /** 397aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * Call is in held state. 407aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta */ 417aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta public static final int CALL_STATE_HELD = 1; 427aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta /** 437aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * Outgoing call that is being dialed right now. 447aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta */ 457aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta public static final int CALL_STATE_DIALING = 2; 467aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta /** 477aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * Outgoing call that remote party has already been alerted about. 487aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta */ 497aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta public static final int CALL_STATE_ALERTING = 3; 507aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta /** 517aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * Incoming call that can be accepted or rejected. 527aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta */ 537aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta public static final int CALL_STATE_INCOMING = 4; 547aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta /** 557aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * Waiting call state when there is already an active call. 567aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta */ 577aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta public static final int CALL_STATE_WAITING = 5; 587aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta /** 597aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * Call that has been held by response and hold 607aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * (see Bluetooth specification for further references). 617aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta */ 627aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta public static final int CALL_STATE_HELD_BY_RESPONSE_AND_HOLD = 6; 637aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta /** 647aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * Call that has been already terminated and should not be referenced as a valid call. 657aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta */ 667aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta public static final int CALL_STATE_TERMINATED = 7; 677aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta 68ddbfc9ada117374ffe5c1e232a85c4e70fcd4350Mike Lockwood private final BluetoothDevice mDevice; 697aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta private final int mId; 707aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta private int mState; 717aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta private String mNumber; 727aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta private boolean mMultiParty; 737aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta private final boolean mOutgoing; 74e457fa4b9d6c37746ba16cf8a1ad801b87ede2fbBryce Lee private final UUID mUUID; 7540bb6f3f8fc02600fe24301c11e804196ced3531Sanket Agarwal private final long mCreationElapsedMilli; 76843d380cf10a929ecc312e51133aef51dd6942d8Joseph Pirozzo private final boolean mInBandRing; 777aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta 787aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta /** 79cf916d34671f0ab6aad8de24c18e4dc96fb21941Mike Lockwood * Creates BluetoothHeadsetClientCall instance. 807aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta */ 81ddbfc9ada117374ffe5c1e232a85c4e70fcd4350Mike Lockwood public BluetoothHeadsetClientCall(BluetoothDevice device, int id, int state, String number, 82843d380cf10a929ecc312e51133aef51dd6942d8Joseph Pirozzo boolean multiParty, boolean outgoing, boolean inBandRing) { 83843d380cf10a929ecc312e51133aef51dd6942d8Joseph Pirozzo this(device, id, UUID.randomUUID(), state, number, multiParty, outgoing, inBandRing); 84e457fa4b9d6c37746ba16cf8a1ad801b87ede2fbBryce Lee } 85e457fa4b9d6c37746ba16cf8a1ad801b87ede2fbBryce Lee 86e457fa4b9d6c37746ba16cf8a1ad801b87ede2fbBryce Lee public BluetoothHeadsetClientCall(BluetoothDevice device, int id, UUID uuid, int state, 87843d380cf10a929ecc312e51133aef51dd6942d8Joseph Pirozzo String number, boolean multiParty, boolean outgoing, boolean inBandRing) { 88ddbfc9ada117374ffe5c1e232a85c4e70fcd4350Mike Lockwood mDevice = device; 897aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta mId = id; 90e457fa4b9d6c37746ba16cf8a1ad801b87ede2fbBryce Lee mUUID = uuid; 917aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta mState = state; 927aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta mNumber = number != null ? number : ""; 937aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta mMultiParty = multiParty; 947aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta mOutgoing = outgoing; 95843d380cf10a929ecc312e51133aef51dd6942d8Joseph Pirozzo mInBandRing = inBandRing; 9640bb6f3f8fc02600fe24301c11e804196ced3531Sanket Agarwal mCreationElapsedMilli = SystemClock.elapsedRealtime(); 977aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta } 987aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta 997aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta /** 1007aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * Sets call's state. 1017aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * 1027aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * <p>Note: This is an internal function and shouldn't be exposed</p> 1037aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * 104a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He * @param state new call state. 1057aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta */ 1067aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta public void setState(int state) { 1077aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta mState = state; 1087aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta } 1097aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta 1107aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta /** 1117aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * Sets call's number. 1127aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * 1137aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * <p>Note: This is an internal function and shouldn't be exposed</p> 1147aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * 115a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He * @param number String representing phone number. 1167aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta */ 1177aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta public void setNumber(String number) { 1187aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta mNumber = number; 1197aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta } 1207aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta 1217aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta /** 1227aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * Sets this call as multi party call. 1237aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * 1247aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * <p>Note: This is an internal function and shouldn't be exposed</p> 1257aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * 126a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He * @param multiParty if <code>true</code> sets this call as a part of multi party conference. 1277aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta */ 1287aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta public void setMultiParty(boolean multiParty) { 1297aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta mMultiParty = multiParty; 1307aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta } 1317aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta 1327aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta /** 133ddbfc9ada117374ffe5c1e232a85c4e70fcd4350Mike Lockwood * Gets call's device. 134ddbfc9ada117374ffe5c1e232a85c4e70fcd4350Mike Lockwood * 135ddbfc9ada117374ffe5c1e232a85c4e70fcd4350Mike Lockwood * @return call device. 136ddbfc9ada117374ffe5c1e232a85c4e70fcd4350Mike Lockwood */ 137ddbfc9ada117374ffe5c1e232a85c4e70fcd4350Mike Lockwood public BluetoothDevice getDevice() { 138ddbfc9ada117374ffe5c1e232a85c4e70fcd4350Mike Lockwood return mDevice; 139ddbfc9ada117374ffe5c1e232a85c4e70fcd4350Mike Lockwood } 140ddbfc9ada117374ffe5c1e232a85c4e70fcd4350Mike Lockwood 141ddbfc9ada117374ffe5c1e232a85c4e70fcd4350Mike Lockwood /** 1427aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * Gets call's Id. 1437aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * 1447aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * @return call id. 1457aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta */ 1467aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta public int getId() { 1477aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta return mId; 1487aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta } 1497aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta 1507aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta /** 151e457fa4b9d6c37746ba16cf8a1ad801b87ede2fbBryce Lee * Gets call's UUID. 152e457fa4b9d6c37746ba16cf8a1ad801b87ede2fbBryce Lee * 153e457fa4b9d6c37746ba16cf8a1ad801b87ede2fbBryce Lee * @return call uuid 154e457fa4b9d6c37746ba16cf8a1ad801b87ede2fbBryce Lee * @hide 155e457fa4b9d6c37746ba16cf8a1ad801b87ede2fbBryce Lee */ 156e457fa4b9d6c37746ba16cf8a1ad801b87ede2fbBryce Lee public UUID getUUID() { 157e457fa4b9d6c37746ba16cf8a1ad801b87ede2fbBryce Lee return mUUID; 158e457fa4b9d6c37746ba16cf8a1ad801b87ede2fbBryce Lee } 159e457fa4b9d6c37746ba16cf8a1ad801b87ede2fbBryce Lee 160e457fa4b9d6c37746ba16cf8a1ad801b87ede2fbBryce Lee /** 1617aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * Gets call's current state. 1627aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * 1637aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * @return state of this particular phone call. 1647aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta */ 1657aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta public int getState() { 1667aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta return mState; 1677aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta } 1687aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta 1697aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta /** 1707aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * Gets call's number. 1717aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * 1727aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * @return string representing phone number. 1737aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta */ 1747aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta public String getNumber() { 1757aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta return mNumber; 1767aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta } 1777aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta 1787aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta /** 17940bb6f3f8fc02600fe24301c11e804196ced3531Sanket Agarwal * Gets call's creation time in millis since epoch. 18040bb6f3f8fc02600fe24301c11e804196ced3531Sanket Agarwal * 18140bb6f3f8fc02600fe24301c11e804196ced3531Sanket Agarwal * @return long representing the creation time. 18240bb6f3f8fc02600fe24301c11e804196ced3531Sanket Agarwal */ 18340bb6f3f8fc02600fe24301c11e804196ced3531Sanket Agarwal public long getCreationElapsedMilli() { 18440bb6f3f8fc02600fe24301c11e804196ced3531Sanket Agarwal return mCreationElapsedMilli; 18540bb6f3f8fc02600fe24301c11e804196ced3531Sanket Agarwal } 18640bb6f3f8fc02600fe24301c11e804196ced3531Sanket Agarwal 18740bb6f3f8fc02600fe24301c11e804196ced3531Sanket Agarwal /** 1887aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * Checks if call is an active call in a conference mode (aka multi party). 1897aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * 190a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He * @return <code>true</code> if call is a multi party call, <code>false</code> otherwise. 1917aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta */ 1927aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta public boolean isMultiParty() { 1937aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta return mMultiParty; 1947aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta } 1957aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta 1967aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta /** 1977aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * Checks if this call is an outgoing call. 1987aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * 199a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He * @return <code>true</code> if its outgoing call, <code>false</code> otherwise. 2007aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta */ 2017aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta public boolean isOutgoing() { 2027aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta return mOutgoing; 2037aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta } 2047aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta 205843d380cf10a929ecc312e51133aef51dd6942d8Joseph Pirozzo /** 206843d380cf10a929ecc312e51133aef51dd6942d8Joseph Pirozzo * Checks if the ringtone will be generated by the connected phone 207843d380cf10a929ecc312e51133aef51dd6942d8Joseph Pirozzo * 208843d380cf10a929ecc312e51133aef51dd6942d8Joseph Pirozzo * @return <code>true</code> if in band ring is enabled, <code>false</code> otherwise. 209843d380cf10a929ecc312e51133aef51dd6942d8Joseph Pirozzo */ 210843d380cf10a929ecc312e51133aef51dd6942d8Joseph Pirozzo public boolean isInBandRing() { 211843d380cf10a929ecc312e51133aef51dd6942d8Joseph Pirozzo return mInBandRing; 212843d380cf10a929ecc312e51133aef51dd6942d8Joseph Pirozzo } 213843d380cf10a929ecc312e51133aef51dd6942d8Joseph Pirozzo 214843d380cf10a929ecc312e51133aef51dd6942d8Joseph Pirozzo 2152992cd084cd5cfd9ef253c37ef269d6c75e7e144Jack He @Override 2160b611b5f3bcbe29fd63102f6924b43eb7c6533f5Mike Lockwood public String toString() { 2173c67873f0a20a958f6cf1ccccb472fa050bf55b7Bryce Lee return toString(false); 2183c67873f0a20a958f6cf1ccccb472fa050bf55b7Bryce Lee } 2193c67873f0a20a958f6cf1ccccb472fa050bf55b7Bryce Lee 2202992cd084cd5cfd9ef253c37ef269d6c75e7e144Jack He /** 2212992cd084cd5cfd9ef253c37ef269d6c75e7e144Jack He * Generate a log string for this call 2222992cd084cd5cfd9ef253c37ef269d6c75e7e144Jack He * @param loggable whether device address should be logged 2232992cd084cd5cfd9ef253c37ef269d6c75e7e144Jack He * @return log string 2242992cd084cd5cfd9ef253c37ef269d6c75e7e144Jack He */ 2253c67873f0a20a958f6cf1ccccb472fa050bf55b7Bryce Lee public String toString(boolean loggable) { 226ddbfc9ada117374ffe5c1e232a85c4e70fcd4350Mike Lockwood StringBuilder builder = new StringBuilder("BluetoothHeadsetClientCall{mDevice: "); 22718116c01c2e35eab0869e4a982c4669bbccb8af6Bryce Lee builder.append(loggable ? mDevice : mDevice.hashCode()); 228ddbfc9ada117374ffe5c1e232a85c4e70fcd4350Mike Lockwood builder.append(", mId: "); 2290b611b5f3bcbe29fd63102f6924b43eb7c6533f5Mike Lockwood builder.append(mId); 230e457fa4b9d6c37746ba16cf8a1ad801b87ede2fbBryce Lee builder.append(", mUUID: "); 231e457fa4b9d6c37746ba16cf8a1ad801b87ede2fbBryce Lee builder.append(mUUID); 2320b611b5f3bcbe29fd63102f6924b43eb7c6533f5Mike Lockwood builder.append(", mState: "); 2330b611b5f3bcbe29fd63102f6924b43eb7c6533f5Mike Lockwood switch (mState) { 234a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He case CALL_STATE_ACTIVE: 235a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He builder.append("ACTIVE"); 236a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He break; 237a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He case CALL_STATE_HELD: 238a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He builder.append("HELD"); 239a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He break; 240a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He case CALL_STATE_DIALING: 241a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He builder.append("DIALING"); 242a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He break; 243a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He case CALL_STATE_ALERTING: 244a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He builder.append("ALERTING"); 245a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He break; 246a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He case CALL_STATE_INCOMING: 247a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He builder.append("INCOMING"); 248a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He break; 249a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He case CALL_STATE_WAITING: 250a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He builder.append("WAITING"); 251a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He break; 252a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He case CALL_STATE_HELD_BY_RESPONSE_AND_HOLD: 253a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He builder.append("HELD_BY_RESPONSE_AND_HOLD"); 254a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He break; 255a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He case CALL_STATE_TERMINATED: 256a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He builder.append("TERMINATED"); 257a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He break; 258a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He default: 259a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He builder.append(mState); 260a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He break; 2610b611b5f3bcbe29fd63102f6924b43eb7c6533f5Mike Lockwood } 2620b611b5f3bcbe29fd63102f6924b43eb7c6533f5Mike Lockwood builder.append(", mNumber: "); 26318116c01c2e35eab0869e4a982c4669bbccb8af6Bryce Lee builder.append(loggable ? mNumber : mNumber.hashCode()); 2640b611b5f3bcbe29fd63102f6924b43eb7c6533f5Mike Lockwood builder.append(", mMultiParty: "); 2650b611b5f3bcbe29fd63102f6924b43eb7c6533f5Mike Lockwood builder.append(mMultiParty); 2660b611b5f3bcbe29fd63102f6924b43eb7c6533f5Mike Lockwood builder.append(", mOutgoing: "); 2670b611b5f3bcbe29fd63102f6924b43eb7c6533f5Mike Lockwood builder.append(mOutgoing); 268843d380cf10a929ecc312e51133aef51dd6942d8Joseph Pirozzo builder.append(", mInBandRing: "); 269843d380cf10a929ecc312e51133aef51dd6942d8Joseph Pirozzo builder.append(mInBandRing); 2700b611b5f3bcbe29fd63102f6924b43eb7c6533f5Mike Lockwood builder.append("}"); 2710b611b5f3bcbe29fd63102f6924b43eb7c6533f5Mike Lockwood return builder.toString(); 2720b611b5f3bcbe29fd63102f6924b43eb7c6533f5Mike Lockwood } 2730b611b5f3bcbe29fd63102f6924b43eb7c6533f5Mike Lockwood 2747aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta /** 2757aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta * {@link Parcelable.Creator} interface implementation. 2767aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta */ 277cf916d34671f0ab6aad8de24c18e4dc96fb21941Mike Lockwood public static final Parcelable.Creator<BluetoothHeadsetClientCall> CREATOR = 278cf916d34671f0ab6aad8de24c18e4dc96fb21941Mike Lockwood new Parcelable.Creator<BluetoothHeadsetClientCall>() { 2797aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta @Override 280cf916d34671f0ab6aad8de24c18e4dc96fb21941Mike Lockwood public BluetoothHeadsetClientCall createFromParcel(Parcel in) { 281a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He return new BluetoothHeadsetClientCall((BluetoothDevice) in.readParcelable(null), 282e457fa4b9d6c37746ba16cf8a1ad801b87ede2fbBryce Lee in.readInt(), UUID.fromString(in.readString()), in.readInt(), 283843d380cf10a929ecc312e51133aef51dd6942d8Joseph Pirozzo in.readString(), in.readInt() == 1, in.readInt() == 1, 284843d380cf10a929ecc312e51133aef51dd6942d8Joseph Pirozzo in.readInt() == 1); 2857aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta } 2867aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta 2877aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta @Override 288cf916d34671f0ab6aad8de24c18e4dc96fb21941Mike Lockwood public BluetoothHeadsetClientCall[] newArray(int size) { 289cf916d34671f0ab6aad8de24c18e4dc96fb21941Mike Lockwood return new BluetoothHeadsetClientCall[size]; 2907aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta } 2917aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta }; 2927aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta 2937aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta @Override 2947aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta public void writeToParcel(Parcel out, int flags) { 295ddbfc9ada117374ffe5c1e232a85c4e70fcd4350Mike Lockwood out.writeParcelable(mDevice, 0); 2967aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta out.writeInt(mId); 297e457fa4b9d6c37746ba16cf8a1ad801b87ede2fbBryce Lee out.writeString(mUUID.toString()); 2987aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta out.writeInt(mState); 2997aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta out.writeString(mNumber); 3007aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta out.writeInt(mMultiParty ? 1 : 0); 3017aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta out.writeInt(mOutgoing ? 1 : 0); 302843d380cf10a929ecc312e51133aef51dd6942d8Joseph Pirozzo out.writeInt(mInBandRing ? 1 : 0); 3037aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta } 3047aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta 3057aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta @Override 3067aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta public int describeContents() { 3077aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta return 0; 3087aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta } 3097aca90fcc0175ab44613bb3e4f3f13fc4a688fa5Hemant Gupta} 310