Commit Graph

130 Commits

Author SHA1 Message Date
Jaikumar Ganesh
e5d93b7ed9 Set the Bond State to NONE when we receive a Agent Cancel.
Sometimes during OPP, we can get stuck in Pairing state when the remote
end, cancels the Pairing process - we will just get onAgentCancel
and thus not set the Pairing state properly.

DrNo: Eastham
Bug:2174874
2009-10-08 04:25:45 -07:00
Nick Pelly
f242b7b931 Introduce BluetoothAdapter.getDefaultAdapter().
This is the main entry point to the Bluetooth APIs, and returns the default
local Bluetooth adapter.

It replaces context.getSystemService(Context.BLUETOOTH_SERVICE). This was
never in a public SDK release.

DrNo: eastham
Bug: 2158765
Joke: Why can't you play cards in the jungle? Because there's too many cheetas!
Change-Id: Ieed8be009ee5aba621cb69090ee8c8a9c19c840d
2009-10-08 00:27:17 +02:00
Nick Pelly
16fb88a673 Encourage developers to connect RFCOMM by UUID instead of Channel.
Hide createRfcommSocket(int channel)
Add createRfcommSocketWithServiceRecord(UUID uuid)

Rename listenUsingRfcomm(String,UUID) -> listenUsingRfcommWithServiceRecord(..)

Now we have a complete API for developers to make peer-peer RFCOMM connections
with hard-coding the limited (30) RFCOMM channels, instead using SDP lookup
of an UUID.

This commit addresses two serious bugs:
- Do not throw IOException on accepting an incoming RFCOMM connection with
  BluetoothSocket. This was a regression from commit 24bb9b8af4
- Workaround failure of bluez to update SDP cache when channel changes by
  trying to use the same RFCOMM channel on the server every time, instead
  of picking server channels randomly. This is a pretty ugly workaround,
  and we are still trying to fix the caching issue - but with this
  workaround we are at least shippable and apps will work at least until
  they start colliding on the 30 RFCOMM channels.

DrNo: eastham
Bug: 2158900
Joke: What did the digital watch say to his mom? "Look mom no hands."
Change-Id: Ia4879943b83afac06b6f1a3f2391cf1628afce7d
2009-10-07 23:25:24 +02:00
Nick Pelly
24bb9b8af4 Provide an API for apps to use a dynamic RFCOMM channel and SDP record.
Hide listenUsingRfcommOn(int channel)
Add listenUsingRfcomm(String name, ParcelUuid uuid)

The new API automatically finds a free RFCOMM channel and registers an SDP
record with the given uuid and name. The SDP record is automatically
removed when the socket is closed, or if the application dies.

Apps are prevented from registering SDP records with the uuid of system
Bluetooth profiles, such as A2DP, HFP and OPP.

Apps are prevented from removing SDP records that they did not create. This is
tracked by pid.

TODO: Provide an API for the connecting app to look up an SDP record.

Bug: 2158900
DrNo: eastham
Joke: "What did the dog say to the tree? bark."
Change-Id: Ia92f51c34615a7270a403255ad2b8faa98c4a3f5
2009-10-06 05:57:50 -07:00
Bjorn Bringert
b782a2f4f0 Remove globalSearch argument from triggerSearch()
API council says:

"In reviewing the new triggerSearch API, we are concerned that
applications could use the option to perform a global search to spam
the user with frequent searches.  We would like the global search
option to be removed for now (not just hidden, but removed from the
internal IPC API so that nobody can find this and abuse it).  The rest
of the API should be fine as long as it is restricted to local
searches."

Fixes http://b/editIssue?id=2158785

Change-Id: Ie69a9c0ab6373cc4427aab50606885bdede40585
2009-10-01 09:57:33 +01:00
Jaikumar Ganesh
4c9a29efdb Set Sink State when ACL disconnects.
Change-Id: I9c71c1b848da48883c8ce28503c53c7d32e2fa34
2009-09-30 17:46:17 -07:00
Android (Google) Code Review
78128d721c Merge change I2782ac8c into eclair
* changes:
  Fix regression.
2009-09-30 18:38:55 -04:00
Nick Pelly
62895a67d2 Fix regression.
When turning off BT while connected to an A2DP/HFP headset we can hit the path

BluetoothHeadsetService.onReceive(BluetoothHeadset.STATE_CHANGED) ->
BluetoothHandsfree.audioOff() ->
BluetoothA2dp.resumeSink() ->
which causes resumeSink() to NPE because mAudioDevices.get() returns null.

It's a race between A2DP marking the device as disconnected, and HFP marking
the device as disconnected.

Fix is to NPE check in resumeSink().

