unify media button receivers

This commit is contained in:
Domingos Lopes 2016-04-08 20:35:11 -04:00
parent 4b4743fbb9
commit 280321a321
4 changed files with 7 additions and 42 deletions

View File

@ -331,11 +331,6 @@
android:scheme="package"/>
</intent-filter>
</receiver>
<receiver android:name="de.danoeh.antennapod.core.service.playback.MediaButtonIntentReceiver">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
<meta-data
android:name="de.danoeh.antennapod.core.glide.ApGlideModule"

View File

@ -13,6 +13,7 @@ import de.danoeh.antennapod.core.service.playback.PlaybackService;
public class MediaButtonReceiver extends BroadcastReceiver {
private static final String TAG = "MediaButtonReceiver";
public static final String EXTRA_KEYCODE = "de.danoeh.antennapod.core.service.extra.MediaButtonReceiver.KEYCODE";
public static final String EXTRA_SOURCE = "de.danoeh.antennapod.core.service.extra.MediaButtonReceiver.SOURCE";
public static final String NOTIFY_BUTTON_RECEIVER = "de.danoeh.antennapod.NOTIFY_BUTTON_RECEIVER";
@ -20,11 +21,11 @@ public class MediaButtonReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "Received intent");
KeyEvent event = (KeyEvent) intent.getExtras().get(Intent.EXTRA_KEY_EVENT);
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (event != null && event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount()==0) {
ClientConfig.initialize(context);
Intent serviceIntent = new Intent(context, PlaybackService.class);
int keycode = event.getKeyCode();
serviceIntent.putExtra(EXTRA_KEYCODE, keycode);
serviceIntent.putExtra(EXTRA_KEYCODE, event.getKeyCode());
serviceIntent.putExtra(EXTRA_SOURCE, event.getSource());
context.startService(serviceIntent);
}

View File

@ -1,30 +0,0 @@
package de.danoeh.antennapod.core.service.playback;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.KeyEvent;
public class MediaButtonIntentReceiver extends BroadcastReceiver {
private static final String TAG = "MediaButtonIntentRcver";
private static PlaybackService mPlaybackService;
public static void setMediaPlayer(PlaybackService playbackService) {
mPlaybackService = playbackService;
}
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "onReceive(Context, " + intent.toString() +")");
if (mPlaybackService != null && Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {
KeyEvent event = intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (event != null && event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
mPlaybackService.handleKeycode(event.getKeyCode(), event.getSource());
}
}
}
}

View File

@ -250,8 +250,7 @@ public class PlaybackService extends Service implements SharedPreferences.OnShar
taskManager = new PlaybackServiceTaskManager(this, taskManagerCallback);
mediaPlayer = new PlaybackServiceMediaPlayer(this, mediaPlayerCallback);
MediaButtonIntentReceiver.setMediaPlayer(this);
ComponentName eventReceiver = new ComponentName(getPackageName(), MediaButtonIntentReceiver.class.getName());
ComponentName eventReceiver = new ComponentName(getPackageName(), MediaButtonReceiver.class.getName());
Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
mediaButtonIntent.setComponent(eventReceiver);
PendingIntent buttonReceiverIntent = PendingIntent.getBroadcast(this, 0, mediaButtonIntent, PendingIntent.FLAG_UPDATE_CURRENT);
@ -284,7 +283,6 @@ public class PlaybackService extends Service implements SharedPreferences.OnShar
PreferenceManager.getDefaultSharedPreferences(this)
.unregisterOnSharedPreferenceChangeListener(this);
MediaButtonIntentReceiver.setMediaPlayer(null);
unregisterReceiver(headsetDisconnected);
unregisterReceiver(shutdownReceiver);
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
@ -333,7 +331,8 @@ public class PlaybackService extends Service implements SharedPreferences.OnShar
if (keycode != -1) {
Log.d(TAG, "Received media button event");
handleKeycode(keycode, InputDevice.SOURCE_CLASS_NONE);
handleKeycode(keycode, intent.getIntExtra(MediaButtonReceiver.EXTRA_SOURCE,
InputDevice.SOURCE_CLASS_NONE));
} else {
started = true;
boolean stream = intent.getBooleanExtra(EXTRA_SHOULD_STREAM,