411 Commits

Author SHA1 Message Date
Jean-Michel Trivi
e73131a684 Fix bug 2684341 Don't steal the media button event from the phone
app is the phone is ringing, even in silent mode.

Use the PhoneStateListener to know whether the phone is ringing,
as the mode is not MODE_RINGTONE when ringing in silent mode.

Change-Id: Iede350cecde0b663d50f9b4a57f9a9ef08066c0d
2010-08-09 11:48:20 -07:00
Scott Main
769f9b8980 am 5b86de94: fix doc bugs
Merge commit '5b86de94a163ce4c52ab08a9820f9d78414e1767' into gingerbread

* commit '5b86de94a163ce4c52ab08a9820f9d78414e1767':
  fix doc bugs
2010-08-04 18:02:18 -07:00
Scott Main
5b86de94a1 fix doc bugs
Change-Id: Ic0cec3818fdc7692ea7aa3152ecb444203097157
2010-08-04 17:07:36 -07:00
Andreas Huber
57648e4eec Support for Gtalk video, includes AMR/H.263 assembler and packetization support, extensions to MediaRecorder to stream via RTP over a pair of UDP sockets as well as various fixes to the RTP implementation.
Change-Id: I95b8dd487061add9bade15749e563b01cd99d9a6
2010-08-04 11:49:24 -07:00
Eric Laurent
17cb280e7f NEW_API: Unhide audio effect APIs.
This change unhides all public APIs for controling audio effects exposed
by the following classes:
- AudioEffect
- BassBoost
- EnvironmentalReverb
- Equalizer
- PresetReverb
- Virtualizer
- Visualizer

Also fixes several problems in javadoc.

Change-Id: I541ee4ad0232312ec720545737cbcdb8c9a82597
2010-08-04 08:31:01 -07:00
Eric Laurent
92e847ed8e Audio effects: aligned Equalizer API argument types on OpenSL ES SLEqualizerItf.
Modified types of some arguments and returned values of the Equalizer class from int to short
to match those defined by OpenSL ES SLEqualizerItf interface.

Also fixed a problem with set properties in equalizer engine implementation.

Change-Id: I75894bad0cb67b01c18ca5e22f9687e75ee491b8
2010-07-30 09:12:51 -07:00
Eric Laurent
ca57d1cc89 Audio Effects: added methods to effects java classes to store and load current effect settings in
a single call.

Addional changes:
- Fixed simulator build
- Use effect interface UUIDs from OpenSL ES includes when available
- Added cleanspec rules to remove now obsolete test effect libraries
- Fixed bug in AudioEffect JNI setParameter function.

Change-Id: Ic25ddb135e2cec5a68c181d727321f5ac7a1ab6b
2010-07-27 00:41:31 -07:00
Eric Laurent
7070b36549 Added support for auxiliary audio effects to AudioTrack and MediaPlayer.
Added methods to AudioTrack and MediaPlayer java classes to enable use of
auxiliary audio effects. The effect can be attached and detached by specifying its
ID and the send level controlled.

Change-Id: Ie74ff54a453096a742688476f612ce355543b6f3
2010-07-21 06:28:01 -07:00
Eric Laurent
fd84f97af4 Added JAVA classes to control bass boost, equalizer, reverberation and virtualizer Effects.
Defined the following JAVA classes on top of AudioEffect class to facilitate control
off built-in audio effects with APIs aligned with interfaces defined in OpenSL ES
specification:
- BastBoot.java
- Equalizer.java
- PresetReverb.java
- EnvironmentalReverb.java
- Virtualizer.java

Split reverb API header file in two, one for preset reverb and one for environmental reverb.
Some changes in test reverb to support preset reverb.

Change-Id: Ie0a5ba06002e63dfd6da22cace5568c1e0b76ea1
2010-07-08 15:32:51 -07:00
Eric Laurent
dacabf97c6 Merge "Added Visualizer effect." into gingerbread 2010-07-07 16:23:30 -07:00
Eric Laurent
df9b81ced4 Added Visualizer effect.
The visualizer enables application to retrieve part of the currently playing audio for visualization purpose.
It is not an audio recording interface and only returns partial and low quality audio content as a waveform or
a frequency representation (FFT).

