Promotion of fm.lnx.2.1-00034.

CRs      Change ID                                   Subject
--------------------------------------------------------------------------------------------------------------
2028591   Ib38e4f622d57ead0c7a97a241280c9c9db57da8d   Resume FM on telephony idle state

Change-Id: I7e3e05a8b015d7a1a561194db69e2f338d0e7c3e
CRs-Fixed: 2028591
diff --git a/fmapp2/src/com/caf/fmradio/FMRadioService.java b/fmapp2/src/com/caf/fmradio/FMRadioService.java
index 6588571..76904eb 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadioService.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadioService.java
@@ -1449,33 +1449,31 @@
        resolver.insert(uri, values);
    }
 
-   Runnable resumeAfterCall = new Runnable() {
-        public void run() {
-            if (getCallState() != TelephonyManager.CALL_STATE_IDLE)
-                return;
+    private void resumeAfterCall() {
+        if (getCallState() != TelephonyManager.CALL_STATE_IDLE)
+            return;
 
-            // start playing again
-            if (!mResumeAfterCall)
-                return;
+        // start playing again
+        if (!mResumeAfterCall)
+            return;
 
-            // resume playback only if FM Radio was playing
-            // when the call was answered
-            if (isAntennaAvailable() && (!isFmOn()) && mServiceInUse) {
-                Log.d(LOGTAG, "Resuming after call:");
-                if(!fmOn()) {
-                    return;
-                }
-                mResumeAfterCall = false;
-                if (mCallbacks != null) {
-                    try {
-                        mCallbacks.onEnabled();
-                    } catch (RemoteException e) {
-                        e.printStackTrace();
-                    }
+        // resume playback only if FM Radio was playing
+        // when the call was answered
+        if (isAntennaAvailable() && (!isFmOn()) && mServiceInUse) {
+            Log.d(LOGTAG, "Resuming after call:");
+            if(!fmOn()) {
+                return;
+            }
+            mResumeAfterCall = false;
+            if (mCallbacks != null) {
+                try {
+                    mCallbacks.onEnabled();
+                } catch (RemoteException e) {
+                    e.printStackTrace();
                 }
             }
         }
-    };
+    }
 
    private void fmActionOnCallState( int state ) {
    //if Call Status is non IDLE we need to Mute FM as well stop recording if
@@ -1507,6 +1505,8 @@
                mCallStatus = bTempCall;
                mMuted = bTempMute;
            }
+       } else if (TelephonyManager.CALL_STATE_IDLE == state) {
+           resumeAfterCall();
        }
    }
 
@@ -1625,11 +1625,7 @@
                       mStoppedOnFocusLoss = false;
                       if (mResumeAfterCall) {
                           Log.v(LOGTAG, "resumeAfterCall");
-                          if (getCallState() != TelephonyManager.CALL_STATE_IDLE) {
-                              mHandler.postDelayed(resumeAfterCall, 100);
-                              return;
-                          }
-                          mHandler.post(resumeAfterCall);
+                          resumeAfterCall();
                           break;
                       }
                       if(false == mPlaybackInProgress)