1510 Commits

Author SHA1 Message Date
Adam Powell
4ee1f55ce0 Restrict MediaRouter selection
Actually restrict the programmatic selection of routes by
type. (Oops.)

Change-Id: I91e837f7ecbcddb626c664fb470e8296d563498d
2012-06-18 11:52:17 -07:00
Adam Powell
4599696591 Volume control in MediaRouter dialogs
MediaRouter dialogs now intercept the volume keys for altering the
current volume. The status icon indicates if the slider/buttons are
currently controlling the local device volume or a remote device's
volume.

Group volume for user routes is handled by using the
RemoteControlClient supplied by the first route in the group.

Change-Id: I40a0d054847ed5acce7a4c3b669487841b4dca15
2012-06-16 17:21:57 -07:00
Adam Powell
39d5c61725 Make MediaRouter UI more robust around route count changes
Improve the API around ActionProvider visibility overriding. Allow the
application to notify whatever is hosting the ActionProvider that
visibility has changed in a way that is friendly to alternate support
library-style reimplementations of MenuItem.

Allow MediaRouter.Callback implementations to add or remove themselves
or other Callbacks during dispatch of callback events.

Make MediaRouteActionProvider track the visibility of corresponding
menu items more accurately.

Change-Id: Ic7ddb6a87c3637904750d2661e4a9fa323b09ea0
2012-06-16 14:49:13 -07:00
Adam Powell
130b4572d1 ActionProvider API update
* Add ActionProvider#overridesItemVisibility and isVisible.
  These methods allow an ActionProvider to override the
  visibility of a MenuItem that it is bound to. If a MenuItem
  has been explicitly hidden by the application, it will not
  be visible.

* Change MediaRouteActionProvider to not require a MediaRouter
  callback, to avoid extra lifecycle management headaches.

Change-Id: I606fa98b3a6a3e60a953dd024274f9bf9c67acdd
2012-06-15 20:19:29 -07:00
Dianne Hackborn
87959cdd85 Merge "Add new callback for MediaRouter to found out about device changes." into jb-dev 2012-06-15 14:10:42 -07:00
Eric Laurent
c4f4b0f0a4 Merge "AudioManager: back to old setBluetoothA2dpOn()" into jb-dev 2012-06-15 14:01:49 -07:00
Dianne Hackborn
632ca417f0 Add new callback for MediaRouter to found out about device changes.
The AudioService now has an API to call to get the currently
connected devices, and later reports of changes in connection
state.  The information includes the name of the bluetooth
device if one is connected for display to the user, and states
for all of the pluggable devices.  No longer requires a Bluetooth
permission to keep the routes updated.

Change-Id: I81ca421c60592fbc1592477d59bf1c9d1b64954a
2012-06-15 13:15:35 -07:00
Eric Laurent
242b33870b AudioManager: back to old setBluetoothA2dpOn()
Come back to old versions of setBluetoothA2dpOn() and isBluetoothA2dpOn().

MediaRouter will call methods on IAudioService directly.

Change-Id: I18f0a3106bad78715ed11a6b7b4ec1d656cdae41
2012-06-15 11:48:50 -07:00
Adam Powell
b5e2af5919 Update MediaRouteChooserDialog grouping UI
Move UserRouteInfo tag support to RouteInfo

