History log of /packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
6a89ba2edab624de0dfa9af1d504f683d0130817 01-Aug-2017 Hall Liu <hallliu@google.com> Send updateHeadsetPhoneState when child calls change

In BluetoothPhoneService, don't debounce the notification of the state
change if the number of child calls change. It might take a while before
children are added to a conference, so we should inform the headset that
something changed so that it'll actually pick up on the child calls.

Change-Id: Ia7d458556cf8ec96293a677076c58dcaab0d7387
Test: manual
Fixes: 64041266
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
6fccadb9ac133412c216ba5628ebcc5852eeb328 08-Mar-2017 Hall Liu <hallliu@google.com> Send proper call state in CLCC in an IMS conference

When sending the calls that are part of a held IMS conference with CEP
enabled, send the state of the calls as held rather than active.

Change-Id: Icea894670e4c74754c72e0677dcb781904bad878
Fixes: 33819217
Test: manual, added unit test
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
f4bd7c2179028999fa3964bf0d45a593171b5480 17-Nov-2016 Satish Kodishala <skodisha@codeaurora.org> Strip separators while sending CLCC response

Usecase:
1. Pair and connect with Plantronics Voyager Legend headset.
2. Make MO call to a contact with "(" or ")" in the name.
3. End the call.
4. Redial from headset.

Failure:
Headset sends ATD with number it got as part of CLCC response
for first call. Since number contains "(" and ")" characters,
error is returned from BT stack to the headset.

Rootcause:
During the first call, headset sends AT+CLCC. We send number returned
by Telephony as is which have "(" and ")" to headset in CLCC response.
Headset uses ATD with this number for redial. We return error from stack
when we see "(" or ")" so redial fails.

Fix:
Remove special characters like "(", ")", "-", " " from phone number
before sending it in CLCC response. Issue is see with Plantronics
Voyager Legend, Plantronics backbeat pro headsets.

Test: Telecom Unit Tests
Bug:33000152
Change-Id: I589b64ebd56892dec33abe430cdf6d2eacdc9b99
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
8f98f10d53f4f7aa1605a37313a6186f90dc6c0e 21-Oct-2016 Brad Ebinger <breadley@google.com> resolve merge conflicts of 953e1af to stage-aosp-master

Test: Manual Testing
Change-Id: I3c8cac2c8b3634db7a20cceda434e6db6cdb05ca
953e1af643b66df6f931d76c23bcc54147668cd4 06-Oct-2016 Brad Ebinger <breadley@google.com> Switch to using android.telecom.Log in Telecom

Sorry.

Test: All affected unit tests still pass.
Bug: 26571395
Change-Id: I890d68d935cd554ba89042e99c155757697e1a37
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
6e64c966e28d4cb9f990fffd773da40fb1b4e346 21-Jul-2016 Hall Liu <hallliu@google.com> resolve merge conflicts of 479872d to nyc-mr1-dev-plus-aosp

Change-Id: Ib640e675d21807378e251091a99333264f3b67a2
3cab92aa08063db6f63e3bc032332c377eac1de5 19-Jul-2016 Hall Liu <hallliu@google.com> Answer video calls as audio through BT

Bug: 30207310
Change-Id: I9d5bd714920f48e4554385d9ba2df4962be29840
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
d6f8b2f6bdc79a02bb592a851cf0fb0ac17d4fad 12-Jul-2016 Tyler Gunn <tgunn@google.com> Merge \"Finalize multiendpoint functionality.\" into nyc-mr1-dev
am: b489d6c2a1

Change-Id: Iaf8e0b5957036a7c62a10d77bed86814ea8a67a8
1e37be5dd86a51b90e461f09dc8a89effe4aee21 11-Jul-2016 Tyler Gunn <tgunn@google.com> Finalize multiendpoint functionality.

