1482 Commits

Author SHA1 Message Date
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
Mike Lockwood
9841818b9a AudioService: Fix problem handling USB audio disconnect
Also broadcast ACTION_AUDIO_BECOMING_NOISY on USB audio disconnect

Change-Id: I46dfcc744df880066aea6bf651334a081c14af0f
Signed-off-by: Mike Lockwood <lockwood@google.com>
2012-05-10 17:49:30 -07:00
Eric Laurent
2448201852 AudioService: fix various volume issues.
Fix various issues in adjustStreamVolume() related to stream type aliases
using different ranges.

Always Update last audible index on all streams sharing the same alias.

Add check on setRingerMode() to prevent setting mode to VIBRATE when no
vibrator is present.

Issue 6455831.

Change-Id: Id110e05d2f16e208e1e398922617bf31967b62db
2012-05-10 17:20:26 -07:00
Eric Laurent
24938df9e4 Merge "AudioService: synchronized access to volume index" into jb-dev 2012-05-10 15:20:08 -07:00
Eric Laurent
3172d5e3e7 AudioService: synchronized access to volume index
Add synchronization to prevent concurrent accesses to
volume indexes HashMap in VolumeStreamState.

Use ConcurrentHashMap for VolumeStreamState mIndex and
mLastAudibleIndex.

Issue 6421841.

Change-Id: I6dee805a79aa5e2cd0ba4072014a2fcdda4ed507
2012-05-10 14:55:20 -07:00
Jean-Michel Trivi
08fb063f07 Add compression level key for FLAC encoding
Change-Id: Ic4c32694841b6f37ca44061d14bb81fc267696cc
2012-05-09 19:16:14 -07:00
Andreas Huber
f86374adec Remove SEEK_CLOSEST constant from MediaExtractor, its implementation makes no
sense for the java API.

Change-Id: I3f2eabb5ca5ffb6c1f03141bfd303310111e8774
related-to-bug: 6276111
2012-05-09 11:32:51 -07:00
Insun Kang
8902097bb6 Improve notifying TimedText by reducing marshall/unmarshalling.
o Removes mParcel from TimedText class.
o Converts native parcel into java parcel object directly without
copying to an intermediate byte array.
o JNIMediaPlayerListener::notify checks for Java exceptions, logs them,
and clears the exception state.

related-to-bug: 6405934

Change-Id: I8b82d3cd5b9b3ef8cad27e805202a0e445a88a45
2012-05-09 20:14:09 +09:00
James Dong
3b5fdf510b Merge "Fix: Missed parcel recycling in MediaPlayer." into jb-dev 2012-05-08 18:29:44 -07:00
Eric Laurent
bffc3d1bd3 Silent and Vibrate mode clean up
Clean up related to new Vibration policy.
The vibrate behavior is now only derived from:
 - presence of a vibrator on the device
 - current ringer mode selected: NORMAL, VIBRATE or SILENT
If no vibrator is present the ringer mode can only be NORMAL or SILENT.

The control of ringer mode via volume keys when volume keys control the "master"
stream type (RING on phones, MUSIC on tablets) is as follows:
If a vibrator is present:
 VOL- and volume equals 1: NORMAL => VIBRATE
 VOL- and volume equals 0 and not continuous press: VIBRATE => SILENT
 VOL+ and in SILENT mode: SILENT => VIBRATE
 VOL+ and in VIBRATE mode: VIBRATE => NORMAL, volume = 1
If no vibrator is present:
 VOL- and volume equals 0 and not continuous press: NORMAL => SILENT
 VOL+ and in SILENT mode: SILENT => NORMAL, volume = 0

VIBRATE_ON and VIBRATE_IN_SILENT settings are not stored/retreived any more.

AudioService checks and corrects ringer mode and stream volumes if necessary when reading from
DB at boot time.

Also:
 Added dump for stream volumes in AudioService.
 Added device names missing in AudioSystem for USB accessory and USB device.

Issue: 6036529
Issue: 6414950
Issue: 6448163

Change-Id: I77fb821ec63e4e566320cac2701b4ac466e86aef
2012-05-08 15:10:37 -07:00
Andreas Huber
8aa735f71e Clarification of MediaCodec behaviour when codec specific data is included
in the format passed to configure().

Change-Id: I150f52e8092c0f7d897891f02ba6b1d89b6230f4
related-to-bug: 6364139
2012-05-08 11:33:12 -07:00
Jeff Sharkey
1d8e5c5880 Handle silent ringtone, title without permission.
Silent ringtones have a valid Uri, but isn't openable by MediaPlayer,
so treat as no-op playback instead of throwing.  Also handle missing
permissions when resolving title.

