package com.mercandalli.android.apps.files.file.audio;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.support.annotation.NonNull;
/**
* A {@link BroadcastReceiver} to receive the {@link FileAudioModel} notification actions.
* TODO
*/
public class NotificationAudioPlayerReceiver extends BroadcastReceiver {
/**
* The action start {@link FileAudioActivity}.
*/
private static final String ACTION_ACTIVITY = "NotificationAudioPlayerReceiver.Actions.ACTION_ACTIVITY";
/**
* The action play or pause.
*/
private static final String ACTION_PLAY_PAUSE = "NotificationAudioPlayerReceiver.Actions.ACTION_PLAY_PAUSE";
/**
* The action pause.
*/
private static final String ACTION_PAUSE = "NotificationAudioPlayerReceiver.Actions.ACTION_PAUSE";
/**
* The action previous.
*/
private static final String ACTION_PREVIOUS = "NotificationAudioPlayerReceiver.Actions.ACTION_PREVIOUS";
/**
* The action next.
*/
private static final String ACTION_NEXT = "NotificationAudioPlayerReceiver.Actions.ACTION_NEXT";
/**
* The action close.
*/
private static final String ACTION_CLOSE = "NotificationAudioPlayerReceiver.Actions.ACTION_CLOSE";
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
final FileAudioPlayerManager fileAudioPlayerManager = FileAudioPlayerManager.getInstance(context);
if (fileAudioPlayerManager.isEmpty()) {
fileAudioPlayerManager.setNotification(false);
return;
}
switch (action) {
case ACTION_ACTIVITY:
FileAudioActivity.resume(context);
break;
case ACTION_PLAY_PAUSE:
if (fileAudioPlayerManager.isPlaying()) {
fileAudioPlayerManager.pause();
} else {
fileAudioPlayerManager.play();
}
break;
case ACTION_PAUSE:
fileAudioPlayerManager.pause();
break;
case ACTION_NEXT:
fileAudioPlayerManager.next();
break;
case ACTION_PREVIOUS:
fileAudioPlayerManager.previous();
break;
case ACTION_CLOSE:
if (fileAudioPlayerManager.isPlaying()) {
fileAudioPlayerManager.pause();
}
break;
}
}
public static PendingIntent getNotificationIntentActivity(@NonNull final Context context) {
return getPendingIntent(context, ACTION_ACTIVITY);
}
public static PendingIntent getNotificationIntentPlayPause(@NonNull final Context context) {
return getPendingIntent(context, ACTION_PLAY_PAUSE);
}
public static PendingIntent getNotificationIntentPause(@NonNull final Context context) {
return getPendingIntent(context, ACTION_PAUSE);
}
public static PendingIntent getNotificationIntentPrevious(@NonNull final Context context) {
return getPendingIntent(context, ACTION_PREVIOUS);
}
public static PendingIntent getNotificationIntentNext(@NonNull final Context context) {
return getPendingIntent(context, ACTION_NEXT);
}
public static PendingIntent getNotificationIntentClose(@NonNull final Context context) {
return getPendingIntent(context, ACTION_CLOSE);
}
private static PendingIntent getPendingIntent(
@NonNull final Context context,
@NonNull
final String action) {
final Intent intent = new Intent(context, NotificationAudioPlayerReceiver.class);
intent.setAction(action);
return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
}
}