Removed temporary hack made in MediaPlayer for animated wall papers based on audio visualization (snoop() method.

This commit also includes a change in AudioEffect class:
 - the enable()/disable() methods have been replaced bya more standard setEnabled() method.
 - some fixes in javadoc

Change-Id: Id092a1340e9e38dae68646ade7be054e3a36980e
2010-07-07 11:00:28 -07:00
Eric Laurent
c03befe3d6 Fix issue 2811538: System server crash when disconnecting BT headset after using SCO off call.
Problem:
When the bluetooth device is removed, the AudioService clears all active SCO connections
and unlinks from the client application's binder interface death.
The problem is that the unlinking is done even if no more connections are active for a given client,
which throws a runtime exception that is not catched causing the system server to crash.

The fix consists in calling unlinkToDeath() in ScoClient.clearCount() only if the number of
active SCO connections for this client is not 0. The NoSuchElementException exception is also
catched when calling unlinkToDeath()

Change-Id: I7086424301fc63a5666da61c38169349d3e078f4
2010-07-01 16:23:34 -07:00
Eric Laurent
a0c2b53966 Merge "Fix issue 2811538: System server crash when disconnecting BT headset after using SCO off call." into gingerbread 2010-07-01 11:54:00 -07:00
Chih-Chung Chang
09b9005769 Add multiple camera support for in MediaProfiles.
Change-Id: Ie89568a0f5f5fd08ede77e33f9a559215d6bed9a
2010-07-01 10:57:15 +08:00
Eric Laurent
e2dd8c4592 Fix issue 2811538: System server crash when disconnecting BT headset after using SCO off call.
Problem:
When the bluetooth device is removed, the AudioService clears all active SCO connections
and unlinks from the client application's binder interface death.
The problem is that the unlinking is done even if no more connections are active for a given client,
which throws a runtime exception that is not catched causing the system server to crash.

The fix consists in calling unlinkToDeath() in ScoClient.clearCount() only if the number of
active SCO connections for this client is not 0. The NoSuchElementException exception is also
catched when calling unlinkToDeath()

Change-Id: I29a28fcce1a579217cea271956a55778e05d3e37
2010-06-30 19:41:56 -07:00
Eric Laurent
619346f902 Added support for audio sessions in MediaPlayer and AudioTrack.
Audio sessions are used to associate audio effects to particular instances (or groups) of MediaPlayers or AudioTracks.

Change-Id: Ib94eec43241cfcb416590f435ddce7ab39a07640
2010-06-22 17:14:04 -07:00
Eric Laurent
3c652ca5a5 Fix issue 2301630: Mismatch of state occurs when media server is killed while in-call.
Use setParameters() API to indicate to audio HAL that we are restarting the media server after a crash.
The use made by audio HAL implementation of this indication is platform specific.

Change-Id: I085b174fa1474575da0e4d295921079b6b68efb8
2010-06-22 16:53:47 -07:00
Eric Laurent
01f7ac6448 Merge "Issue 2667802: [Audio Effect Framework] AudioEffect base class and JNI." into kraken 2010-06-14 09:02:13 -07:00
Eric Laurent
948235c06e Issue 2667802: [Audio Effect Framework] AudioEffect base class and JNI.
Added AudioEffect C++ class. AudioEffect is the base class for effect specific implementations,
OpenSL ES effect interfaces and audio effect JNI.

Added the AudioEffect JNI and AudioEffect JAVA class. AudioEffect is the base class
to implement more specific JAVA classes to control audio effects from JAVA applications.

Change-Id: If300a1b708f2e6605891261e67bfb4f8330a4624
2010-06-11 06:26:31 -07:00
Andreas Huber
4d61f602bf Switch stagefright's approach to prefetching to the new model. The java MediaPlayer is now notified about rebuffering start/end via info messages.
Change-Id: If8185ba329ce8b6663b1ad39a4efb0ad3be81df2
2010-06-10 15:16:57 -07:00
Jaikumar Ganesh
a8c2514edd Merge "Pass BluetoothDevice to the Bluetooth Headset calls." into kraken 2010-06-07 14:09:49 -07:00
Andreas Huber
a557b24ac4 Initial checkin of mpeg2 transport stream parser for stagefright.
Change-Id: I328ce77404daf7127933b48c9d58ed504fb8fc6f
2010-06-07 13:05:37 -07:00
James Dong
57ad07039a am c40209ac: am 28a92b2e: Merge "Fix a Javadoc to clarify when setAudioStreamType() should be called." into froyo
Merge commit 'c40209ac60a64a7c08b0d0028060d5308fd7a0b8' into kraken

* commit 'c40209ac60a64a7c08b0d0028060d5308fd7a0b8':
  Fix a Javadoc to clarify when setAudioStreamType() should be called.
2010-06-03 11:30:03 -07:00
James Dong
c40209ac60 am 28a92b2e: Merge "Fix a Javadoc to clarify when setAudioStreamType() should be called." into froyo
Merge commit '28a92b2e76a13c18dc23e5239717b122a174182f' into froyo-plus-aosp

* commit '28a92b2e76a13c18dc23e5239717b122a174182f':
  Fix a Javadoc to clarify when setAudioStreamType() should be called.
2010-06-03 11:27:19 -07:00
James Dong
9d96354d70 Fix a Javadoc to clarify when setAudioStreamType() should be called.
bug - 2737926

Change-Id: I8718c3d1a544cf5cb1b7e98b6c24fe0e6d3574ba
2010-06-03 10:37:28 -07:00
Jaikumar Ganesh
740e39be6a Pass BluetoothDevice to the Bluetooth Headset calls.
This is to support multiple headsets at the same time, atleast
at the framework level.

Change-Id: I91d05c6c2828c9a09d00806d5e79f1e9c9c7cf84
2010-06-02 16:03:51 -07:00
Wu-cheng Li
c109190b69 Add support for gps altitude EXIF tags.
Also improve the precision of getLatLong().

Change-Id: Id2c60f0d1d19e9da173b5ec1228f03c2195e189f
2010-05-27 15:59:05 +08:00
Andreas Huber
072f5247ef Support for media extraction from .mkv/.mka Matroska files in stagefright.
Change-Id: I4c26579828ad575523ccf58b0b5cb144046c04ca
related-to-bug: 2483739
2010-05-20 14:56:53 -07:00
Xavier Ducrohet
d9712b69ce am b1235a57: Merge "Hide two audio focus methods." into froyo
Merge commit 'b1235a57a09174179553acecef2370354bdcbf41' into froyo-plus-aosp

* commit 'b1235a57a09174179553acecef2370354bdcbf41':
  Hide two audio focus methods.
2010-05-12 07:50:19 -07:00
Marco Nelissen
bbafdc6403 am 836b2d75: Merge "Don\'t clear the _data column in the audio_meta table, since it isn\'t needed, and causes a sqlite constraint exception. Bug 2671792." into froyo
Merge commit '836b2d75ef86487ecae0ae834ecbab324fd99471' into froyo-plus-aosp

* commit '836b2d75ef86487ecae0ae834ecbab324fd99471':
  Don't clear the _data column in the audio_meta table, since it isn't
2010-05-12 07:50:14 -07:00
Jean-Michel Trivi
0c73adb1de am 3e90c76c: Merge "Update javadoc in android.media.AudioManager to not hide the registerAudioFocusListener() methods." into froyo
Merge commit '3e90c76c12803cd1b116030fd124b7b870d25342' into froyo-plus-aosp

* commit '3e90c76c12803cd1b116030fd124b7b870d25342':
  Update javadoc in android.media.AudioManager to not hide the
2010-05-12 07:49:10 -07:00
Jean-Michel Trivi
ea37d9b489 am aaa01b18: Merge " Fix bug 2670395 and 2599698 When the user selects a "Silent" notification sound, the Uri encoded path is an empty string. Setting this Uri as the data source of the MediaPlayer used to play notifications caused the completion listen
Merge commit 'aaa01b181c0eea4ff6496d446e25e499b12ca14c' into froyo-plus-aosp

* commit 'aaa01b181c0eea4ff6496d446e25e499b12ca14c':
  Fix bug 2670395 and 2599698
2010-05-12 07:48:50 -07:00
Xavier Ducrohet
b1235a57a0 Merge "Hide two audio focus methods." into froyo 2010-05-11 14:48:48 -07:00
Xavier Ducrohet
5f53f0883a Hide two audio focus methods.
Change-Id: I53ddf736892cde8edfaffa7d69dd9c234df52efa
2010-05-11 14:28:38 -07:00
Marco Nelissen
33f49c8377 Don't clear the _data column in the audio_meta table, since it isn't
needed, and causes a sqlite constraint exception.
Bug 2671792.

Change-Id: Ie6e5d0369c3750739fa155e651be4d87c016a41f
2010-05-11 13:09:06 -07:00
Jean-Michel Trivi
46b3a1808a Update javadoc in android.media.AudioManager to not hide the
registerAudioFocusListener() methods.

Change-Id: I8df37bd89df6f492aeb70fa636200552140578f9
2010-05-11 11:22:54 -07:00
Jean-Michel Trivi
392a2bbb52 Fix bug 2670395 and 2599698
When the user selects a "Silent" notification sound, the Uri encoded
    path is an empty string. Setting this Uri as the data source of the
    MediaPlayer used to play notifications caused the completion listener
    to not be called, which with the AudioFocus logic causes the Music
    app to pause and never resume. The NotificationPlayer modifications
    cause the MediaPlayer for the notification to only request audio
    focus when the data source is not empty.
    The audio focus code in AudioService is defensively synchronized
    against a unique lock, and the exception observed in bug 2670395
    is explicitely caught in case another edge case wasn't caught by
    this fix.
    The AudioFocus handling in AudioManager is modified so only the
    requestAudioFocus and abandonAudioFocus methods are meant to be
    used, as registerAudioFocusListener and unregisterAudioFocusListener
    provided no additional functionality over the request/abandon
    methods. abandonAudioFocus() also removes the listener from the
    map in AudioManager since after abandonning focus, the listener
    would no longer be called.

Change-Id: I3b553ee8a8163c25e01117d7e5479dd5fdfa7c6b
2010-05-11 09:20:49 -07:00
The Android Open Source Project
c8652199d1 merge from open-source master
Change-Id: I20fa79289d84a892def9e7f6d6e7026d9de48010
2010-04-28 15:50:56 -07:00
hugh kennedy
c6f8ea4cf2 speling fix
Change-Id: Ia9db6e1c5d1cd31fd028d551cc357a76049ce137
2010-04-28 15:04:10 -04:00
Jean-Michel Trivi
a847ba4080 Fix bug 2619062 Music is routed to Phone speaker, though it is
connected to A2DP media profile

When the phone is docked and using the dock A2DP, and the user
connects another A2DP device, make the dock unavailable immediately
before connecting the new A2DP device.

Change-Id: I82d53836fb509ee4ea7cdb68f467dfb946c634f8
2010-04-23 13:59:45 -07:00
Jean-Michel Trivi
b4bccb6d8d Update AudioService to reflect phone state changes with AudioFocus.
Phone calls and rings are treated as a new client, with a dedicated
client ID that identifies it in the audio focus stack. When it is
present in the stack, others clients cannot request audio focus
(request is denied).
Because the phone state is now mostly handled like a new client,
there is no need monitor mode changes and to keep track of
undispatched focus changes, as those will delayed focus gains
will now automatically happen at the end of the call when the
phone client is removed from the focus stack.

Change-Id: I11ff73b015ab93f07040755fd8ee75c8d675e025
2010-04-20 15:23:39 -07:00
Marco Nelissen
9b8b417cd1 Merge "When updating existing entries in the media database, don't update the is_music, is_ringtone, etc columns. This ensures that custom ringtones will still be shown in the ringtone picker after a rescan. Bug 2594125 Change-Id: I56761240d6f6e699514169d80a445317ba0de9e2" into froyo 2010-04-20 11:24:10 -07:00
Marco Nelissen
c066557378 When updating existing entries in the media database, don't update
the is_music, is_ringtone, etc columns. This ensures that custom
ringtones will still be shown in the ringtone picker after a rescan.
Bug 2594125
Change-Id: I56761240d6f6e699514169d80a445317ba0de9e2
2010-04-20 09:47:31 -07:00
Eric Laurent
3891c4cc91 Fix issue 2602879: camera shutter sound not playing.
The problem occurs if the device is powered down in silent mode. When the device restarts,
AudioService reads current ringer mode from saved settings but does not call setRingerModeInt()
to perform actions required when ringer mode changes.
The volumes of streams affected by ringer mode are actually at 0 because they are also read from settings
but their mute state is not applied correclty. When we later exit from silent mode, the streams
other than STREAM_RING that are affected by ringer mode are not restored as they are not considered
muted. This applies to STREAM_SYSTEM but also to STREAM_NOTIFICATION if its volume is controlled independently
from STREAM_RING.

The fix consists in calling setRingerModeInt() when AudioService starts.

Change-Id: Ica75b9874938dda1bc1b634c3e97db4a650d295c
2010-04-20 09:40:57 -07:00
Eric Laurent
3b5912602b Fix issue 2604270 Device auto connects to Car Dock (Media profile) after undocking.
There was a regression introduced by change 4c637b9e34f4c8db69a64ad21a4e2bcfa7485b5f
fixing issue 2578813. As the A2DP device disconnection is notified to the audio policy manager
after a delay, there is a period during which the A2DP device is actually not connected but the
A2DP output is considered present by audio framework. If a playback is started during this period,
The A2DP output requests the activation of the A2DP sink which in turn triggers a reconnection
of the A2DP sink.

The fix consists in suspending the A2DP output immediately when receiving the A2DP disconnection
intent so that any activity on A2DP output is ignored until the output is actually closed by the
audio policy manager.

Change-Id: I16eaace45e12bfc970f50836b46a73b756b493f0
2010-04-20 07:01:00 -07:00
Eric Laurent
758dd527f6 Fix issue 2592680: Saved ringer volume forced to 0 when receiving a call in silent mode.
This is a regression introduced by change 5b4e654d0c7de8e4d58d73e73b0d5220f19b68f7 for issue 2472495.
When AudioService changes audio mode, setMode() reapplies current volume for the default active stream
which in this case is STREAM_RING.
Because the new implementation of silent mode actually mutes the ringer stream,
setStreamVolumeInt() now applies the volume change received while in silent mode
to the last audible value and we end up clearing the last audible volume for ringer.

The fix consists in not modifying last audible value when the new value is 0.

Also removed obsolete code in setStreamVolumeInt() since new implementation of setRingerModeInt()
in change 5b4e654d0c7de8e4d58d73e73b0d5220f19b68f7.

Change-Id: I746f3bc1af39a602ce12d130ce592007b2d0ebb6
2010-04-14 10:52:01 -07:00
Eric Laurent
527c3ab51e Fix issue 2589563: Able to set ringer volume to 0 outside of silent mode.
The problem happens only if volume down key is pressed while
already in silent or vibrate mode. In this case, AudioService accepts
changing the last audible index for ringer volume from 1 to 0.
When volume up is pressed, current ringer volume value is restored from 0
instead of 1.

The fix consists in keeping last audible index at 1 once in silent of vibrate
mode even is volume down key is pressed.

Change-Id: Id08edd12ce985c22233124545eba2c3e4b8cdc8e
2010-04-14 09:32:17 -07:00
Jean-Michel Trivi
4c637b9e34 Fix bug 2578813 Delay pausing music and routing audio for car docks
Moved broadcast of ACTION_AUDIO_BECOMING_NOISY from BluetoothA2dpService
to AudioService.
Broadcast ACTION_AUDIO_BECOMING_NOISY when disconnecting an A2DP
device.
Disconnect from A2DP docks with a delay to handle transient
disconnections.
Cancel delayed A2DP disconnections when connecting to a dock as this
can be a reconnection after a transient disconnection.

Change-Id: I1ee9e99f3ffa20727af38a4c4c8711942894a696
2010-04-13 09:44:08 -07:00
Daniel Sandler
bcac496076 Honor the "Never vibrate" setting for incoming calls.
Bug: 2579295
Change-Id: Ia4207492c5dfa2c39d27372c4892b60121b6d9e8
2010-04-13 12:18:44 -04:00
Jean-Michel Trivi
2930bb2d47 Fix monkey bug 2586534 java.util.ConcurrentModificationException
Unlike the other audio focus and media button stack handling
methods, abandonAudioFocus() and unregisterAudioFocusClient() were
not synchronized around their focus stack. This CL corrects this.

Change-Id: I5ada574e4e163fa95da9dad2fefe610b48303320
2010-04-09 19:27:58 -07:00