diff options
-rw-r--r-- | src/com/android/fmradio/FmService.java | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/com/android/fmradio/FmService.java b/src/com/android/fmradio/FmService.java index b3d7715..973dceb 100644 --- a/src/com/android/fmradio/FmService.java +++ b/src/com/android/fmradio/FmService.java @@ -396,7 +396,7 @@ public class FmService extends Service implements FmRecorder.OnRecorderStateChan mAudioRecord.release(); mAudioRecord = null; } - if (mAudioTrack != null) { + if (mAudioTrack != null && mAudioTrack.getState() == AudioTrack.STATE_INITIALIZED) { mAudioTrack.stop(); mAudioTrack.release(); mAudioTrack = null; @@ -448,7 +448,8 @@ public class FmService extends Service implements FmRecorder.OnRecorderStateChan } private void startAudioTrack() { - if (mAudioTrack.getPlayState() == AudioTrack.PLAYSTATE_STOPPED) { + if (mAudioTrack.getState() == AudioTrack.STATE_INITIALIZED + && mAudioTrack.getPlayState() == AudioTrack.PLAYSTATE_STOPPED) { ArrayList<AudioPatch> patches = new ArrayList<AudioPatch>(); mAudioManager.listAudioPatches(patches); mAudioTrack.play(); @@ -477,11 +478,13 @@ public class FmService extends Service implements FmRecorder.OnRecorderStateChan // Speaker mode or BT a2dp mode will come here and keep reading and writing. // If we want FM sound output from speaker or BT a2dp, we must record data // to AudioRecrd and write data to AudioTrack. - if (mAudioRecord.getRecordingState() == AudioRecord.RECORDSTATE_STOPPED) { + if (mAudioRecord.getRecordingState() == AudioRecord.RECORDSTATE_STOPPED + && mAudioRecord.getState() == AudioRecord.STATE_INITIALIZED) { mAudioRecord.startRecording(); } - if (mAudioTrack.getPlayState() == AudioTrack.PLAYSTATE_STOPPED) { + if (mAudioTrack.getPlayState() == AudioTrack.PLAYSTATE_STOPPED + && mAudioTrack.getState() == AudioTrack.STATE_INITIALIZED) { mAudioTrack.play(); } int size = mAudioRecord.read(buffer, 0, RECORD_BUF_SIZE); |