diff --git a/FMRecord/src/com/codeaurora/fmrecording/FMRecordingService.java b/FMRecord/src/com/codeaurora/fmrecording/FMRecordingService.java
index 62f4a94..d1c6154 100644
--- a/FMRecord/src/com/codeaurora/fmrecording/FMRecordingService.java
+++ b/FMRecord/src/com/codeaurora/fmrecording/FMRecordingService.java
@@ -92,7 +92,6 @@
     private Thread mStatusCheckThread = null;
     private int clientPid = -1;
     private String clientProcessName = "";
-    private BroadcastReceiver mSdcardUnmountReceiver = null;
     private String mAudioType = "audio/*";
 
     public void onCreate() {
@@ -101,7 +100,6 @@
         Log.d(TAG, "FMRecording Service onCreate");
         registerRecordingListner();
         registerShutdownListner();
-        registerStorageMediaListener();
     }
 
     public int onStartCommand(Intent intent, int flags, int startId) {
@@ -118,7 +116,6 @@
         }
         unregisterBroadCastReceiver(mFmRecordingReceiver);
         unregisterBroadCastReceiver(mFmShutdownReceiver);
-        unregisterBroadCastReceiver(mSdcardUnmountReceiver);
         super.onDestroy();
     }
 
@@ -200,33 +197,6 @@
         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);