1) Handle the PULLING state throughout telecom.
2) When parcelling calls to send to InCallServices, remap PULLING state
to DIALING if an InCallService doesn't support external calls. This
ensures compatibility for things like Android Wear/Auto.
3) Ensure add call isn't disabled because of external calls.
4) Modify InCallController to handle changes to whether a call is external
or not. For IncallServices that do not support external calls, we will
add the call when an external call becomes a regular call, and we will
remove it when a regular call becomes external.

Change-Id: I1bf6c1f7e182834c3ab1ed34cd119467a4698993
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
34db8b05ec4d74eeba97167a7603770ea920ddb6 14-Jun-2016 Tyler Gunn <tgunn@google.com> Merge \"Filter external calls when InCallService doesn\'t support them.\" into nyc-mr1-dev
am: 9eb7d9a76d

Change-Id: I84c0b6eb25046b29a493558545eb811a660eea7d
f15dc33f87f88e21ef745952a68af65c86e1bf1e 08-Jun-2016 Tyler Gunn <tgunn@google.com> Filter external calls when InCallService doesn't support them.

Use TelecomManager#METADATA_INCLUDE_EXTERNAL_CALLS metadata to check
whether an InCallService supports external calls. Will only send
external calls to an InCallService which has correct Metadata to indicate
that it wants to be informed of external calls.

This required some changes to how InCallController keeps track of the
incallservices. I have added an InCallServiceInfo class which tracks
the component name of an ICS as well as whether it supports external calls.

The change to CallsManager#getFirstCallWithState and getNumCallsWithSate
ensures that when TelecomServiceImpl checks to see if there are ongoing
calls it doesn't consider external calls when checking if there is an
ongoing call, and also when determining if room needs to be made for a
call.

Bug: 27458894
Change-Id: I69652877332be8527fb16a38c692b6f51a92e469
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
c3127632cec010f4180e6a89a9bdf40ea3ee2547 19-May-2016 Satish Kodishala <skodisha@codeaurora.org> Handle AT+CHLD=1 when there is no active call am: f5bdfb5aa2
am: 46c1a0b53d

* commit '46c1a0b53d465e3b7638bb15b4be17514566fe51':
Handle AT+CHLD=1 when there is no active call

Change-Id: Idc5456d7e8f529e867d8275d9ad5a57453c72e69
6916a88d04b40bc934bfd6059f3f3e701d7f7242 14-Apr-2016 Santos Cordon <santoscordon@google.com> Merge "Do not crash if label is null." into nyc-dev
1a40c4f4daf2cdfba3f67383c726f93b85a98b00 14-Apr-2016 Tyler Gunn <tgunn@google.com> Improvements to external call handling.

Add onExternalCallChanged listener in Call to report when a call switches
between being external and not.
In CallAudioManager, BluetoothPhoneServiceImpl, HeadsetMediaButton, and
PhoneStateBroadcaster, listen to changes in the external call state.

This ensures that when a call becomes external or a call becomes
non-external that the various modules updates themselves appropriately.

Bug: 28179159
Change-Id: I44bc0b94f185c66aeddb68549223533249bb0b62
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
22403a76d81aa26fa7407a4070765e92a69d6cd0 13-Apr-2016 Santos Cordon <santoscordon@google.com> Do not crash if label is null.

Bug: 27814178
Change-Id: Ic7adff34fbaeab80cc616b0f0a408ff8722bb6c1
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
f5bdfb5aa24df7b9d6be01d10fe58342cc5bcc59 30-Dec-2015 Satish Kodishala <skodisha@codeaurora.org> Handle AT+CHLD=1 when there is no active call

Use case:
1. Connect to headset/carkit with 3-way calling support.
2. Make an incoming call or put active call on hold.
3. Send AT+CHLD=1 command from remote headset.

Failure:
AG responds with error for AT+CHLD=1 from remote since there is
no active call. Incoming ringing call is not accepted. If there
is a call on hold, it remains on hold.

Root cause:
Since there is no active call, we are returning error instead of
checking for presence of incoming or held call to make it active.

Fix:
When AT+CHLD=1 is received, end the active call if any and accept
the incoming call or make the held call to active if exists.