Change-Id: I2782ac8c70ea1678d7de5fcd49bff8e03df36f4e
2009-09-30 15:30:43 -07:00
Jaikumar Ganesh
37686069ae Set BondState to Bonding only if it not Bonded already.
Sometimes we might be paired but the other end might not have stored the link
key. So when we initiate connection the other end will ask for the authorization.
This was setting out Bond State to Bonding.

Change-Id: Iba6fd660ac90a3f48da62e7b6cf479054624a5af
2009-09-30 14:02:36 -07:00
Android (Google) Code Review
e5661c40a6 Merge change I8366852f into eclair
* changes:
  Bluetooth A2DP suspend/resume functionality
2009-09-30 14:24:46 -04:00
Jaikumar Ganesh
55929a958b Query from Bluez if name is not present in cache.
Change-Id: I78c4e64a52b8290053dedfb1326df8d4c20f8a09
2009-09-30 10:50:05 -07:00
Zhu Lan
f9bbe1e71a Bluetooth A2DP suspend/resume functionality
Change-Id: I8366852fa9b6ff9dacf18db00ea1c2be0c00ff34
2009-09-29 20:50:02 -07:00
Nick Pelly
aef439e6f8 Move android.bluetooth.ParcelUuid to android.os.ParcelUuid
Change-Id: I564429d5c5b6a5372b6ff26a53b0d7e518b53631
2009-09-28 13:06:22 -07:00
Nick Pelly
12835478ee Handle expiration of discovery mode in system server.
Change-Id: I58fd199b40ffdf8168a5489be8eedb5d25d56722
2009-09-25 15:00:29 -07:00
Nick Pelly
18b1e79a12 Bluetooth API: Do not allow apps to programmatically make BT discoverable.
Instead add ACTION_REQUEST_DISCOVERABLE for the system to show a dialog to
adjust discoverable mode.

Also remove createBond(), removeBond() and cancelBondProcess(). The Settings
App already handles these automatically when connections require bonding.

Change-Id: I216154cd1b6de410de64ba91b07d7263ac03e8df
2009-09-24 19:34:54 -07:00
Jaikumar Ganesh
7633b89443 Set the bonding for incoming connections only when authentication is requested.
Change-Id: Ic44ac0e6dedcb310b0cf47020e5c2ff3d0a4459a
2009-09-22 12:08:49 -07:00
Jaikumar Ganesh
2d3b98d868 Send the address of the device with the UUID intent.
Change-Id: I6357d482550e9e02edf221add318ecd9cfadcb66
2009-09-21 16:11:01 -07:00
Jaikumar Ganesh
10eac971b3 Cache the remote device's service channel.
Bluez Device implementation is such that when a device
is unpaired, we removes the device and hence there is no
way to interact with it unless you pair again. Remote service
channel call is used to get the rfcomm channel number which
will be used in profiles like OPP which don't require pairing.

Change-Id: I868a6cdfdb1b7d3591dd8b66cd0320f41a9c1b92
2009-09-21 15:58:08 -07:00
Jaikumar Ganesh
6179965e85 Send the UUID intent even if apps have not requested for it.
This will help apps listening to this intent to update icons etc
if the remote uuid changes. For example, the settings app used to
refresh the icons when the class bits change. It can do it now
when the remote ends uuids changes too.

Change-Id: Ib9af45780e83118d8877b0ef16f5b39b87fb4bef
2009-09-20 16:16:08 -07:00
Jaikumar Ganesh
2092361d58 Maintain pending outgoing bonding address.
This helps us to distinguish between incoming and outgoing Bonding requests.

Change-Id: I69e6a269b7dd6aad60e6f5711cad812291a7d313
2009-09-20 16:16:08 -07:00
Jaikumar Ganesh
6a9d93cc1a Fix adapter name change problem.
This got introduced as a result of the Bluetooth API changes.

Change-Id: I04ce4a91f0e4f74253407897c2f3973f7b0a0055
2009-09-20 11:48:16 -07:00
Jaikumar Ganesh
1caa6d111e Add new API for fetching UUIDs using SDP.
Add new API which clients can use to force an SDP query.
The result is broadcast using an intent having the UUIDs.
The intent is broadcast after a timeout, in case of an error.
This timeout is greater than the page timeout.

Change-Id: I61e6db4c05b34c42f679a66987e37e2063a793b6
2009-09-19 11:29:24 -07:00
Jaikumar Ganesh
dd0463aef1 Change handling of remoteUuids.
Use the ParcelUuid instead of UUID

