summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDhananjay Kumar <dhakumar@codeaurora.org>2015-04-08 00:53:44 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-04-08 00:53:44 +0000
commitbe66288d246dd0b49619d2c034b621e051098324 (patch)
treec16884e6891538a5a4b9841b26271254a09ea0dd
parentcb00514d539a6a654e9e2d72bfcbb73e759c84c7 (diff)
parent3a737c7dd7dbfe7ac5535f7119440b50d606cc54 (diff)
downloadFMRadio-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.java26
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();
}