Merge "FM: Handle airplane mode change intent"
diff --git a/fmapp2/src/com/caf/fmradio/FMRadioService.java b/fmapp2/src/com/caf/fmradio/FMRadioService.java
index 71e59ed..c463f46 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadioService.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadioService.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009-2014, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2009-2015, The Linux Foundation. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
@@ -110,6 +110,7 @@
    private BroadcastReceiver mAudioBecomeNoisyListener = null;
    private boolean mOverA2DP = false;
    private BroadcastReceiver mFmMediaButtonListener;
+   private BroadcastReceiver mAirplaneModeChanged;
    private IFMRadioServiceCallbacks mCallbacks;
    private static FmSharedPreferences mPrefs;
    private boolean mHeadsetPlugged = false;
@@ -208,6 +209,7 @@
       registerRecordTimeout();
       registerDelayedServiceStop();
       registerFMRecordingStatus();
+      registerAirplaneModeStatusChanged();
       // registering media button receiver seperately as we need to set
       // different priority for receiving media events
       registerFmMediaButtonReceiver();
@@ -290,6 +292,10 @@
           unregisterReceiver(mFmRecordingStatus);
           mFmRecordingStatus = null;
       }
+      if (mAirplaneModeChanged != null) {
+          unregisterReceiver(mAirplaneModeChanged);
+          mAirplaneModeChanged = null;
+      }
       /* Since the service is closing, disable the receiver */
       fmOff();
 
@@ -348,6 +354,27 @@
          }
    }
 
+   public void registerAirplaneModeStatusChanged() {
+       if (mAirplaneModeChanged == null) {
+           mAirplaneModeChanged = new BroadcastReceiver() {
+               @Override
+               public void onReceive(Context context, Intent intent) {
+                   String action = intent.getAction();
+                   if (action.equals(Intent.ACTION_AIRPLANE_MODE_CHANGED)) {
+                       Log.d(LOGTAG, "ACTION_AIRPLANE_MODE_CHANGED received");
+                       boolean state = intent.getBooleanExtra("state", false);
+                       if (state == true) {
+                           fmOff();
+                       }
+                   }
+               }
+           };
+           IntentFilter iFilter = new IntentFilter();
+           iFilter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);
+           registerReceiver(mAirplaneModeChanged, iFilter);
+       }
+   }
+
      /**
      * Registers an intent to listen for ACTION_HEADSET_PLUG
      * notifications. This intent is called to know if the headset