Commit Graph

177 Commits

Author SHA1 Message Date
Jaikumar Ganesh
1f3856c446 am 495d820c: am ccaebfc9: Don\'t set priority in Bonding state. This was causing A2DP get connected for Car Docks, when user didn\'t select it.
Merge commit '495d820c0124a811b9352b93ce4fe88c716f259d'

* commit '495d820c0124a811b9352b93ce4fe88c716f259d':
  Don't set priority in Bonding state.
2010-01-11 14:23:18 -08:00
Jaikumar Ganesh
ccaebfc942 Don't set priority in Bonding state.
This was causing A2DP get connected for Car Docks, when user didn't select it.

Bug: 2364328
Dr No: Eastham
2010-01-11 14:16:29 -08:00
Eric Laurent
84b42b8368 am d31d7397: am 663ec308: Fix issue 2361949: A2DP suspend parameters set wrongly.
Merge commit 'd31d7397ba26dcd913e96d06f0a8fd593780d629'

* commit 'd31d7397ba26dcd913e96d06f0a8fd593780d629':
  Fix issue 2361949: A2DP suspend parameters set wrongly.
2010-01-08 16:28:21 -08:00
Eric Laurent
663ec30880 Fix issue 2361949: A2DP suspend parameters set wrongly.
Move reset of A2DP suspend state from handleSinkStateChange() in BluetoothA2dpService to
BluetoothA2dp.ACTION_SINK_STATE_CHANGED intent receiver in AudioService.
Previous implementation could cause a false reset of suspend state if a new sink attempted to
connect while A2DP was suspended.
New implementation only resets A2DP suspend state when a new sink is actually connected.
2010-01-08 08:48:18 -08:00
Jaikumar Ganesh
1ee5ceb92d am 2790b20c: am 0b6c6f2c: Merge "Fix media option settings for A2DP." into eclair
Merge commit '2790b20c537b33dbf366436f6d27776148ded490'

* commit '2790b20c537b33dbf366436f6d27776148ded490':
  Fix media option settings for A2DP.
2010-01-07 09:22:04 -08:00
Jaikumar Ganesh
6309689e6c Fix media option settings for A2DP.
Incoming connections move the A2DP state to Connecting
before getting authorized, which messes up the priorities.

Dr No: Eastham
Bug: 2358414
2010-01-06 11:43:10 -08:00
Jeff Sharkey
44303922f1 Watch for "bluetooth" in list of toggleable radios.
Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS is a list of
radios that can be toggled while in airplane mode.  This
change adds logic to BluetoothService to allow enabling
when Settings.System.RADIO_BLUETOOTH appears in that list.

Fixes http://b/2297314
2009-12-22 14:32:15 -08:00
Jaikumar Ganesh
987c415c83 am f5d2eec4: am 11b97c50: Merge change I551ed729 into eclair
Merge commit 'f5d2eec4fd530ac09ce1f8d2e51ea29b5cd12a38'

* commit 'f5d2eec4fd530ac09ce1f8d2e51ea29b5cd12a38':
  Use UNDEFINED priorities when unpaired.
2009-12-21 14:22:47 -08:00
Jaikumar Ganesh
b58938a0ae am 1aa25597: am 87ed10d7: Merge change I577dd1f3 into eclair
Merge commit '1aa2559797d49fa0c6cf7885c9fed5797e42231f'

* commit '1aa2559797d49fa0c6cf7885c9fed5797e42231f':
  Accept incoming connections if no other sink is in NonDisconnecting state.
2009-12-21 14:22:37 -08:00
Android (Google) Code Review
11b97c50e6 Merge change I551ed729 into eclair
* changes:
  Use UNDEFINED priorities when unpaired.
2009-12-21 14:17:15 -08:00
Jaikumar Ganesh
577dd1f3e2 Accept incoming connections if no other sink is in NonDisconnecting state.
Bluez sends SINK_STATE_CHANGE before onAgentAuthorize, so
we may be already in CONNECTING state. This will happen with
some A2DP kits which don't like us connecting and thus we will
never be able to connect to them.

Bug:2335345
Dr No: Hiroshi
2009-12-17 15:08:48 -08:00
Jaikumar Ganesh
c0e32f1243 Add a callback for the ConnectSink Call.
This takes care of the conditions where the bluez audio drivers
are not up and we try to make the call to connect the sink.
This would get rid of the hack in Settings app.
2009-12-16 11:42:06 -08:00
Dianne Hackborn
1c633fc89b Implement API to have new broadcasts replace existing broadcasts.
Use this in various places where it should serve no purpose to deliver
both broadcasts.  This is intended to reduce somewhat the flurry of
broadcasts that we churn through during boot.
2009-12-14 15:03:35 -08:00
Dan Egnor
b7f0367cec Eliminate CrashData and friends.
(CrashData was a custom-marshalled crash-info class used for a server crash
reporting system I am deprecating).  Use ApplicationErrorReport.CrashInfo
instead to report crash details (mostly the stack trace) from RuntimeInfo to
ActivityManagerService, since we're likely to need the crash information in
that form anyway.