Change-Id:Ie05d65a62e8a4df8182a4c737d46c14142bfec43
2009-09-16 17:05:15 -07:00
Nick Pelly
adbaef234e Add Panasonic KX-TH112 to blacklist.
Change-Id: I12475aff4046796132beb2554cd067bcec712973
2009-09-15 08:24:52 -07:00
Jaikumar Ganesh
482d54bb0c Add black listing of car kits by name. 2009-09-14 14:55:24 -07:00
Jaikumar Ganesh
32d8571f50 Changes for BT 2.1
1) Handle incoming 2.1 pairing requests
2) Modify displaying error messages on bond failures.
3) Add delay while accepting incoming pairing for certain 2.1 devices.
When MITM is on, the link key request might come more than once.
Auto accept with a delay.
4) Handle DisplayPasskey callback for pairing a 2.1 keyboard with
a 2.1 device
2009-09-11 14:12:48 -07:00
Jaikumar Ganesh
5e59ca8ae4 Handle DisconnectRequested message sent by Bluez. 2009-09-11 12:16:19 -07:00
Nick Pelly
005b228cdf API_CHANGE: Cleanup, javadoc and unhide more Bluetooth API.
This is a large batch, and covers:

-- Bluetooth Device Discovery --
BluetoothAdapter.ACTION_DISCOVERY_STARTED
BluetoothAdapter.ACTION_DISCOVERY_FINISHED
BluetoothAdapter.startDiscovery()
BluetoothAdapter.cancelDiscovery()
BluetoothAdapter.isDiscovering()

-- Bluetooth bonding (pairing) --
BluetoothAdapter.getBondedDevices()
BluetoothDevice.ACTION_BOND_STATE_CHANGED
BluetoothDevice.EXTRA_BOND_STATE
BluetoothDevice.EXTRA_PREVIOUS_BOND_STATE
BluetoothDevice.BOND_NONE
BluetoothDevice.BOND_BONDING
BluetoothDevice.BOND_BONDED
BluetoothDevice.getBondState()
BluetoothDevice.createBond()
BluetoothDevice.cancelBondProcess()
BluetoothDevice.removeBond()

-- BluetoothClass --
BluetoothDevice.ACTION_CLASS_CHANGED
BluetoothDevice.EXTRA_CLASS
BluetoothDevice.getBluetoothClass()
BluetoothClass.Service.*
BluetoothClass.Device.Major.*
BluetoothClass.Device.*
BluetoothClass.getDeviceClass()
BluetoothClass.getMajorDeviceClass()
BluetoothClass.hasService()

-- Misc BluetoothDevice --
BluetoothDevice.ACTION_ACL_CONNECTED
BluetoothDevice.ACTION_ACL_DISCONNECTED_REQUESTED
BluetoothDevice.ACTION_ACL_DISCONNECTED
BluetoothDevice.ACTION_DISCOVERED
BluetoothDevice.ACTION_NAME_CHANGED
BluetoothDevice.EXTRA_DEVICE
BluetoothDevice.EXTRA_NAME
BluetoothDevice.EXTRA_RSSI

-- Misc BluetoothAdapter --
BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED
BluetoothAdapter.EXTRA_LOCAL_NAME
BluetoothAdapter.checkBluetoothAddress()

I deprecated BluetoothIntent and moved each intent into the class it relates
to.

Change-Id: I877b1280428ab46278b2bc25668bb44cda22dc36
2009-09-10 18:52:21 -07:00
Nick Pelly
b24e11baac API_CHANGE
Deprecate BluetoothError.java.

I spent a lot of time experimenting with a class BluetoothError to enumerate
the many error codes returned by the Bluetooth API. But at the end of the day
they were never used. The vast majority of method calls only really need a
true/false error value, and often not even that.

Methods which do need more detailed error enumeration (for example, bonding
failures) can have there own enumerated error codes. But there is no need
for a common set of error codes.

Also change the IPC failed warnings in BluetoothA2dp to Log.e. These indicate
a very serious error.

Introduce BluetoothAdapter.ERROR and BluetoothDevice.ERROR as helper sentinel
values.
2009-09-09 10:52:18 -07:00
Nick Pelly
de893f5503 API_CHANGE
Another round of Bluetooth API clean up, javadoc'ing and unhide'ing.

-- Symbols for getting/setting bluetooth state --
BluetoothAdapter.ACTION_STATE_CHANGED
BluetoothAdapter.EXTRA_STATE
BluetoothAdapter.EXTRA_PREVIOUS_STATE
BluetoothAdapter.STATE_OFF
BluetoothAdapter.STATE_TURNING_ON
BluetoothAdapter.STATE_ON
BluetoothAdapter.STATE_TURNING_OFF
BluetoothAdapter.isEnabled()
BluetoothAdapter.getState()
BluetoothAdapter.enable()
BluetoothAdapter.disable()

-- Symbols for getting/setting scan mode --
BluetoothAdapter.ACTION_SCAN_MODE_CHANGED
BluetoothAdapter.EXTRA_SCAN_MODE
BluetoothAdapter.EXTRA_PREVIOUS_SCAN_MODE
BluetoothAdapter.SCAN_MODE_NONE
BluetoothAdapter.SCAN_MODE_CONNECTABLE
BluetoothAdapter.SCAN_MODE_DISCOVERABLE
BluetoothAdapter.getScanMode()
BluetoothAdapter.setScanMode()