Bug: 6448074, 6447538
Change-Id: I656675d7fc2e78a6ba05824e13bdd43193fcfdf2
2012-05-07 13:30:10 -07:00
Insun Kang
be0ea968bf Fix: Missed parcel recycling in MediaPlayer.
Change-Id: I2c99f771b33bf627af10e8baea455181558360e6
related-to-bug: 6405934
2012-05-07 11:31:18 +09:00
Andreas Huber
c52c957c45 Merge "Various changes to Media* APIs requested by the api council." into jb-dev 2012-05-04 08:53:23 -07:00
Andreas Huber
60d610bf10 Various changes to Media* APIs requested by the api council.
Change-Id: Iec2f50c99cf5f00a442737231361334e9ab46340
related-to-bug: 6432753
2012-05-03 16:02:29 -07:00
Jean-Michel Trivi
f26f01784e Make AudioService aware of device orientation changes
If the "ro.audio.monitorOrientation" system property is
 defined and true, monitor device configuration changes
 and see if the device orientation changed. If it did,
 set the "orientation" audio system parameter to one
 of "landscape", "portrait", "square" or "undefined".
Set orientation when starting AudioService, and
 when media server restarts.

Change-Id: Idce548f93abf3aab30149e5952daaa7051630232
2012-05-02 11:20:22 -07:00
Eric Laurent
f3afe15754 Merge "AudioManager: deprecate vibrate settings" into jb-dev 2012-05-01 16:29:39 -07:00
Eric Laurent
cd1cd73bae AudioManager: deprecate vibrate settings
Deprecate methods, intent and constants related to vibrate
settings management: getVibrateSetting(), setVibrateSetting(),
shouldVibrate() ...

According to new vibrate/notification policy, applications should
maintain their own vibrate settings.

Issue 6036529.

Change-Id: I99bcef2c5f602131f1d9b0222f7fb39f3bbef823
2012-05-01 16:26:04 -07:00
James Dong
cb6662ac53 Merge "Add video scaling mode support with a new public method in MediaPlayer.java class" into jb-dev 2012-05-01 13:34:28 -07:00
Andreas Huber
48dc91b514 Make java constants consistent with native counterparts.
Change-Id: I481dfc18c170b4c60682ef1b38b57e10fb73d004
2012-05-01 12:27:26 -07:00
James Dong
454014e55f Add video scaling mode support with a new public method in MediaPlayer.java class
o related-to-bug: 5454345

Change-Id: I379b679eb6dd87f47f87a58791a5d0c7251b3a74
2012-05-01 12:22:35 -07:00
Eric Laurent
94affdd80e Merge "fix unmute from volume panel on tablets" into jb-dev 2012-05-01 10:47:57 -07:00
Eric Laurent
f740664cd8 fix unmute from volume panel on tablets
Changing STREAM_MUSIC from volume panel on tablets should exit silent
mode as does changing STREAM_RING on phones.

Issue 5970208.

Change-Id: Ia8ed62033da07a5d4dfcfa84b0b47b27414bdd9a
2012-05-01 10:05:21 -07:00
Jean-Michel Trivi
8ccfbdddab Merge "Optimize how AudioService receives media button events" into jb-dev 2012-05-01 08:57:18 -07:00
Jean-Michel Trivi
c68022258e Optimize how AudioService receives media button events
AudioService maintains a stack of registered media button event
  receivers.
This change modifies the broadcasters of ACTION_MEDIA_BUTTON intents
  let AudioService directly handle the corresponding key event instead
  of trapping the intent sent by PhoneWindowManager, KeyguardViewBase
  and PhoneFallbackEventHandler.
Because the key event may be sent through a PendingIntent,
  AudioService now also implements the OnFinished interface to be
  notified when the event was consumed so it can release the wake
  lock held if it was held when the key event needed to be sent
  (see where PassHeadsetKey was instanciated in PhoneWindowManager).

Change-Id: I2e8614df94af9d54edbf714ef443cc372d21827a
2012-04-30 17:46:19 -07:00
Andreas Huber
b12a539069 New API to set the video rendering mode on a MediaCodec instance.
Change-Id: I6d765bb4cab7bcf29f09364293c24e8a6930078b
related-to-bug: 6364139
2012-04-30 14:46:22 -07:00
Dave Burke
ec3f31f621 Added support for HE-AAC recording.
Not unhiding HE-AACv2 since that requires stereo mics.

Bug: 6275957

Change-Id: I953a6d21e615c8fd23f9390e3c86d63089f5fb75
2012-04-30 09:24:01 -07:00
James Dong
6d6f233a62 Merge "Unhide APIs for timed text and multiple audio track switch APIs" into jb-dev 2012-04-27 17:49:28 -07:00
James Dong
7a9734d769 Unhide APIs for timed text and multiple audio track switch APIs
o made all the member variables in helper classes for TimedText to be public and final
  since they are read-only
o removed Text and TextPos helper classes
o added two public methods in TimedText class: getText() and getBounds()
o cleaned up the javadoc of related methods in MediaPlayer.java and TimedText.java classes
o make the inner classes of TimedText static and final
o change invoke and let it throw RuntimeException on failure (thus a test class needs to be
  modified also).

o related-to-bug: 6110705,5542712

Change-Id: Ia1dd1fd5eb8e9fd1b61c6c0d67405edb627a3002
2012-04-27 15:48:46 -07:00