Change-Id: Ia753924f8613462d5f74736be93a8d748689eef1
2012-06-15 00:11:34 -07:00
Adam Powell
0d03c042f9 API updates for MediaRouter
* Accept a Context when fetching the names of routes and
  categories. This lets string resources resolve at time of access
  with the correct configuration. The older versions remain available
  that will use the static resources from the application. (There are
  enough cases where applications will populate this from external
  data that requiring it each time even when it was not initialized
  from a resource doesn't seem reasonable.)

* Remove the ability for apps to programmatically select non-user
  routes.

* Make MediaRouter.Callback an abstract class instead of an interface.
  This will make further extensions easier to keep compatible in the
  future.

Change-Id: If981c511dfbdfaf41ef0d1cfe4a377fc14bb5600
2012-06-14 16:16:31 -07:00
Adam Powell
d6d0bddee3 Support route grouping in the MediaRouter dialog UI.
Change-Id: Idcae12cedfb7ca13950e7fa45441fba2029a9f68
2012-06-13 23:27:09 -07:00
Adam Powell
70e11e50ee MediaRouter dialog
Add the dialog behavior for MediaRouteActionProvider/MediaRouteButton.

Still TODO:

* Switch audio icon based on source; speaker/bt/user

* Rig up volume slider

* Rig up item icons

* Rig up group button for groupable categories

* Make grouping work

Change-Id: I3f992516b184d5ae940ddb7bbb7f94ff58914589
2012-06-13 11:42:10 -07:00
Adam Powell
579ec3086c Merge "MediaRouter work" into jb-dev 2012-06-12 12:04:24 -07:00
Adam Powell
b35c445f34 MediaRouter work
Fix a bug where MediaRouter would crash on creation

Add click listener for app-supplied extended settings on the route
selection dialog.

Change-Id: I2991db1720b5c574148e250526984592f4dc3c44
2012-06-12 11:26:39 -07:00
Eric Laurent
dcf33b7315 Merge "Made IAudioService.setBluetoothA2dpOn() not oneway" into jb-dev 2012-06-12 11:10:33 -07:00
Adam Powell
71c69897ad Fix docs
Change-Id: If0215c02abf419d14f28574b751c9dfc2f27bcbe
2012-06-11 20:12:56 -07:00
Adam Powell
ae20ae1a8a More MediaRouter features.
Add RemoteControlClient to user routes. This will allow the UI layered
on top to access info about the remote volume channel associated with
a user route.

Add icons for user routes and route groups.

Change-Id: I438aa60fc8c93f878ec7638897225738155f0746
2012-06-11 19:28:48 -07:00
Eric Laurent
4ab22bb7d0 Made IAudioService.setBluetoothA2dpOn() not oneway
IAudioService.setBluetoothA2dpOn() should not be one way as
IAudioService.isBluetoothA2dpOn() will return inconsistent results
if called just after.

Bug 6572651.

Change-Id: Ib03ae49e6c0041b1b37dcac9e198cd93a4794030
2012-06-11 17:10:02 -07:00
Dianne Hackborn
b58b8f832d Rework media router to be per-context with global process state.
Change-Id: Ic1cb6f13e691d22783bcdafae85b7c75aec0a66f
2012-06-11 15:41:08 -07:00
Adam Powell
d0d2cda9d4 Further work on MediaRouter
Remove volume control and tracking. This will be handled by extensions
to existing audio and media APIs for now.

Tweak/refine other aspects of the API. Pass the router to callbacks for
easier future-proofing. Add group/ungroup callback methods.

Change-Id: Ib69e76e5f46280a9002b545bcf4cbc7b839844ee
2012-06-11 13:17:44 -07:00
Keun young Park
fca9ff3871 Merge "rename exif to exif_jni due to refactoring in external/jhead" into jb-dev 2012-06-07 16:19:02 -07:00
Jean-Michel Trivi
6a5f9f6ddb Merge "Configuration for lock and UI sound levels" into jb-dev 2012-06-07 15:28:51 -07:00
Keun young Park
bb52c49c9a rename exif to exif_jni due to refactoring in external/jhead
- also pull libexif_jni from media_jni

Bug: 6623618
Change-Id: I4f06a4614c5fddcf98d95caff16a2c40f345dade
2012-06-07 10:36:41 -07:00
Marco Nelissen
81e85bbf67 Ensure we compute display name when needed
Since the media scanner no longer uses an in memory cache, it always
found an entry for files inserted via MTP, which made it follow a
different code path than before, which in turn made the media
provider skip computing the display name column.
By clearing the row id in the media scanner when handling an mtp
request, we steer it back to the correct code path.
b/6297105
b/6525450

Change-Id: I624522b176a0057d246ce3040598af255b00a141
2012-06-06 13:59:24 -07:00
Jean-Michel Trivi
e12c39bb9c Always queue A2DP connection state message with wakelock held
Messages for changes to A2DP connection state are intended to be
 queued in AudioService after acquiring a wake lock, which is
 released after the message has been handled.
This was correctly done for connection messages when the system
 is up and running, but wasn't when the BluetoothProfile service
 listener gets an onServiceConnected() event, which is the case
 the the device boots.
This change correctly uses the queueMsgUnderWakeLock() method
 whenever a MSG_SET_A2DP_CONNECTION_STATE is to be sent.

Bug 6616292

Change-Id: Ie337a4641a89c522e2d233bccaac4e08ce324117
2012-06-06 11:33:48 -07:00
Adam Powell
690ffb4e1f More fun with MediaRouter
Add action provider, button, and styles. Extend ActionProvider to
allow for getting references to MenuItem instances.

Implement toggle mode for the MediaRouteButton/ActionProvider. Dialog
selection yet to come.

Change-Id: Ibe3188570f503bbf8dd00cf154663435656a7171
2012-06-05 19:15:57 -07:00
Jean-Michel Trivi
c55b393efd Configuration for lock and UI sound levels
Define two integers in the platform configuration to
 define the sound level for lock/unlock sounds, and
 UI sound effects.
Use the corresponding value in KeyguardViewMediator for the lock sounds.
Use the corresponding value in AudioService when playing sound effects.

Bug 6448481

Change-Id: Ie238f5eb1645e395412864d93447ac4049f7e54b
2012-06-05 16:58:20 -07:00
Jack Palevich
05c66cc5cc Don't crash when scaling Bitmaps with private Bitmap.Configs
Bug: 6526197
Change-Id: I89f008f90888f0a679274c00293342ab0fb0e28e
2012-06-04 16:15:47 +08:00
Adam Powell
9a1de308ce Add MediaRouter API.
This is just the initial state tracking. Still to go is
actually triggering Bluetooth A2DP correctly and tracking
process state in the system server.

Change-Id: I33031d52799d6e2d7208910da833831085cc3677
2012-06-01 18:19:20 -07:00
Jean-Michel Trivi
2d8dab5a54 Handle wakelocks for device connection intents from AudioService
Now that AudioService handles the device connection intents itself,
 those need to be sent under wakelock.
 The wake lock is acquired when AudioService is notified of the
 device connection, and released when the corresponding message
 has been handled.
This change only covers the device connection messages, and doesn't
 affect the handling of the other AudioService messages.

Bug 6485897

Change-Id: I2d35f5404f097b5adde8af21fd81347bdd5576a6
2012-05-31 08:58:01 -07:00
Eric Laurent
b1fbaaccb6 Send device connection intents from AudioService
AudioService is currently notified of wired headset and A2DP
sink connection states via broadcast intents from WiredAccessoryObserver
and BluetoothA2dpService. This is a problem as there is no guaranty that
AudioService can take actions upon the change before other apps are notified.
For instance, the Play On feature requires the UI to be refreshed when a device
is inserted/removed and we must guaranty that the UI component can read
new A2DP enable state from AudioManager after it receives a device connection state
change intent.

- Added hidden methods to AudioManager so that WiredAccessoryObserver
and BluetoothA2dpService can notify AudioService of device connection directly.
- The wired accessories connection intents are now sent by AudioService.
- The A2DP state change intent is delayed by BluetoothA2DPService when
ACTION_AUDIO_BECOMING_NOISY is sent by AudioService
- ACTION_AUDIO_BECOMING_NOISY intent is not sent when disconnecting A2DP
while a wired headset is present and vice versa.

Bug 6485897.

Change-Id: Ie160b3ee5f451132065530772b868593c90afd94
2012-05-30 14:44:43 -07:00
Bryan Mawhinney
c3a5cf9aab Actually set the video scaling mode :-)
Change-Id: Ia3e77b68a07651861e9be268ab77cac808b3be79
2012-05-27 17:42:46 +01:00
Eric Laurent
90fb2dd673 Merge "AudioManager: restore setBluetoothA2dpOn() method" into jb-dev 2012-05-24 11:39:36 -07:00
Fabrice Di Meglio
0100625bb3 Merge "Fix bug #6522190 MountService should respond to configuration changes ("INTERNAL STORAGE" string should be translated dynamically)" into jb-dev 2012-05-24 10:42:23 -07:00
Fabrice Di Meglio
13fe2a5330 Fix bug #6522190 MountService should respond to configuration changes ("INTERNAL STORAGE" string should be translated dynamically)
- use an ID instead of a String for StorageVolume description
- use this ID for getting the correct localized version of the description string

