fmrecord: Stop recording when sd card is unmounted

FM recording does not stop when sd card is unmounted.
Stop FM recording on receiving sd card unmounted intent.

Change-Id: I79fe6ce0d0799b6be5716ed5f51b9ed87598c205
CRs-Fixed: 581710
diff --git a/FMRecord/src/com/codeaurora/fmrecording/FMRecordingService.java b/FMRecord/src/com/codeaurora/fmrecording/FMRecordingService.java
index e542512..4ca4645 100644
--- a/FMRecord/src/com/codeaurora/fmrecording/FMRecordingService.java
+++ b/FMRecord/src/com/codeaurora/fmrecording/FMRecordingService.java
@@ -92,6 +92,7 @@
     private Thread mStatusCheckThread = null;
     private int clientPid = -1;
     private String clientProcessName = "";
+    private BroadcastReceiver mSdcardUnmountReceiver = null;
 
     public void onCreate() {
 
@@ -99,6 +100,7 @@
         Log.d(TAG, "FMRecording Service onCreate");
         registerRecordingListner();
         registerShutdownListner();
+        registerStorageMediaListener();
     }
 
     public int onStartCommand(Intent intent, int flags, int startId) {
@@ -115,6 +117,7 @@
         }
         unregisterBroadCastReceiver(mFmRecordingReceiver);
         unregisterBroadCastReceiver(mFmShutdownReceiver);
+        unregisterBroadCastReceiver(mSdcardUnmountReceiver);
         super.onDestroy();
     }
 
@@ -196,6 +199,33 @@
         return true;
     }
 
+    private void registerStorageMediaListener() {
+        if (mSdcardUnmountReceiver == null) {
+            mSdcardUnmountReceiver = new BroadcastReceiver() {
+                @Override
+                public void onReceive(Context context, Intent intent) {
+                     String action = intent.getAction();
+                    if ((action.equals(Intent.ACTION_MEDIA_UNMOUNTED))
+                          || action.equals(Intent.ACTION_MEDIA_EJECT)) {
+                         Log.d(TAG, "ACTION_MEDIA_UNMOUNTED Intent received");
+                        if (mFmRecordingOn == true) {
+                             try {
+                                  stopRecord();
+                             } catch (Exception e) {
+                                  e.printStackTrace();
+                             }
+                         }
+                     }
+                 }
+             };
+             IntentFilter iFilter = new IntentFilter();
+             iFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
+             iFilter.addAction(Intent.ACTION_MEDIA_EJECT);
+             iFilter.addDataScheme("file");
+             registerReceiver(mSdcardUnmountReceiver, iFilter);
+         }
+     }
+
     private void sendRecordingStatusIntent(int status) {
         Intent intent = new Intent(ACTION_FM_RECORDING_STATUS);
         intent.putExtra("state", status);