-- Symbols for getting address/names --
BluetoothAdapter.getAddress()
BluetoothAdapter.getName()
BluetoothAdapter.setName()
2009-09-09 10:52:02 -07:00
Jaikumar Ganesh
9519ce75f1 Query for all properties if a property change is received and cache is empty. 2009-09-08 21:51:07 -07:00
Lixin Yue
efa1dd716d Add Bluetooth Device trust 2009-09-01 13:58:31 -07:00
Android (Google) Code Review
c91ad28ff9 Merge change 23218 into eclair
* changes:
  Fix property being cleared when DeviceFound signal is received.
2009-08-31 16:52:38 -07:00
Jaikumar Ganesh
efa33676ca Fix property being cleared when DeviceFound signal is received. 2009-08-28 17:49:11 -07:00
Mike LeBeau
e9df3cf79c resolved conflicts for merge of 1e348378 to eclair 2009-08-27 23:54:12 -07:00
Karl Rosaen
590f63433c Revert "Remove third party support for Quick Search Box (aka global search)."
This reverts commit a647b7f29d65a7792cede74284e714b591337992.
2009-08-27 17:42:48 -07:00
Nick Pelly
b015e193b7 Add trailing "\n" to debug output. 2009-08-26 14:11:24 -07:00
Nick Pelly
1eada0d3d6 Add uuids to adb shell dumpsys bluetooth 2009-08-26 10:57:33 -07:00
Nick Pelly
b23d4458a9 Fix authorization check for Audio Source.
Bluez sends the UUID of the local service being accessed in Agent.Authorize,
not the remote service. So check for Audio Source not Audio Sink.

In most cases this was not a problem because Bluez sends us AdvAudioDist UUID
(0x110D) for incoming A2DP connections, which we already check for. This is a
precautionary change.
2009-08-26 10:46:37 -07:00
Jackson Fan
9abcf0982e Use correct UUID to authorize AVRCP 2009-08-24 19:02:58 -07:00
Jean-Baptiste Queru
dd03c6135f resolved conflicts for merge of 081a136d to eclair 2009-08-21 12:59:04 -07:00
Anonymous Coward
081a136d25 Remove third party support for Quick Search Box (aka global search).
- @hides relevant APIs
- removes relevant javadoc
- enforces that only system apps can participate

note: general support is still there, will be easy to reenable when we are ready.
2009-08-21 12:47:14 -07:00
Jaikumar Ganesh
397d8f4f48 Set BondState to Canceled when user cancels pairing. 2009-08-21 11:51:12 -07:00
krosaen
d2d6014f71 NEW API for SearchManager and Activity to 'triggerSearch'.
This is pretty much the same thing as startSearch, except it also launches the
query.  We enforce that this can only be done for the package of the app that is
associated with the search mananger (e.g you can't trigger a contacts search
from anywhere).
2009-08-18 08:56:03 -07:00
Nick Pelly
bd022f423a Bluetooth: API change.
Split BluetoothDevice into BluetoothDevice and BluetoothAdapter.

BluetoothAdapter: Represents the local BT adapter. Operations on the local
                  adapter (start a scan, etc).
BluetoothDevice: Represents a remote BT device. Operations on remote devices
                 (pair, connect, etc).

IBluetoothDevice.aidl -> Bluetooth.aidl
BluetoothDeviceService.java -> BluetoothDeviceService.java

TODO:
Javadoc
2009-08-18 08:24:22 -07:00
Jaikumar Ganesh
9488cbd0b9 Add incoming connections to the cache and change authorization check.
a) Add incoming connections to cache.
b) Some devices like DS970 sends Adv Audio as the UUID for incoming connection.
2009-08-04 10:06:35 -07:00
Android (Google) Code Review
a45c5f07e2 Merge change 9216
* changes:
  Fix UUID typo and allow incoming AVRCP connections.
2009-07-31 10:41:27 -07:00
Jaikumar Ganesh
ade40526c8 Fix UUID typo and allow incoming AVRCP connections. 2009-07-31 10:33:47 -07:00
Android (Google) Code Review
bb2e26c57c am 67fb5728: Merge change 9147 into donut
Merge commit '67fb5728332f7e3f8c11245fb9cb9d1cfe2b5607'

* commit '67fb5728332f7e3f8c11245fb9cb9d1cfe2b5607':
  Fix in-app search shortcut icons
2009-07-30 16:05:59 -07:00
Bjorn Bringert
83dba19a8e Fix in-app search shortcut icons
When the suggstion provider is in a different package from the searchable
activity, the icons stored for shortcuts used the package of the
activity instead of the provider.

Fixes http://b/issue?id=2023993
2009-07-30 13:58:23 +01:00