Remove the (long-disabled) flags and support for the "Debug" button
in the crash dialog.

Further gut the ICheckinService interface by removing the crash-reporting
APIs (and everything that calls them), plus the synchronous checkin()
method (which has been stubbed out for a while now).

A new dropbox-based crash reporting system is in the works, but not part
of this change.
2009-12-11 13:27:04 -08:00
Jaikumar Ganesh
551ed72940 Use UNDEFINED priorities when unpaired.
For the docks, we can set if a device is preferred or not
before pairing process. This was getting overridden when we pair.
This problem doesn't happen with normal headsets.

Dr No: Eastham
Bug: 2318290
2009-12-11 12:00:31 -08:00
Jaikumar Ganesh
368c332ddc am f6e32e72: Merge change Icced7a09 into eclair
Merge commit 'f6e32e72a902d9a309410bc5306a539ea850159f' into eclair-mr2

* commit 'f6e32e72a902d9a309410bc5306a539ea850159f':
  Maintain a list of all Bluetooth docks.
2009-12-10 17:40:53 -08:00
Jaikumar Ganesh
6e9c443460 Maintain a list of all Bluetooth docks.
With this change, isBluetoothDock API can be used anytime and is not in tied
to dock state. The Dock State is a sticky intent so users
can query for the dock state.

Dr No: Eastham
Bug: 2133530
2009-12-09 16:10:38 -08:00
Jaikumar Ganesh
b08170ad7e am ae88e2d1: Merge change I38227501 into eclair
Merge commit 'ae88e2d130a4d69bdf7ddc58f6ae512ea63087ff' into eclair-mr2

* commit 'ae88e2d130a4d69bdf7ddc58f6ae512ea63087ff':
  Add API to get Active Sinks.
2009-12-07 15:53:02 -08:00
Jaikumar Ganesh
b16c4f7dd9 Add API to get Active Sinks.
Allow incoming connections only when there are no active sinks.

Dr No: Eastham
Bug: 2133530
2009-12-07 15:20:31 -08:00
Android (Google) Code Review
6dba0680cd Merge change I9589f9c2 into eclair-mr2
* changes:
  Move android.server.search.SearchableInfo to android.app
2009-12-05 10:21:01 -08:00
Bjorn Bringert
2126aac7f9 Move android.server.search.SearchableInfo to android.app
We need to expose SearchableInfo in the SDK in order to unbundle
Quick Search Box. Since the android.server.search package is
hidden, I'm moving SearchableInfo to android.app, where
SearchManager lives.

This change doesn't actually expose SearchableInfo. I'll do
that in a separate change to keep the change that
api-council needs to review small.

This is part of the fix for: http://b/issue?id=2270838

Change-Id: I9589f9c2c11d36c958beedff8245fe0c3319c6ba
2009-12-04 12:52:51 +00:00
Jaikumar Ganesh
11a2853e01 am 8c411fb1: Merge change I79420b02 into eclair
Merge commit '8c411fb13923d1fa28fcd98452bf3d17b8b1a338' into eclair-mr2

* commit '8c411fb13923d1fa28fcd98452bf3d17b8b1a338':
  Add support for Car Dock.
2009-12-03 12:01:38 -08:00
Jaikumar Ganesh
3fbf7b62bb Add support for Car Dock.
Dr No: Eastham
Bug: 2133530
2009-12-03 11:35:37 -08:00
Jaikumar Ganesh
721361f1a7 Add a new priority for Auto Connection of A2DP. DO NOT MERGE.
1. PRIORITY_OFF is when user unchecks A2DP connection profile box.
2. By default, when you bond, it will be PRIORITY_ON.
3. When the profile gets connected, the priority gets set to
   PRIORITY_AUTO_CONNECT. This means that we will connect
   automatically to this profile.
4. When the user disconnects, we downgrade the priority to PRIORITY_ON,
   which means we won't reconnect automatically.

a) We need to make a similar change to Handsfree profile.
b) We need to rework the profile management design and code which
  will fix the 6 second timer that we have for A2DP reconnection.

Add AUTO_CONNECT priority for Headset profile.
Also, don't set priority to ON while disconnecting.
This logic has been pushed up to the Settings app.

Dr No: Eastham
Bug: 2133530
2009-12-02 15:39:59 -08:00
Android (Google) Code Review
03cb1f15ca Merge change I249345ee into eclair-mr2
* changes:
  Add AUTO_CONNECT priority for Headset profile.
