diff options
author | Dhananjay Kumar <dhakumar@codeaurora.org> | 2015-04-08 00:53:44 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-04-08 00:53:44 +0000 |
commit | be66288d246dd0b49619d2c034b621e051098324 (patch) | |
tree | c16884e6891538a5a4b9841b26271254a09ea0dd | |
parent | cb00514d539a6a654e9e2d72bfcbb73e759c84c7 (diff) | |
parent | 3a737c7dd7dbfe7ac5535f7119440b50d606cc54 (diff) | |
download | FMRadio-be66288d246dd0b49619d2c034b621e051098324.tar.gz |
am 3a737c7d: am e26a1c24: DO NOT MERGE - [FM] Fallback if createAudioPatch fails
* commit '3a737c7dd7dbfe7ac5535f7119440b50d606cc54':
DO NOT MERGE - [FM] Fallback if createAudioPatch fails
-rw-r--r-- | src/com/android/fmradio/FmService.java | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/src/com/android/fmradio/FmService.java b/src/com/android/fmradio/FmService.java index 35efe56..21a36b8 100644 --- a/src/com/android/fmradio/FmService.java +++ b/src/com/android/fmradio/FmService.java @@ -390,9 +390,13 @@ public class FmService extends Service implements FmRecorder.OnRecorderStateChan // because input/output device may be changed. if (mAudioRecord != null) { mAudioRecord.stop(); + mAudioRecord.release(); + mAudioRecord = null; } if (mAudioTrack != null) { mAudioTrack.stop(); + mAudioTrack.release(); + mAudioTrack = null; } initAudioRecordSink(); @@ -1284,11 +1288,12 @@ public class FmService extends Service implements FmRecorder.OnRecorderStateChan SAMPLE_RATE, CHANNEL_CONFIG, AUDIO_FORMAT, RECORD_BUF_SIZE, AudioTrack.MODE_STREAM); } - private synchronized void createAudioPatch() { + private synchronized int createAudioPatch() { Log.d(TAG, "createAudioPatch"); + int status = AudioManager.SUCCESS; if (mAudioPatch != null) { Log.d(TAG, "createAudioPatch, mAudioPatch is not null, return"); - return; + return status; } mAudioSource = null; @@ -1312,11 +1317,12 @@ public class FmService extends Service implements FmRecorder.OnRecorderStateChan .activeConfig(); AudioDevicePortConfig sinkConfig = (AudioDevicePortConfig) mAudioSink.activeConfig(); AudioPatch[] audioPatchArray = new AudioPatch[] {null}; - mAudioManager.createAudioPatch(audioPatchArray, + status = mAudioManager.createAudioPatch(audioPatchArray, new AudioPortConfig[] {sourceConfig}, new AudioPortConfig[] {sinkConfig}); mAudioPatch = audioPatchArray[0]; } + return status; } private FmOnAudioPortUpdateListener mAudioPortUpdateListener = null; @@ -1369,9 +1375,14 @@ public class FmService extends Service implements FmRecorder.OnRecorderStateChan ArrayList<AudioPatch> patches = new ArrayList<AudioPatch>(); mAudioManager.listAudioPatches(patches); if (isPatchMixerToEarphone(patches)) { + int status; stopAudioTrack(); stopRender(); - createAudioPatch(); + status = createAudioPatch(); + if (status != AudioManager.SUCCESS){ + Log.d(TAG, "onAudioPatchListUpdate: fallback as createAudioPatch failed"); + startRender(); + } } } } @@ -1645,9 +1656,14 @@ public class FmService extends Service implements FmRecorder.OnRecorderStateChan mAudioManager.listAudioPatches(patches); if (mAudioPatch == null) { if (isPatchMixerToEarphone(patches)) { + int status; stopAudioTrack(); stopRender(); - createAudioPatch(); + status = createAudioPatch(); + if (status != AudioManager.SUCCESS){ + Log.d(TAG, "enableFmAudio: fallback as createAudioPatch failed"); + startRender(); + } } else { startRender(); } |