package com.wigwamlabs.spotify;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.view.KeyEvent;
public class StaticBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (Intent.ACTION_MEDIA_BUTTON.equals(action)) {
final KeyEvent keyEvent = intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (keyEvent != null) {
handleMediaButton(context, keyEvent);
}
}
}
private void handleMediaButton(Context context, KeyEvent keyEvent) {
if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) {
switch (keyEvent.getKeyCode()) {
case KeyEvent.KEYCODE_HEADSETHOOK:
Debug.logMediaButton("headset hook");
sendActionToService(context, SpotifyService.ACTION_TOGGLE_PAUSE);
break;
case KeyEvent.KEYCODE_MEDIA_NEXT:
Debug.logMediaButton("next");
sendActionToService(context, SpotifyService.ACTION_NEXT);
break;
case KeyEvent.KEYCODE_MEDIA_PAUSE:
Debug.logMediaButton("pause");
sendActionToService(context, SpotifyService.ACTION_PAUSE);
break;
case KeyEvent.KEYCODE_MEDIA_PLAY:
Debug.logMediaButton("play");
sendActionToService(context, SpotifyService.ACTION_RESUME);
break;
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
Debug.logMediaButton("play/pause");
sendActionToService(context, SpotifyService.ACTION_TOGGLE_PAUSE);
break;
case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
Debug.logMediaButton("previous");
break;
case KeyEvent.KEYCODE_MEDIA_STOP:
Debug.logMediaButton("stop");
sendActionToService(context, SpotifyService.ACTION_PAUSE); //TODO add support for stop
break;
default:
Debug.logMediaButton("unknown: " + keyEvent);
break;
}
}
}
private void sendActionToService(Context context, String action) {
final Intent intent = new Intent(context, SpotifyService.class);
intent.setAction(action);
context.startService(intent);
}
}