Change-Id: Idb81507623e26d9760c93b01c4e55ab04a746cef
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
7948f5b5aeae8e508ee4310595669c484c786dd7 16-Mar-2016 Hall Liu <hallliu@google.com> Fix tests breaking when bluetooth is on

BluetoothPhoneServiceImpl now uses a BluetoothAdapterProxy so that it is
now isolated from system bluetooth.

Bug: 27686250
Change-Id: If27c9ba642b163ecde68ae8956bc76523a552d31
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
e091ab90e37845cf4771051a6d2ce0ebadee4fe7 19-Dec-2015 Hall Liu <hallliu@google.com> CallAudioManager refactoring

Separates the handling of audio mode and audio focus into a state
machine and brings ringing, tone generation, and ringbacks under the
control of CallAudioManager.

(cherry picked from commit fc2270137059e855756769752899d613e27d12a8)

Change-Id: Idd765550c907150117b8b66f76e88868ae3785c2
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
3165d50d3fc688d632faecfae9c2f987e537941f 16-Dec-2015 Brad Ebinger <breadley@google.com> Increase Logging to debug Accept/Reject

Currently, it can be difficult to identify where Telecom events
originate from. Logging messages have been added that better describe
the conditions that occured to cause these Telecom events to occur.

Bug: 25838961
Change-Id: I846a3125d000bef1d0e8796a7baadcfa8cd73d4f
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
712860276af91b649f2787a9a793521b16f091be 10-Dec-2015 Brad Ebinger <breadley@google.com> Increase Unit Tests for BluetoothPhoneServiceImpl

Adds tests to BluetoothPhoneServiceImpl in code areas
that have been identified as important (76% -> 86%) as per:

go/telecom-code-yellow-coverage

Change-Id: I1294f5873ea0944c79878797e244db346b2ad9a4
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
240656f19c078b4f703d0502ce29114de0d45a50 04-Dec-2015 Tony Mak <tonymak@google.com> Methods in PhoneAccountRegistrar should ask for userhandle explicitly

1. Get calling user handle before calling clearCallingIdentity
2. Methods in PhoneAccountRegistrar asked for the user handle explicitly
instead of trying both current user and calling user
3. Modify isVisibleForUser in PhoneAccountRegistrar,
- PA with CAPABILITY_MULTI_USER is visible to all users including
managed profile (We are still discussing this, but let's assume it
works in this way and change it later if necessary)
- For other PAs, they are only visible within the user they are
registered to.
- TelecomManager.getPhoneAccount is an exception case. The visibility
checking of getPhoneAccount allowing a PhoneAccountHandle from other
profiles in the same user.
Reason:
Telecom passes PhoneAccountHandle to incall UI and incall UI
retrieves PhoneAccount from the handle.
It is because we never bind to managed profile's incall UI, and bind
to its parent user provided one instead. So phone account handle in
managed profile is passed to it's parent user incall UI. And we need
to allow parent user incall UI to retrieve the PhoneAccount from
the handle.

4. Please notice that the default PA account related APIs does not really
support multi-users. The backend (xml storage) does not include user
as a key and it should be able to store one default only and is shared
among all users. This problem is not fixed in this commit.

Bug: 25936882

Change-Id: Ia371723d68247a208a0c1185f6d02f1b5897946a
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
3dfd3e916f1f5f1bd8fe811ab134422b8763bfa7 17-Nov-2015 Brad Ebinger <breadley@google.com> Merge "Add BluetoothPhoneServiceImpl testing"
5385513ae43b4d5896245bf076a83b27dbf32a25 30-Oct-2015 Brad Ebinger <breadley@google.com> Add BluetoothPhoneServiceImpl testing

Adds unit tests for BluetoothPhoneServiceImpl.java, which manages
telecom's interfacing with a headset, including headset events
and connect/disconnect during a call.

Change-Id: Ia692b02f8e4d3fc52b0e266409a4c5ed1ca2e7b8
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
b3979ee8e636820cc5e68f26562bc02987e5d489 12-Nov-2015 Hall Liu <hallliu@google.com> Fix test breakage when phone bluetooth is on

