summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenson Huang <benson.huang@mediatek.com>2015-01-05 21:19:00 +0800
committerNicholas Sauer <nicksauer@google.com>2015-01-06 18:51:21 +0000
commit7c38d14648a1b518a1bea44b4488bfe8e5add6e2 (patch)
treea28e5bdc39958be21ab6bc6c0b5374be6415fe87
parent51530a2842db5611cf72c94c25d8951e91f25d08 (diff)
downloadandroid_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.java22
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();