The cause of the problem is that under certain circumstance the HeadsetObserver receives unexpected connection events. For instance,
when removing a bad quality 3.5mm stereo jack without mic the following events can be received:
1 connection of a headset with mic
2 removal of a headset with mic.
The result is that the no mic headset is never disconnected and audio policy manager considers it is still present. Then the music or downlink call audio is always routed to headset even if none is connected giving the impression that audio is lost, except whne you reconnect a headset of enable speaker phone.
The fix consists in adding more checks in HeadsetObserver to reject illegal transitions in headset state received from event observer.
This is a second attempt to fix the audio routed to earpiece syndrom.
The root cause identified this time is the crash of an application having an active AudioTrack playing on the VOICE_CALL stream type.
When this happens, the AudioTrack destructor is not called and the audio policy manager is not notified of the track stop.
Results a situation where the VOICE_CALL stream is considered as always in use by audio policy manager which makes that audio is routed to earpiece.
The fix consists in moving the track start/stop/close notification to audio policiy manager from AudioTrack to AudioFlinger Track objet.
The net result is that in the case of a client application crash, the AudioFlinger TrackHandle object (which implements the remote side of the IAudioTrack binder interface) destructor is called which in turn destroys the Track object and we can notify the audio policy manager of the track stop and removal.
The same modification is made for AudioRecord although no bug related to record has been reported yet.
Also fixed a potential problem if record stop is called while the record thread is exiting.
* changes:
DO NOT MERGE: Instead of inserting semi-random delays after submission to surface flinger, delay releasing buffers to the next display time to avoid flickering.
* changes:
Fix bug 2271468 Update the javadoc for MediaRecorder.AudioSource to define how the two new audio sources behave when used on devices that don't support them.
Add optional flag to Wakelock.release() to specify whether we should wait for proximity sensor to go negative before turning on the screen.
Clear the "waiting for proximity sensor to go negative" state when the power key is pressed.
Part of the fix for b/2243198 (Black screen lockup after ending call)
Change-Id: I813fdb7aa4192cd3384a25be9e59d7d4b90da53a
Signed-off-by: Mike Lockwood <lockwood@android.com>
* changes:
docs: misc edits to samples page and intro docs make samples page accessible from offline version instead of redirecting to the user filesystem and include instructions for creating projects based on the sample apps. fix a link and add some content to the What is android doc.
Don't hold the global package log while instantiated an AssetManager+Resources, since
this is a fairly heavy-weight operation, and if done in the background can starve the
foreground.
Change-Id: I5ad37324fb7c27ffdbf28e1498ca0ad667479580
Due to a change in cpu stepping values, the batterystats.bin file needs to
be wiped for Battery Use app to show CPU cost correctly.
Bumping up the version number of the file fixes this.
This is an uber hack. Since there is a race between resizing the view and getting
the orientation-changed notification, this just tries to avoid drawing the tabs in the
wrong orientation (based on what we *expect* to be the orientation specified in the layout
file for the SlidingTab). This masks the problem *most* of the time.
This fixes the following glitches:
- flash at the end of animation as the widget resets. Fix: new "hold" animation holds the view for 1 second, allowing it to transition before we reset the view.
- target flashing. Fix: remove AlphaAnimation when we want to hide the target.
- bar appears to get stuck at edge. Fix: sliding bar now slides fully offscreen when hold == true. Added setHoldAfterTrigger() method to allow InCallScreen and LockScreen to have different behaviors.
- view continues to animate when shown again. Fix: reset the animations and sliders when the view is hidden.
Tested:
Answer/Decline call on CDMA and GSM device.
Unlock phone and toggle sound on/off in LockScreen on both devices.