2009-12-01 12:45:49 -08:00
Jaikumar Ganesh
5f24a24004 Register Handsfree profile before headset profile. DO NOT MERGE.
There is a delay between registering the two profiles,
and handsfree profile is a superset of the headset profile.
So some devices do an SDP and get the headset profile record
before we have registered the handsfree profile.

a) We can reject all incoming connections till all profiles are
registered, but then this would mean we connect later in some cases.
Registering profiles in this order seems fine to me.

Note: There is a also the need to fix forking sdptool to register
profiles, which would obliviate the need to wait 500 msecs between
profile registrations.

Bug: 2293792
Dr No: Eastham
2009-11-30 16:37:18 -08:00
Jaikumar Ganesh
77b4ad0e49 Register Handsfree profile before headset profile.
There is a delay between registering the two profiles,
and handsfree profile is a superset of the headset profile.
So some devices do an SDP and get the headset profile record
before we have registered the handsfree profile.

a) We can reject all incoming connections till all profiles are
registered, but then this would mean we connect later in some cases.
Registering profiles in this order seems fine to me.

Note: There is a also the need to fix forking sdptool to register
profiles, which would obliviate the need to wait 500 msecs between
profile registrations.
2009-11-30 14:17:30 -08:00
Jaikumar Ganesh
249345ee5a Add AUTO_CONNECT priority for Headset profile.
Also, don't set priority to ON while disconnecting.
This logic has been pushed up to the Settings app.
2009-11-30 14:06:59 -08:00
Jaikumar Ganesh
aafff8a069 Add a new priority for Auto Connection of A2DP.
1. PRIORITY_OFF is when user unchecks A2DP connection profile box.
2. By default, when you bond, it will be PRIORITY_ON.
3. When the profile gets connected, the priority gets set to
   PRIORITY_AUTO_CONNECT. This means that we will connect
   automatically to this profile.
4. When the user disconnects, we downgrade the priority to PRIORITY_ON,
   which means we won't reconnect automatically.

a) We need to make a similar change to Handsfree profile.
b) We need to rework the profile management design and code which
  will fix the 6 second timer that we have for A2DP reconnection.
2009-11-24 15:05:37 -08:00
Jaikumar Ganesh
8631e55425 am ad431ad8: Merge change Ia3acc2ee into eclair
Merge commit 'ad431ad8631d8b19b04193ff1f89a955a7643c60' into eclair-mr2

* commit 'ad431ad8631d8b19b04193ff1f89a955a7643c60':
  Fix pairings lost on reboot.
2009-11-22 22:02:17 -08:00
Jaikumar Ganesh
b148bc844e Fix pairings lost on reboot.
Bug:2277376
Dr No:Eastham
2009-11-20 13:50:26 -08:00
Jaikumar Ganesh
4fea2919ab am 660282dc: Merge change I706fe6b0 into eclair
Merge commit '660282dc3e81784224945be0787a9e2d4276de8c' into eclair-mr2

* commit '660282dc3e81784224945be0787a9e2d4276de8c':
  Check if Bluetooth is enabled before making any calls down.
2009-11-17 17:35:25 -08:00
Jaikumar Ganesh
8c9dd7d8b9 Check if Bluetooth is enabled before making any calls down.
This was causing problems when apps were making calls, without
turning on BT first.

Bug: 2234918
Dr No: Eastham
2009-11-16 17:29:27 -08:00
Jaikumar Ganesh
48956ad3fa am 3c58d279: Merge change I738ed802 into eclair
Merge commit '3c58d279abed1da56b0ece74ded5854c509a42a4' into eclair-mr2

* commit '3c58d279abed1da56b0ece74ded5854c509a42a4':
  Fix BMW and Audi auto pairing lists.
2009-11-11 23:31:31 -08:00
Jaikumar Ganesh
738ed80262 Fix BMW and Audi auto pairing lists.
Bug no:2256558
Dr No:Eastham
2009-11-11 23:12:04 -08:00
Jaikumar Ganesh
4e552b606c am 013b0e53: Merge change I143ea844 into eclair
Merge commit '013b0e531a4318b3e78c9bd0e077d3632fce2280' into eclair-mr2

* commit '013b0e531a4318b3e78c9bd0e077d3632fce2280':
  Add BMW and Audi to Auto Pairing black list.
2009-11-11 22:49:45 -08:00
Jaikumar Ganesh
9b26f3fae4 Add BMW and Audi to Auto Pairing black list.
Bug: 2256558
Dr No: Eastham
2009-11-11 22:43:32 -08:00
Jaikumar Ganesh
f53f86a743 am 8de4e0ad: Merge change I21d0dca3 into eclair
Merge commit '8de4e0ad8ff39d9a397cd80de5155d4c09ef98fd' into eclair-mr2

