OSDN Git Service

theme engine fixes
[android-x86/packages-apps-Eleven.git] / src / com / android / music / MediaButtonIntentReceiver.java
index 9a8b810..fadda52 100644 (file)
-/*
- * Copyright (C) 2007 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.music;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.media.AudioManager;
-import android.os.Handler;
-import android.os.Message;
-import android.view.KeyEvent;
-
-/**
- * 
- */
-public class MediaButtonIntentReceiver extends BroadcastReceiver {
-
-       private static final int MSG_LONGPRESS_TIMEOUT = 1;
-
-       private static final int LONG_PRESS_DELAY = 1000;
-
-       private static long mLastClickTime = 0;
-       private static boolean mDown = false;
-       private static boolean mLaunched = false;
-
-       private static Handler mHandler = new Handler() {
-               @Override
-               public void handleMessage(Message msg) {
-                       switch (msg.what) {
-                       case MSG_LONGPRESS_TIMEOUT:
-                               if (!mLaunched) {
-                                       Context context = (Context) msg.obj;
-                                       Intent i = new Intent();
-                                       i.putExtra("autoshuffle", "true");
-                                       i.setClass(context, MusicBrowserActivity.class);
-                                       i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
-                                                       | Intent.FLAG_ACTIVITY_CLEAR_TOP);
-                                       context.startActivity(i);
-                                       mLaunched = true;
-                               }
-                               break;
-                       }
-               }
-       };
-
-       @Override
-       public void onReceive(Context context, Intent intent) {
-               String intentAction = intent.getAction();
-
-               if (AudioManager.ACTION_AUDIO_BECOMING_NOISY.equals(intentAction)) {
-                       Intent i = new Intent(context, MediaPlaybackService.class);
-                       i.setAction(MediaPlaybackService.SERVICECMD);
-                       i.putExtra(MediaPlaybackService.CMDNAME,
-                                       MediaPlaybackService.CMDPAUSE);
-                       context.startService(i);
-               } else if (Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
-                       KeyEvent event = (KeyEvent) intent
-                                       .getParcelableExtra(Intent.EXTRA_KEY_EVENT);
-
-                       if (event == null) {
-                               return;
-                       }
-
-                       int keycode = event.getKeyCode();
-                       int action = event.getAction();
-                       long eventtime = event.getEventTime();
-                       int buttonId = intent.getIntExtra(MediaPlaybackService.CMDNOTIF, 0);
-
-                       // single quick press: pause/resume.
-                       // double press: next track
-                       // long press: start auto-shuffle mode.
-
-                       String command = null;
-                       switch (keycode) {
-                       case KeyEvent.KEYCODE_MEDIA_STOP:
-                               command = MediaPlaybackService.CMDSTOP;
-                               break;
-                       case KeyEvent.KEYCODE_HEADSETHOOK:
-                       case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
-                               command = MediaPlaybackService.CMDTOGGLEPAUSE;
-
-                               break;
-                       case KeyEvent.KEYCODE_MEDIA_NEXT:
-                               command = MediaPlaybackService.CMDNEXT;
-
-                               break;
-                       case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
-                               command = MediaPlaybackService.CMDPREVIOUS;
-
-                               break;
-
-                       }
-
-                       if (command != null) {
-                               if (action == KeyEvent.ACTION_DOWN) {
-                                       if (mDown && (buttonId == 0)) {
-                                               if ((MediaPlaybackService.CMDTOGGLEPAUSE
-                                                               .equals(command) || MediaPlaybackService.CMDPLAY
-                                                               .equals(command))
-                                                               && mLastClickTime != 0
-                                                               && eventtime - mLastClickTime > LONG_PRESS_DELAY) {
-                                                       mHandler.sendMessage(mHandler.obtainMessage(
-                                                                       MSG_LONGPRESS_TIMEOUT, context));
-
-                                               }
-                                       } else if (event.getRepeatCount() == 0) {
-
-                                               // only consider the first event in a sequence, not the
-                                               // repeat events,
-                                               // so that we don't trigger in cases where the first
-                                               // event went to
-                                               // a different app (e.g. when the user ends a phone call
-                                               // by
-                                               // long pressing the headset button)
-
-                                               // The service may or may not be running, but we need to
-                                               // send it
-
-                                               // a command.
-                                               Intent i = new Intent(context,
-                                                               MediaPlaybackService.class);
-
-                                               i.setAction(MediaPlaybackService.SERVICECMD);
-                                               if (keycode == KeyEvent.KEYCODE_HEADSETHOOK
-                                                               && eventtime - mLastClickTime < 300) {
-                                                       i.putExtra(MediaPlaybackService.CMDNAME,
-                                                                       MediaPlaybackService.CMDNEXT);
-
-                                                       context.startService(i);
-                                                       mLastClickTime = 0;
-                                               } else {
-                                                       i.putExtra(MediaPlaybackService.CMDNAME, command);
-                                                       context.startService(i);
-                                                       mLastClickTime = eventtime;
-
-                                               }
-
-                                               mLaunched = false;
-                                               if (buttonId == 0) {
-                                                       mDown = true;
-
-                                               }
-                                       }
-                               } else {
-                                       mHandler.removeMessages(MSG_LONGPRESS_TIMEOUT);
-                                       mDown = false;
-
-                               }
-                               if (isOrderedBroadcast()) {
-                                       abortBroadcast();
-
-                               }
-                       }
-               }
-       }
-}
+/*\r
+ * Copyright (C) 2007 The Android Open Source Project\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *      http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+package com.android.music;\r
+\r
+import android.content.BroadcastReceiver;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.media.AudioManager;\r
+import android.os.Handler;\r
+import android.os.Message;\r
+import android.view.KeyEvent;\r
+\r
+/**\r
+ * \r
+ */\r
+public class MediaButtonIntentReceiver extends BroadcastReceiver {\r
+\r
+       private static final int MSG_LONGPRESS_TIMEOUT = 1;\r
+\r
+       private static final int LONG_PRESS_DELAY = 1000;\r
+\r
+       private static long mLastClickTime = 0;\r
+       private static boolean mDown = false;\r
+       private static boolean mLaunched = false;\r
+\r
+       private static Handler mHandler = new Handler() {\r
+               @Override\r
+               public void handleMessage(Message msg) {\r
+                       switch (msg.what) {\r
+                       case MSG_LONGPRESS_TIMEOUT:\r
+                               if (!mLaunched) {\r
+                                       Context context = (Context) msg.obj;\r
+                                       Intent i = new Intent();\r
+                                       i.putExtra("autoshuffle", "true");\r
+                                       i.setClass(context, MusicBrowserActivity.class);\r
+                                       i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK\r
+                                                       | Intent.FLAG_ACTIVITY_CLEAR_TOP);\r
+                                       context.startActivity(i);\r
+                                       mLaunched = true;\r
+                               }\r
+                               break;\r
+                       }\r
+               }\r
+       };\r
+\r
+       @Override\r
+       public void onReceive(Context context, Intent intent) {\r
+               String intentAction = intent.getAction();\r
+\r
+               if (AudioManager.ACTION_AUDIO_BECOMING_NOISY.equals(intentAction)) {\r
+                       Intent i = new Intent(context, MediaPlaybackService.class);\r
+                       i.setAction(MediaPlaybackService.SERVICECMD);\r
+                       i.putExtra(MediaPlaybackService.CMDNAME,\r
+                                       MediaPlaybackService.CMDPAUSE);\r
+                       context.startService(i);\r
+               } else if (Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {\r
+                       KeyEvent event = (KeyEvent) intent\r
+                                       .getParcelableExtra(Intent.EXTRA_KEY_EVENT);\r
+\r
+                       if (event == null) {\r
+                               return;\r
+                       }\r
+\r
+                       int keycode = event.getKeyCode();\r
+                       int action = event.getAction();\r
+                       long eventtime = event.getEventTime();\r
+                       int buttonId = intent.getIntExtra(MediaPlaybackService.CMDNOTIF, 0);\r
+\r
+                       // single quick press: pause/resume.\r
+                       // double press: next track\r
+                       // long press: start auto-shuffle mode.\r
+\r
+                       String command = null;\r
+                       switch (keycode) {\r
+                       case KeyEvent.KEYCODE_MEDIA_STOP:\r
+                               command = MediaPlaybackService.CMDSTOP;\r
+                               break;\r
+                       case KeyEvent.KEYCODE_HEADSETHOOK:\r
+                       case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:\r
+                               command = MediaPlaybackService.CMDTOGGLEPAUSE;\r
+\r
+                               break;\r
+                       case KeyEvent.KEYCODE_MEDIA_NEXT:\r
+                               command = MediaPlaybackService.CMDNEXT;\r
+\r
+                               break;\r
+                       case KeyEvent.KEYCODE_MEDIA_PREVIOUS:\r
+                               command = MediaPlaybackService.CMDPREVIOUS;\r
+\r
+                               break;\r
+\r
+                       }\r
+\r
+                       if (command != null) {\r
+                               if (action == KeyEvent.ACTION_DOWN) {\r
+                                       if (mDown && (buttonId == 0)) {\r
+                                               if ((MediaPlaybackService.CMDTOGGLEPAUSE\r
+                                                               .equals(command) || MediaPlaybackService.CMDPLAY\r
+                                                               .equals(command))\r
+                                                               && mLastClickTime != 0\r
+                                                               && eventtime - mLastClickTime > LONG_PRESS_DELAY) {\r
+                                                       mHandler.sendMessage(mHandler.obtainMessage(\r
+                                                                       MSG_LONGPRESS_TIMEOUT, context));\r
+\r
+                                               }\r
+                                       } else if (event.getRepeatCount() == 0) {\r
+\r
+                                               // only consider the first event in a sequence, not the\r
+                                               // repeat events,\r
+                                               // so that we don't trigger in cases where the first\r
+                                               // event went to\r
+                                               // a different app (e.g. when the user ends a phone call\r
+                                               // by\r
+                                               // long pressing the headset button)\r
+\r
+                                               // The service may or may not be running, but we need to\r
+                                               // send it\r
+\r
+                                               // a command.\r
+                                               Intent i = new Intent(context,\r
+                                                               MediaPlaybackService.class);\r
+\r
+                                               i.setAction(MediaPlaybackService.SERVICECMD);\r
+                                               if (keycode == KeyEvent.KEYCODE_HEADSETHOOK\r
+                                                               && eventtime - mLastClickTime < 300) {\r
+                                                       i.putExtra(MediaPlaybackService.CMDNAME,\r
+                                                                       MediaPlaybackService.CMDNEXT);\r
+\r
+                                                       context.startService(i);\r
+                                                       mLastClickTime = 0;\r
+                                               } else {\r
+                                                       i.putExtra(MediaPlaybackService.CMDNAME, command);\r
+                                                       context.startService(i);\r
+                                                       mLastClickTime = eventtime;\r
+\r
+                                               }\r
+\r
+                                               mLaunched = false;\r
+                                               if (buttonId == 0) {\r
+                                                       mDown = true;\r
+\r
+                                               }\r
+                                       }\r
+                               } else {\r
+                                       mHandler.removeMessages(MSG_LONGPRESS_TIMEOUT);\r
+                                       mDown = false;\r
+\r
+                               }\r
+                               if (isOrderedBroadcast()) {\r
+                                       abortBroadcast();\r
+\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+}\r