diff --git a/FMRecord/src/com/codeaurora/fmrecording/FMRecordingService.java b/FMRecord/src/com/codeaurora/fmrecording/FMRecordingService.java
index 3fb6446..2c615e8 100644
--- a/FMRecord/src/com/codeaurora/fmrecording/FMRecordingService.java
+++ b/FMRecord/src/com/codeaurora/fmrecording/FMRecordingService.java
@@ -61,6 +61,7 @@
 public class FMRecordingService extends Service {
     private static final String TAG     = "FMRecordingService";
     private BroadcastReceiver mFmRecordingReceiver = null;
+    private BroadcastReceiver mFmShutdownReceiver = null;
     public static final long UNAVAILABLE = -1L;
     public static final long PREPARING = -2L;
     public static final long UNKNOWN_SIZE = -3L;
@@ -83,6 +84,7 @@
         super.onCreate();
         Log.d(TAG, "FMRecording Service onCreate");
         registerRecordingListner();
+        registerShutdownListner();
     }
 
     public int onStartCommand(Intent intent, int flags, int startId) {
@@ -98,6 +100,7 @@
             stopRecord();
         }
         unregisterBroadCastReceiver(mFmRecordingReceiver);
+        unregisterBroadCastReceiver(mFmShutdownReceiver);
         super.onDestroy();
     }
 
@@ -106,13 +109,33 @@
         return null;
     }
 
-   private void unregisterBroadCastReceiver(BroadcastReceiver myreceiver) {
+    private void unregisterBroadCastReceiver(BroadcastReceiver myreceiver) {
 
        if (myreceiver != null) {
            unregisterReceiver(myreceiver);
            myreceiver = null;
        }
-   }
+    }
+
+    private void registerShutdownListner() {
+        if (mFmShutdownReceiver == null) {
+            mFmShutdownReceiver = new BroadcastReceiver() {
+                 @Override
+                 public void onReceive(Context context, Intent intent) {
+                     Log.d(TAG, "Received intent " +intent);
+                     String action = intent.getAction();
+                     Log.d(TAG, " action = " +action);
+                     if (action.equals("android.intent.action.ACTION_SHUTDOWN")) {
+                         Log.d(TAG, "android.intent.action.ACTION_SHUTDOWN Intent received");
+                         stopRecord();
+                     }
+                 }
+            };
+            IntentFilter iFilter = new IntentFilter();
+            iFilter.addAction("android.intent.action.ACTION_SHUTDOWN");
+            registerReceiver(mFmShutdownReceiver, iFilter);
+        }
+    }
 
     private static long getAvailableSpace() {
         String state = Environment.getExternalStorageState();
