From dcad956a110ab2ddb175c443db625074c3e24a50 Mon Sep 17 00:00:00 2001
From: Rupesh Tatiya <rtatiya@codeaurora.org>
Date: Mon, 25 Jan 2016 16:54:27 +0530
Subject: [PATCH] Request for audio focus on activity resume

FM might lose audio focus and go in the pause state. Hence request audio
focus during resume. Otherwise, activity displayed might be FM but audio
source might be something else like music.

CRs-Fixed: 966644
Change-Id: I681b51f3a54abbc04223c60496aa3049b6769a1f
---
 fmapp2/src/com/caf/fmradio/FMRadio.java | 46 ++++++++++++++++---------
 1 file changed, 29 insertions(+), 17 deletions(-)

diff --git a/fmapp2/src/com/caf/fmradio/FMRadio.java b/fmapp2/src/com/caf/fmradio/FMRadio.java
index c364885..b1b613b 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadio.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadio.java
@@ -493,42 +493,54 @@ public class FMRadio extends Activity
 
    @Override
    public void onResume() {
+      Log.d(LOGTAG, "FMRadio: onResume");
+
       super.onResume();
+      if (null == mService) {
+          Log.e(LOGTAG, "FM Service is not running, returning");
+          return;
+      }
+
+      // TODO: We should return on exception or continue?
       try {
-         if(mService != null) {
-            mService.registerCallbacks(mServiceCallbacks);
-         }
-      }catch (RemoteException e) {
-         e.printStackTrace();
+          mService.registerCallbacks(mServiceCallbacks);
+      } catch (RemoteException e) {
+          e.printStackTrace();
       }
-      if(isSleepTimerActive()) {
+
+      if (isSleepTimerActive()) {
           Log.d(LOGTAG, "isSleepTimerActive is true");
           try {
-               if(null != mService) {
-                  mService.cancelDelayedStop(FMRadioService.STOP_SERVICE);
-               }
+               mService.cancelDelayedStop(FMRadioService.STOP_SERVICE);
                if(null != mSleepUpdateHandlerThread) {
                   mSleepUpdateHandlerThread.interrupt();
                }
-          }catch (Exception e) {
+          } catch (Exception e) {
                e.printStackTrace();
           }
           initiateSleepThread();
       }
-      if(isRecording()) {
+
+      if (isRecording()) {
           Log.d(LOGTAG,"isRecordTimerActive is true");
           try {
-            if (null != mService) {
-                mService.cancelDelayedStop(FMRadioService.STOP_RECORD);
-            }
-          }catch (Exception e) {
-            e.printStackTrace();
+              mService.cancelDelayedStop(FMRadioService.STOP_RECORD);
+          } catch (Exception e) {
+              e.printStackTrace();
           }
           if(isRecording()) {
               initiateRecordThread();
           }
       }
-      Log.d(LOGTAG, "FMRadio: onResume");
+
+      // we might lose audio focus between pause and restart,
+      // hence request it again
+      try {
+           mService.requestFocus();
+      } catch (Exception e) {
+           e.printStackTrace();
+      }
+
       mStereo = FmSharedPreferences.getLastAudioMode();
       mHandler.post(mUpdateProgramService);
       mHandler.post(mUpdateRadioText);
-- 
GitLab