diff --git a/fmapp2/src/com/caf/fmradio/FMMediaButtonIntentReceiver.java b/fmapp2/src/com/caf/fmradio/FMMediaButtonIntentReceiver.java
index 949453f..5dd3eb7 100644
--- a/fmapp2/src/com/caf/fmradio/FMMediaButtonIntentReceiver.java
+++ b/fmapp2/src/com/caf/fmradio/FMMediaButtonIntentReceiver.java
@@ -53,25 +53,6 @@
            Log.d(TAG, "ACTION_AUDIO_BECOMING_NOISY intent received for ACTION_HEADSET_PLUG");
            Intent i = new Intent(AUDIO_BECOMING_NOISY);
            context.sendBroadcast(i);
-       } else if ((action != null) && action.equals("android.intent.action.MEDIA_BUTTON")) {
-           KeyEvent event = (KeyEvent)
-                    intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
-
-           if (event == null) {
-               return;
-           }
-           int keycode = event.getKeyCode();
-           int key_action = event.getAction();
-           if (((KeyEvent.KEYCODE_HEADSETHOOK == keycode) &&
-               (key_action == KeyEvent.ACTION_DOWN)) ||
-               (KeyEvent.KEYCODE_MEDIA_PAUSE == keycode) ||
-               (KeyEvent.KEYCODE_MEDIA_PLAY == keycode)) {
-
-               Log.d(TAG, "ACTION_MEDIA_BUTTON intent received for ACTION_DOWN");
-               Intent i = new Intent(FM_MEDIA_BUTTON);
-               i.putExtra(Intent.EXTRA_KEY_EVENT, event);
-               context.sendBroadcast(i);
-           }
        }
    }
 }
diff --git a/fmapp2/src/com/caf/fmradio/FMRadio.java b/fmapp2/src/com/caf/fmradio/FMRadio.java
index f83a0d0..6561aec 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadio.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadio.java
@@ -2624,22 +2624,6 @@
       }//handleMessage
    };
 
-   @Override
-   public boolean onKeyDown(int keyCode, KeyEvent event) {
-       Log.d(LOGTAG, "KEY event received " + keyCode);
-       switch (keyCode) {
-           case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
-           case 126: //KeyEvent.KEYCODE_MEDIA_PLAY:
-           case 127: //KeyEvent.KEYCODE_MEDIA_PAUSE:
-           case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD:
-           case KeyEvent.KEYCODE_MEDIA_NEXT:
-           case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
-           case KeyEvent.KEYCODE_MEDIA_REWIND:
-           case KeyEvent.KEYCODE_MEDIA_STOP:
-               return true;
-       }
-       return super.onKeyDown(keyCode, event);
-   }
    private void resetFMStationInfoUI() {
       mTunedStation.setFrequency(FmSharedPreferences.getTunedFrequency());
       mTunedStation.setName("");
diff --git a/fmapp2/src/com/caf/fmradio/FMRadioService.java b/fmapp2/src/com/caf/fmradio/FMRadioService.java
index b238e53..b05b08c 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadioService.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadioService.java
@@ -809,7 +809,7 @@
                 if (!isFmOn())
                     return;
                 /* Disable FM and let the UI know */
-                fmOff();
+                fmOff(FM_OFF_FROM_ANTENNA);
                 try
                 {
                     /* Notify the UI/Activity, only if the service is "bound"
