Move Bluetooth remove service record handler to the app main thread.
This removes the dependency of caller thread that constructs the
BluetoothAdapter singleton instance. The caller thread could stop while
BluetoothAdapter singleton exists but lose the handler context.
Make the BluetoothService.removeServiceRecord return quickly without
blocking on native call.
bug 4999443
Change-Id: I302534baa381f4aca8192e1e4a9ea21793b07ba6
Set bluetooth discoverable off at power on time if the discoverable timeout
is no forever
bug 5068151
Change-Id: I413e8de5f49030b741a8b84a566065d112ee60be
This gets the current connection state of the profile with respect
to the local Bluetooth adapter.
Change-Id: I7cff6c9201d29a8b45413cff7384b7483f21bd5c
It was observed that the preparing bluetooth could take up to 8 seconds before
the SD loaded event came in.
Change-Id: I722f94ed9cbd12bdd033ca405838366139c61383
When pairing is stuck, on turning BT off, we were
not setting the outgoing parining variable to null in
setBondState because of the extra check for isEnabled.
isEnabled check was added to prevent the proxy crash in
setProfilePriorities function. Proxies should never be null.
Add a safety check and also some extra logs to debug the problem.
Change-Id: I694dfeb8fa9426b3916775ca868c2313fa9c22ee
Bluez powered property setting is more apropriate for what this method intend to
achieve and it fixes a bug that incoming connection request wake up the stack in
The pairable events are replaced by power and discoverable events
HotOff state
bug 5080232
Change-Id: I43b44cb2f5203bd99bf764d5a1696e8ff52a31db
When users use application specific Bluetooth state changes,
and the bond state changes, we crash.
We need to recheck Bluetooth state in all functions and scenarios
and even maintain a per application pid Bluetooth state, but this fix
is quick fix for a problem.
Change-Id: I905dfb53965907ccb27757ff6ed1816536277f14
Bluez powered property setting is more apropriate for what this method intend to
achieve and it fixes a bug that incoming connection request wake up the stack in
HotOff state
bug 5080232
Change-Id: I1e29314041f082c1536b46f9707d17d463ae0fd7
Clients need this before BT is turned on.
Todo: If BT "hot" feature is off, read from system properties.
Change-Id: I266c2d4731cacde7a53c65e3d5fb43a2cbe29481
Start the timer (3 second) just after calling disconnect devices.
If the timer expires, it indicates an error condition. we don't wait
on the ALL_DEVICES_DISCONNECTED event upon the error. Instead, get out of
switching state and turn off BT to reset out of the error condition.
Change-Id: I27aa8cd7b6fe50d9191e2d32fc2d6eac50424403
We were the setting the iface as null while disconnecting
and so when disconnected the iface used was null - which would
lead to a crash. During connecting we don't know the interface,
so we use null.
Change-Id: I970f2f1886fa32237936eff439c359187a798832
The ADMIN permission is for use cases where we want to manage BT connection
at a deeper level. So just the Bluetooth permission is good enough here.
Change-Id: Iddd038fe9f9a26f155b4edc9484ba1fe27b178ba
1. The interface was null for reverse tethering.
2. When disconnecting the server, we were passing the address instead of the
interface.
Change-Id: I6004cdf1eed000211cddc6b120e0aded5758eb1e
This is because broadcastState method move the Bluetooth adapter state
to ON. The mBluetoothService.runBluetooth should be called only in the ON state.
Remove mIsDiscovering variable in BluetoothService.
Fix a bug in BluetoothA2dpService that caused 2 times of state change
from DISCONNECTED to CONNECTING that messed up BluetoothService's
connection state count.
Change-Id: Ifb782a845ae70f007d2e036d930bb55f445d68b5
1. Since Input device runs in Bluetooth Service, avoid the proxy call.
2. Accept or reject incoming tethering connections.
This broke because of incoming connection request change for phonebook, HID,
A2DP.
Change-Id: Ia8c537bb79e4dbc66cfb6b23dcad4f99dbf950b3
BluetoothDevice setName overwrite the locally cached remote name.
The changed name is saved in the local storage so that the change
is preserved over power cycle.
bug 5081605
Change-Id: I486966033828d153bfb1076a99e274c8a7f41636
This changes adds an API for system applications
to enable bluetooth without all the side effects like
auto connection to headsets etc.
Also some tweaks to the adapter state machine
Change-Id: Ib9f22d548a26d72334b300101c8eb0d80f08a4bb
Add BluetoothAdapterStateMachine to maintain a inter state machine other than
the public BluetoothAdapter states. This is a improvement to BluetoothService
code. 2 internal state are added, LoadingFirmware and FirmwareLoaded to place
the Bluetooth module in a ready-to-switch-on state so that it can be quickly
switched on to have a better user experience
bug 5021787
Change-Id: Ia352e88cba509d9e98c900f85e7479f8cee1de5e
When the stack returns an incorrect error code, we were going on
in a loop trying auto pairing. Ideally, the stack shouldn't be returning
this incorrect code, but add a fail safe in the userspace code.
Also cap attempts at 2. There is no point trying more than that.
Change-Id: I5bf3ea871b9c2241ae5ac88e9818c9eb847fac92
Don't show incoming connection dialog when the device shows
the pairing dialog - this means that the device has already been
trusted by the user.
Change-Id: I98a9f56528f6b62d0f824bbc7612aaa0077ba1e6
Majority of the cars don't auto pair unlike headsets, as they have a display.
Instead of maintaining a blacklist of such cars, disable
auto pairing with 0000. This is legacy anyway as newer cars
come with 2.1 pairing.
Change-Id: I644e2da4d11cf2d250d846853523d7975ca000fc
Add the flag to Connection state changed intent because
external devices can get connected before booting is complete.
Change-Id: I5bed7a4aa75a42d6facc16aac4f2734e4b5fe246
1. Remove the check of configs in BluetoothHealth.
This check is useless since BluetoothHealth is a proxy.
2. Add a wrapper and a callback class. We shouldn't expose
Binder interfaces as public APIs.
Change-Id: If62620b4251cf93f3f97d2fe63099e40fae7da4d
This sends the intents to the Settings app to show
the dialogs for the incoming connection requests.
Includes down merged contributions from Jaikumar Ganesh.
Change-Id: Ic8b857aad3554315aae39a0e871eb94d0ac98a91
Under some circumstances, the broadcast intent
BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED can be sent before
the system is ready, triggering an IllegalStateException,
"Cannot broadcast before boot completed" and runtime crash.
Fixed the race condition by adding the
Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT flag
to the broadcast intent. All system receivers of this intent
are registered with registerReceiver() rather than as components in
the manifest, so nothing should change in the event that the A2DP
connection state change is broadcast before boot completion.
Any apps that define a receiver for either
BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED or
BluetoothA2dp.ACTION_PLAYING_STATE_CHANGED in their manifest
will not receive these broadcasts in the case where they are sent
before the system has finished booting. Normally, user applications
should not care about these events anyway and should let the audio
manager take care of audio routing on their behalf.
In the event that an app does care about A2DP state changes, it
should either register for these intents with registerReceiver(),
or it can add an intent filter for ACTION_BOOT_COMPLETED and
test the state of Bluetooth and A2DP at that time. Apps which
care about the state of the Bluetooth adapter should do this also,
because BluetoothAdapter.ACTION_STATE_CHANGED is already being sent
with FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT.
Bug: 4982088
Change-Id: I10e55713f9d07d6dc88b4480b45b1aeb3aaf170b
When there are no paired devices, pairing a new device
will cause a crash since the profile proxies will be null.
Change-Id: Ie1a9fd198e46d7e9cc2ba1b2f3a806b3c709f568
This first patch implements all the APIs.
The APIs wil be made public soon. The data specification
API will be submited in another patchset.
Change-Id: I2462683b7e07380e2c42474b0036b34d03b4bed1