diff options
author | Benson Huang <benson.huang@mediatek.com> | 2015-01-05 21:19:00 +0800 |
---|---|---|
committer | Nicholas Sauer <nicksauer@google.com> | 2015-01-06 18:51:21 +0000 |
commit | 7c38d14648a1b518a1bea44b4488bfe8e5add6e2 (patch) | |
tree | a28e5bdc39958be21ab6bc6c0b5374be6415fe87 | |
parent | 51530a2842db5611cf72c94c25d8951e91f25d08 (diff) | |
download | android_packages_apps_FMRadio-7c38d14648a1b518a1bea44b4488bfe8e5add6e2.tar.gz android_packages_apps_FMRadio-7c38d14648a1b518a1bea44b4488bfe8e5add6e2.tar.bz2 android_packages_apps_FMRadio-7c38d14648a1b518a1bea44b4488bfe8e5add6e2.zip |
[FM] There is no sound in speaker while playing FM in speaker mode
Launch FM and play a station -> Plug out headphones
-> Plug in headphones -> Switch to speaker mode, There
is no sound via speaker.
The fix is to let FM sound output via speaker.
from: https://partner-android-review.googlesource.com/#/c/192523/3
Bug 18795162
Change-Id: I16fce6914ea0b3d463c1205708d11265925097e4
Signed-off-by: Benson Huang <benson.huang@mediatek.com>
-rw-r--r-- | src/com/android/fmradio/FmService.java | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/com/android/fmradio/FmService.java b/src/com/android/fmradio/FmService.java index 6c39d66..e84ad99 100644 --- a/src/com/android/fmradio/FmService.java +++ b/src/com/android/fmradio/FmService.java @@ -384,7 +384,21 @@ public class FmService extends Service implements FmRecorder.OnRecorderStateChan } private synchronized void startRender() { - Log.d(TAG, "startRender"); + Log.d(TAG, "startRender " + AudioSystem.getForceUse(FOR_PROPRIETARY)); + // Stop old AudioRecord and create a new AudioRecord + // when plugging out and then plugging in wired headset. + // Otherwise, reading data from old AudioRecord will be blocked. + if (AudioSystem.getForceUse(FOR_PROPRIETARY) == + AudioSystem.FORCE_SPEAKER && mIsSpeakerUsed) { + if (mAudioRecord != null) { + mAudioRecord.stop(); + } + if (mAudioTrack != null) { + mAudioTrack.stop(); + } + initAudioRecordSink(); + } + mIsRender = true; synchronized (mRenderLock) { mRenderLock.notify(); @@ -467,6 +481,11 @@ public class FmService extends Service implements FmRecorder.OnRecorderStateChan Log.d(TAG, "EYES ignore " + mCurrentFrame); continue ; } + if (size <= 0) { + Log.e(TAG, "RenderThread read data from AudioRecord " + + "error size: " + size); + continue; + } byte[] tmpBuf = new byte[size]; System.arraycopy(buffer, 0, tmpBuf, 0, size); // write to audio track @@ -1640,6 +1659,7 @@ public class FmService extends Service implements FmRecorder.OnRecorderStateChan AudioPortConfig sinkConfig = sinks[0]; AudioPort sourcePort = sourceConfig.port(); AudioPort sinkPort = sinkConfig.port(); + Log.d(TAG, "isPatchMixerToEarphone " + sourcePort + " ====> " + sinkPort); if (sourcePort instanceof AudioMixPort && sinkPort instanceof AudioDevicePort) { deviceCount++; int type = ((AudioDevicePort) sinkPort).type(); |