When the phone's bluetooth is enabled, TelecomSystemTest will fail with
a permission error in BluetoothPhoneServiceImpl. This change introduces
a new factory to facilitate mocking of BluetoothPhoneServiceImpl.

Change-Id: I58e1d5532a7f55580d37158fee27209e3de24988
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
d9f9006eafb1751f1b4ae1aa0954d445aa03fd3c 28-Oct-2015 Santos Cordon <santoscordon@google.com> Show CONNECTING and SELECT_PHONE_ACCOUNT states as bluetooth-dialing.

When a bluetooth device asks us to make a call, we make a new Call
instance in the CONNECTING state and ask the ConnectionService to
place the call. Once the ConnectionService places the call the state
transitions to DIALING.

The bluetooth device expects there to be a call after it asks us to
place it, but we return zero calls if the device asks us prior to
transitioning to DIALING. This is because we treat CONNECTING as an
IDLE state for bluetooth devices.

The reason we treated CONNECTING as an IDLE state was to accommodate
aggressive end-call behavior from apps which rewrite a phone numbers
when making phone calls. We have since fixed that problem in
other ways and it is no longer necessary to treat CONNECTING or
SELECT_PHONE_ACCOUNT as IDLE states. This should fix problems we are
seeing where BT devices show zero calls if they query our system during
the CONNECTING state.

Bug: 24093455
Change-Id: I129711f6b9f6b7e32fc0bfa338b1e7fa5965e378
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
7d7cf27dd519c8910d98e942adc5a95675eba0c8 28-Aug-2015 Roshan Pius <rpius@google.com> Ensure BT headset state updation before connect.

Two BT fixes here:
1. Correct the force updation of BT headset.
Looks like one of the partner CL: ag/703545 inadvertently overrode the
|force| flag that was added in ag/565413 to update the BT headset with
correct phone state on query. Correcting the logic to update the BT
headset with phone state to honor the |force| flag regardless of the
other flags.
2. For outgoing calls, update the BT headset that there is an outgoing
call being placed even before the call reaches the DIALING state.
This helps in ensuring that the connect_audio invoked reaches after
BT headset knows that there is an outgoing call being placed.

BUG: 23324160
Bug: 22996930
Bug: 23595828
Change-Id: Ib19712fbf357b8355de2132be643585e24d9a59c
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
9365c274f5f3c0b1c289f54e855792bfb24096d6 29-Jun-2015 Tyler Gunn <tgunn@google.com> Update BluetoothPhoneServiceImpl to handle childless conference calls.

- Changed so conference calls with no children (or possibility of having any
children) are added to bluetooth device.

Bug: 21085329
Change-Id: Ife16a048c5549aa3033018d53cd100f6da697668
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
3109262f814309b0c93464006ba29d6a53b3145b 05-Jun-2015 Andre Eisenbach <eisenbach@google.com> Fix merge error in BluetoothPhoneServiceImpl

Change-Id: I0a7a721eb510642858b3037af63c3bf271d9c7c0
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
49422b5771ff5bc45f032f40000697e6fd1bd3b5 01-Apr-2015 Mallikarjuna GB <gbmalli@codeaurora.org> Bluetooth: Send default value for CNUM.

Use case:
1. Connect BT headset.
2. Make MO call.
3. Check for AT+COPS response and SCO establishment.

Failure:
No response sent for AT+COPS.

Root cause:
Telephony is returning null as operator name.

Fix:
- When null value is returned for operator's
name and subscriber number from telephony
APIs, add default values for those.

Change-Id: I3d675e786bece1a18b651d5dba1207cf6603121d
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
8729c185e463f81639247e4a2c33ad723a60e353 04-Jun-2015 Mallikarjuna GB <gbmalli@codeaurora.org> BT: Don't answer video call as audio only call.

Use case:
1. Connect BT headset.
2. Receive MT video call.
3. Answer using BT headset.

Failure:
Video call gets answered as audio only call.

