diff options
-rw-r--r-- | libaudio/AudioHardware.cpp | 4 | ||||
-rw-r--r-- | libaudio/AudioHardware.h | 1 |
2 files changed, 5 insertions, 0 deletions
diff --git a/libaudio/AudioHardware.cpp b/libaudio/AudioHardware.cpp index c958e36..3e28448 100644 --- a/libaudio/AudioHardware.cpp +++ b/libaudio/AudioHardware.cpp @@ -98,6 +98,7 @@ AudioHardware::AudioHardware() : mActivatedCP(false), #ifdef HAVE_FM_RADIO mFmFd(-1), + mFmVolume(1), mFmResumeAfterCall(false), #endif mDriverOp(DRV_NONE) @@ -636,6 +637,7 @@ status_t AudioHardware::setMasterVolume(float volume) #ifdef HAVE_FM_RADIO status_t AudioHardware::setFmVolume(float v) { + mFmVolume = v; if (mFmFd > 0) { __u8 fmVolume = (AudioSystem::logToLinear(v) + 5) / 7; LOGD("%s %f %d", __func__, v, (int) fmVolume); @@ -808,6 +810,8 @@ void AudioHardware::enableFMRadio() { if (mFmFd < 0) { mFmFd = open("/dev/radio0", O_RDWR); + // In case setFmVolume was called before FM was enabled, we save the volume and call it here. + setFmVolume(mFmVolume); } } } diff --git a/libaudio/AudioHardware.h b/libaudio/AudioHardware.h index 2a1f6c7..8a781bf 100644 --- a/libaudio/AudioHardware.h +++ b/libaudio/AudioHardware.h @@ -184,6 +184,7 @@ private: #ifdef HAVE_FM_RADIO int mFmFd; + float mFmVolume; bool mFmResumeAfterCall; #endif |