* commit '8de4e0ad8ff39d9a397cd80de5155d4c09ef98fd':
  Add BMW kits made by Motorola PCS to autoblack list for Bluetooth.
2009-11-05 15:39:40 -08:00
Jaikumar Ganesh
21d0dca33e Add BMW kits made by Motorola PCS to autoblack list for Bluetooth.
This may force some Motorola headsets to thow up the Pairing Request.

Bug: 2210365
Dr No: Eastham
2009-11-05 11:30:18 -08:00
Eric Laurent
a47d153647 do not merge - Fix for issue 2184627 cherry picked from eclair-mr2
Bluetooth A2DP suspend-resume improvements.

This change will reduce the occurence rate of A2DP sink suspend resume failures observed in issues 2184627, 2181005 and possibly 2189628.

More robust suspend/resume logic.
Use only the suspend request to audio hardware to avoid having two concurent suspend resume control paths.
2009-10-26 09:17:10 -07:00
Eric Laurent
374d5bc0b3 Bluetooth A2DP suspend-resume improvements.
This change will reduce the occurence rate of A2DP sink suspend resume failures observed in issues 2184627, 2181005 and possibly 2189628.

More robust suspend/resume logic.
Use only the suspend request to audio hardware to avoid having two concurent suspend resume control paths.
2009-10-16 15:10:09 -07:00
Nick Pelly
77df9d6e0c am d301c904: Merge change I305c181c into eclair
Merge commit 'd301c90446644f63cda9b9263f83332676065bb4' into eclair-mr2

* commit 'd301c90446644f63cda9b9263f83332676065bb4':
  Delay 500ms between each registering each SDP record using sdptool.
2009-10-12 11:11:38 -07:00
Nick Pelly
bc1fc05c1b Delay 500ms between each registering each SDP record using sdptool.
This is to workaround an issue where SDP records will fail to register using
sdptool. When we run SystemService.start() it forks sdptool, so if we do this
four times in a row these forked processes can run in parallel, and one or
more of them fails. There is probably some thready safety issue in sdptool
or Bluez that makes it unsafe to run sdptool in parallel.

As a workaround, delay 500ms between each run of sdptool to register SDP
records when starting Bluetooth.

Before this fix it was easy to reproduce problems with service record
registration. If you turn BT off/on multiple times you can see that sometimes
one or more service records are missing. Repro rate is about 20% in my tests.
Result is that remote devices cannot connect to the missing service.

After this fix I am unable to reproduce any missing SDP records, after 30+
cycles of BT on/off. Motorola BT team also ran stress tests overnight with this
fix and were unable to reproduce the missing SDP records.

This is a low risk fix. It does delay some records from being registered
by an additional 1.5 seconds (on top of the 3 second delay we already had),
so if you try and very quickly connect a BT service after turning BT on it
won't work the first time.

Do not merge. (I will use a less hacky fix for MR2/Master)

Change-Id: I305c181c3194e8ce25e3825320cc2e1ef6d3d3cc
Bug: 2180800
DrNo: eastham
Joke: Why can't you play cards in the jungle? Because there's too many cheetas!
2009-10-12 10:26:25 -07:00
Nick Pelly
db7ae10d6b Remove STOPSHIP BT logging.
Do not merge.

Change-Id: I428bc0fc67030f24112f2e9c865824dfaea4897d
DrNo: eastham
Bug: 2089423
Joke: Why was Tigger looking in the toilet? To find Pooh
2009-10-09 01:35:11 +02:00
Nick Pelly
e6ee3be1c2 BT API security audit: fix a couple of permission mistakes.
Make functions that are meant to be BLUETOOTH_ADMIN really
BLUETOOTH_ADMIN.

Add some missing javadoc for permissions.

The only functional change here is the BLUETOOTH->BLUETOOTH_ADMIN
changes. This is super safe because every system app that uses BT
has both permissions.

Change-Id: Iddc61f9fd5d81fe0171358665a0fa52f2fa02871
DrNo: eastham
Joke: How do you catch a rabbit? Hide behind a tree and make carrott noises.
2009-10-09 01:35:10 +02:00
Android (Google) Code Review
ff94720b8b Merge change I80a6a229 into eclair
* changes:
  Fix issue 2174002: After rejecting Call when device ringtone is mute and playing music, audio is not transfered to BT device.
2009-10-08 17:36:18 -04:00
Eric Laurent
80a6a229b3 Fix issue 2174002: After rejecting Call when device ringtone is mute and playing music, audio is not transfered to BT device.
Added a workarouond to request the A2DP output standby directly to audio hardware when the sink is suspended as it seems that the suspend request often fails.

Also take into account resume requests received while a suspend request is pending.
2009-10-08 12:03:51 -07:00
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