Change-Id: I30f3080fce2c889be38bfdf9f5121dffcf8a99e8
2012-05-23 16:38:09 -07:00
Marco Nelissen
b4b847866f Handle _ and % in paths
When doing a "like" match on a path, add a second non-like constraint
so that sqlite wildcard characters don't match arbitrary other characters.
b/6501408

Change-Id: I21f9b1c2d8e7c7ef27c0ad5fe24c3e01cd67fb61
2012-05-22 16:30:34 -07:00
Eric Laurent
7847211fb4 AudioManager: restore setBluetoothA2dpOn() method
Remove deprecation on setBluetoothA2dpOn() method so that applications
can override the default audio policy which is to use A2DP
for media whenever connected.

The request is not persistent and the default policy is restored when a
new A2DP i ro wired headset connection occurs.

Bug 6485897.

Change-Id: I2a4b6b6bdba55f7b133e64f86d27c03eb86acfa4
2012-05-22 16:06:21 -07:00
Jean-Michel Trivi
3c2711fc28 Type of search on headset key long press must depend on device state
When the user long presses on the headset key, the type of search
 that will launched must depend on the state of the device. The
 following logic is implemented:
 - screen on and device unlocked: action is ACTION_WEB_SEARCH,
 - device locked or screen off: action is ACTION_VOICE_SEARCH_HANDS_FREE
    with EXTRA_SECURE set to true if the device is securely locked.

