package com.stxnext.management.android.receivers; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import com.google.common.base.Preconditions; public class CommandReceiver extends BroadcastReceiver { public static final String ACTION_ACTIVITY_COMMAND = "com.stxnext.management.android.receivers.ACTIVITY_ACTION"; public static final int EVENT_ONLINE = 1; public static final int EVENT_OFFLINE = 2; public static final int EVENT_LOST_SESSION = 3; public static final int EVENT_STARTED_SYNC = 4; public static final int EVENT_FINISHED_SYNC = 5; public static final String EXTRA_EVENT_TYPE = "eventType"; private CommandReceiverListener listener; public CommandReceiver(CommandReceiverListener listener) { this.listener = listener; } @Override public void onReceive(Context context, Intent intent) { Bundle extras = intent.getExtras(); validateInput(extras); int eventType = extras.getInt(EXTRA_EVENT_TYPE); if (eventType == EVENT_ONLINE) { this.listener.onOnline(); } if (eventType == EVENT_OFFLINE) { this.listener.onOffline(); } if (eventType == EVENT_LOST_SESSION) { this.listener.onLostSession(); } if(eventType == EVENT_STARTED_SYNC){ this.listener.onSyncStateChanged(true); } if(eventType == EVENT_FINISHED_SYNC){ this.listener.onSyncStateChanged(false); } } private void validateInput(Bundle extras) { Preconditions.checkArgument(extras != null, "no extras provided"); Preconditions.checkArgument(extras.containsKey(EXTRA_EVENT_TYPE), "event type is required"); } public interface CommandReceiverListener { public void onOffline(); public void onOnline(); public void onLostSession(); public void onSyncStateChanged(boolean started); } }