Resume FM on telephony idle state

If volume button pressed while call is ringing, FM receives AUDIOFOCUS.
On call termination, FM don't resume, as FM already received
AUDIOFOCUS and don't resume FM on call termination.
Hence turn on FM when telephony CALL_IDLE_STATE intent received.

Change-Id: Ib38e4f622d57ead0c7a97a241280c9c9db57da8d
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)