Root cause:
When answering call from BT headset, we are not checking
the if the call is video call and answering it as audio call.

Fix:
Check if the call is video call when answering with BT headset.

Change-Id: I9f29fee5685302046b2ac3f87e4b844150152a49
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
0ae2df8877ab703fbdeb33c89bc7a694af5611ed 04-Jun-2015 Mallikarjuna GB <gbmalli@codeaurora.org> BT: Send proper updates to headset for call swap

Use case:
1. Connect BT headset.
2. Make MO/MT call.
3. Make another MO/MT call.
4. When one call is active, another is on hold, swap calls from headset.
5. Check call held indicators sent to headset.

Failure:
1. Calls swapped and CIEV 7,2 and CIEV 7,1 is sent on GSM network.
2. For CDMA, calls swapped with in active CDMA conference but no held
call indicator is sent.

Root cause:
1. In gsm network, when active and held calls are swapped, firstly
active call is put to hold making held call count as 2 and
BluetoothPhoneService updates callheld indicator as no call active.
After this, next update comes to make original held call as active
and again callheld indicator as active and held is updated.

2. For CDMA, when calls are swapped, no call held indicator is sent
from Telephony.

Fix:
1. In gsm network, avoid unnecessary callheld indicator update as CIEV7,2
for call swapping.

2. In cdma network, send callheld indicator for call swap within
active conference.

Change-Id: I385e9b383c5c71cab2bf300669695d2fa66bd38c
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
ebf2d0f2b4f17e958b0b23d94edc6b0d05334e43 15-May-2015 Santos Cordon <santoscordon@google.com> Add a slew of clearCallingIdentity() invocations to telecom.

We used to use Handlers to move things onto the telecom main thread when
they came in through Binder calls. This also had the effect of
switching to telecom's calling identity.

Since we no longer do that, we need to manually reset the calling
identity to avoid the permissions failures that we've been seeing
lately. This change adds all the checks that are necessary today and
checks which would help down the road if any code changes.

Bug: 20830275
Change-Id: I73e3e2d310a505ac96abe3aed7f2118346c7be1f
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
6a2126477ce3f527ecaec807fe4f40cd13ff02b0 09-May-2015 Santos Cordon <santoscordon@google.com> Clean up PhoneAccountRegistrar.

Cleanup lots of duplicate code and consolidate all phone account
retrievals into a single method: getPhoneAccounts(...).

Consolidate checks for capabilities, package-name, uri, and
isVisibleForUser(...). This will be very helpful when
implementing enable/disable for phone accounts.

Bug: 20303449
Change-Id: I24d63cd313876f5d9390f2eb31c0ce79d7cb0ab2
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
92694519535c54f542b4ef3973e9c1934f2feeff 23-Apr-2015 Santos Cordon <santoscordon@google.com> Move CallState and rename PRE_DIAL_WAIT.

CallState was a public API only being used by Telecom so I've moved it
into to Telecom and removed it from the public API. The translation
from CallState to Call.STATE_* was happening on the public Call object
which wasn't ideal (Call.java shouldn't have to know that other
representations of state exist). So I moved the translation into
InCallController.java and what we pass into ParcelableCall is now
Call.STATE_* constants.

Bug: 20532827
Bug: 20532435
Change-Id: I79ce36c7e971c1a49b857506c9a56cfe316069cf
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
8d5d9ddc66b55b6906364ab3c0e244dab4d58f13 12-Mar-2015 Ihab Awad <ihab@google.com> Make Telecom synchronous

Remove main-thread handlers and add a systemwide lock object.

Change-Id: I6334fdfa6c244836f6375bea302404f61c81301b
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
78a5e6b9c1595c81f72d7a822617cb78db224e48 06-Feb-2015 Ihab Awad <ihab@google.com> Refactoring for testability

Refactor to a single app singleton, TelecomSystem, which owns the
intialization of the rest of the app.

Change-Id: I3036f200b56f710e7f830b469260a67145c327e7
/packages/services/Telecomm/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java