Source code
package android.support.v4.media.session;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.view.KeyEvent;
import java.util.List;
public class MediaButtonReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Intent queryIntent = new Intent("android.intent.action.MEDIA_BUTTON");
queryIntent.setPackage(context.getPackageName());
List<ResolveInfo> resolveInfos = context.getPackageManager().queryIntentServices(queryIntent, 0);
if (resolveInfos.size() != 1) {
throw new IllegalStateException("Expected 1 Service that handles android.intent.action.MEDIA_BUTTON, found " + resolveInfos.size());
}
ResolveInfo resolveInfo = (ResolveInfo) resolveInfos.get(0);
intent.setComponent(new ComponentName(resolveInfo.serviceInfo.packageName, resolveInfo.serviceInfo.name));
context.startService(intent);
}
public static KeyEvent handleIntent(MediaSessionCompat mediaSessionCompat, Intent intent) {
if (mediaSessionCompat == null || intent == null || !"android.intent.action.MEDIA_BUTTON".equals(intent.getAction()) || !intent.hasExtra("android.intent.extra.KEY_EVENT")) {
return null;
}
KeyEvent ke = (KeyEvent) intent.getParcelableExtra("android.intent.extra.KEY_EVENT");
mediaSessionCompat.getController().dispatchMediaButtonEvent(ke);
return ke;
}
}