Bug 6518222

Change-Id: I318770346b8d83e44dfcd4154bcdb517ea7098b5
2012-05-21 10:59:44 -07:00
Bryan Mawhinney
9de61ae0ed Merge "Fix video scaling mode validity check." into jb-dev 2012-05-17 16:19:30 -07:00
Bryan Mawhinney
79a9cd40f5 Fix video scaling mode validity check.
Change-Id: Ib7adead2758d50cae67741364801e966a82ad5ba
2012-05-18 00:15:56 +01:00
Jeff Brown
ab624c2fd4 Use FLAG_LONG_PRESS for headset long press interactions.
Handle canceled key events correctly and don't synthesize
key events in that case.

Unfortunately, the state machine was confused by some sequences
of key events that it might receive from the input dispatcher
when new activities take focus during a long-press on the headset key.
The audio service may receive a cancel event intended for the old
window, followed by a repeated down and finally an up for the new window.
Simplified this down to just two booleans.

Bug: 6484717
Change-Id: I9587d0a5e282419ef4d7c17665940682aacea96a
2012-05-17 14:00:34 -07:00
Jean-Michel Trivi
0a95ce9ffb Merge "Handle media button events during phone calls and when ringing" into jb-dev 2012-05-17 11:14:56 -07:00
Jean-Michel Trivi
722b808662 Handle media button events during phone calls and when ringing
Add functionality in AudioManager/AudioService to register a
 media button receiver for telephony that, when registered, gets
 priority for media button key events during a phone call or
 when ringing.

Bug 6484717

Change-Id: I0835fc02cb24d06ca59af5a32c3ba0ae93e54442
2012-05-17 10:38:36 -07:00
Marco Nelissen
538d4925b3 Fix .pls playlist parsing
b/6508278

Change-Id: I015ecf3fa599601ba4e9d018be24d0685e153239
2012-05-16 17:10:24 -07:00
Eric Laurent
8c78752f2b Implement new volume display policy.
Whenever a stream type is muted, the progress bar in volume panel
is at 0.
If a stream is muted by ringer mode and does not control ringer mode,
the progress bar is disabled.
Pressing VOL- when in vibrate or silent mode resets the last audible
volume of ringtone stream (music strem on tablets) to 0.

VolumePanel implementation:
 - Always prefer AudioManager APIs over AudioService APIs when available on both.
 - Do not use AudioManager.shouldVibrate() (deprecated).

Change-Id: I57fcb19ada4e8d729b6b41d668496562ebe340c3
2012-05-14 14:13:10 -07:00
Jean-Michel Trivi
d9e587137b Verify AudioTrack only uses a valid multichannel configuration
Enforce the same rules as for HDMI output:
- FL/FR must be present
- paired channels must be used in pairs (e.g. no rear left
   without rear right)

Bug 6392126

Change-Id: I0a39e474dcf509cb7eabd8edd1f0e44852d72b51
2012-05-14 08:49:42 -07:00
Jean-Michel Trivi
2d97a70ff8 Merge "Start voice-based interactions from headsethook key" into jb-dev 2012-05-12 08:06:28 -07:00
James Dong
909c4b855a Merge "Improve notifying TimedText by reducing marshall/unmarshalling." into jb-dev 2012-05-11 16:45:19 -07:00
Jean-Michel Trivi
4294b83927 Start voice-based interactions from headsethook key
Implement the interception of long-press on keys that
 can be used to trigger voice-based interactions (here
 only HEADSETHOOK) only if the long-press hasn't been
 trapped by the foreground application:
 - if the key is not one that is used for voice input, handle
   the event as before.
 - if the key press wasn't long enough, simulate a delayed
   key press.
 - if long press is detected, send
   RecognizerIntent.ACTION_WEB_SEARCH. Long press duration
   is set to 300ms (a typical key press is under 100ms).

Bug 3225090

Change-Id: I5b3adeb91d3c41ccd54d23fdb93d7eaec496eee7
2012-05-10 18:42:31 -07:00
Mike Lockwood
8d8176d41b Merge "AudioService: Fix problem handling USB audio disconnect" into jb-dev 2012-05-10 17:58:47 -07:00