Handle media keys in PlaybackActivities
Avoids the overhead of the broadcast when the activity has focus
This commit is contained in:
parent
e5d3053a44
commit
a8bf7536ac
@ -139,15 +139,10 @@ public class MediaButtonHandler implements Handler.Callback {
|
||||
}
|
||||
|
||||
/**
|
||||
* Process a MediaButton broadcast.
|
||||
*
|
||||
* @param intent The intent that was broadcast
|
||||
* @return True if the intent was handled and the broadcast should be
|
||||
* aborted.
|
||||
* Process a media button key press.
|
||||
*/
|
||||
public boolean process(Intent intent)
|
||||
public boolean processKey(KeyEvent event)
|
||||
{
|
||||
KeyEvent event = intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
|
||||
if (event == null || isInCall() || !useHeadsetControls())
|
||||
return false;
|
||||
|
||||
@ -156,7 +151,7 @@ public class MediaButtonHandler implements Handler.Callback {
|
||||
switch (event.getKeyCode()) {
|
||||
case KeyEvent.KEYCODE_HEADSETHOOK:
|
||||
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
|
||||
// single click: pause/resume.
|
||||
// single click: pause/resume.
|
||||
// double click: next track
|
||||
|
||||
if (action == KeyEvent.ACTION_DOWN) {
|
||||
@ -184,6 +179,19 @@ public class MediaButtonHandler implements Handler.Callback {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Process a MediaButton broadcast.
|
||||
*
|
||||
* @param intent The intent that was broadcast
|
||||
* @return True if the intent was handled and the broadcast should be
|
||||
* aborted.
|
||||
*/
|
||||
public boolean process(Intent intent)
|
||||
{
|
||||
KeyEvent event = intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
|
||||
return processKey(event);
|
||||
}
|
||||
|
||||
/**
|
||||
* A delayed message that performs the single press action after the double
|
||||
* click period has expired.
|
||||
@ -202,4 +210,4 @@ public class MediaButtonHandler implements Handler.Callback {
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -93,6 +93,34 @@ public class PlaybackActivity extends Activity implements Handler.Callback, View
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onKeyDown(int keyCode, KeyEvent event)
|
||||
{
|
||||
switch (keyCode) {
|
||||
case KeyEvent.KEYCODE_HEADSETHOOK:
|
||||
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
|
||||
case KeyEvent.KEYCODE_MEDIA_NEXT:
|
||||
case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
|
||||
return MediaButtonHandler.getInstance().processKey(event);
|
||||
}
|
||||
|
||||
return super.onKeyDown(keyCode, event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onKeyUp(int keyCode, KeyEvent event)
|
||||
{
|
||||
switch (keyCode) {
|
||||
case KeyEvent.KEYCODE_HEADSETHOOK:
|
||||
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
|
||||
case KeyEvent.KEYCODE_MEDIA_NEXT:
|
||||
case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
|
||||
return MediaButtonHandler.getInstance().processKey(event);
|
||||
}
|
||||
|
||||
return super.onKeyUp(keyCode, event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onKeyLongPress(int keyCode, KeyEvent event)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user