Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<pre><code>public class WidgetProvider extends AppWidgetProvider { //action for buttons public static final String ACTION_WIDGET_PLAY_PAUSE = "btn_play_pause"; public static final String ACTION_WIDGET_STOP = "btn_stop"; public static final String ACTION_WIDGET_PREV_TRACK = "btn_prev_track"; public static final String ACTION_WIDGET_NEXT_TRACK = "btn_next_track"; public static final String ACTION_WIDGET_MUTE = "btn_mute"; public static final String ACTION_WIDGET_VOL_UP = "btn_vol_up"; public static final String ACTION_WIDGET_VOL_DOWN = "btn_vol_down"; public static final String ACTION_WIDGET_EXPAND_WIDGET = "btn_transparent_activity"; // &lt;Action, ButtonId&gt; private static final HashMap&lt;String, Integer&gt; CLICK_INTENT_ACTIONS_MAP = new HashMap&lt;String, Integer&gt;(); // &lt;Actions&gt; private static final ArrayList&lt;String&gt; ACTIONS = new ArrayList&lt;String&gt;(); static { CLICK_INTENT_ACTIONS_MAP.put(ACTION_WIDGET_PLAY_PAUSE, R.id.btn_media_play_pause); CLICK_INTENT_ACTIONS_MAP.put(ACTION_WIDGET_STOP, R.id.btn_media_stop); CLICK_INTENT_ACTIONS_MAP.put(ACTION_WIDGET_PREV_TRACK, R.id.btn_media_previous); CLICK_INTENT_ACTIONS_MAP.put(ACTION_WIDGET_NEXT_TRACK, R.id.btn_media_next); CLICK_INTENT_ACTIONS_MAP.put(ACTION_WIDGET_MUTE, R.id.btn_media_mute); CLICK_INTENT_ACTIONS_MAP.put(ACTION_WIDGET_VOL_UP, R.id.btn_media_vol_up); CLICK_INTENT_ACTIONS_MAP.put(ACTION_WIDGET_VOL_DOWN, R.id.btn_media_vol_down); CLICK_INTENT_ACTIONS_MAP.put(ACTION_WIDGET_EXPAND_WIDGET, R.id.btn_show_activity); // Fill action list ACTIONS.addAll(CLICK_INTENT_ACTIONS_MAP.keySet()); } @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout); Intent activeIntent; PendingIntent actionPendingIntent; int mapSize = CLICK_INTENT_ACTIONS_MAP.size(); // Fill btn id list ArrayList&lt;Integer&gt; btnIds = new ArrayList&lt;Integer&gt;(); btnIds.addAll(CLICK_INTENT_ACTIONS_MAP.values()); // Set button listeners for (int i = 0; i &lt; mapSize; i++) { activeIntent = new Intent(context, WidgetProvider.class); activeIntent.setAction(ACTIONS.get(i)); actionPendingIntent = PendingIntent.getBroadcast(context, 0, activeIntent, 0); remoteViews.setOnClickPendingIntent(btnIds.get(i), actionPendingIntent); } //Update appWidgetManager.updateAppWidget(appWidgetIds, remoteViews); context.startService(new Intent(context.getApplicationContext(), AppControllerService.class)); } @Override public void onReceive(Context context, Intent intent) { final String action = intent.getAction(); if (ACTIONS.contains(action)) { int btnId = CLICK_INTENT_ACTIONS_MAP.get(action); switch (btnId) { case R.id.btn_media_play_pause: case R.id.btn_media_stop: case R.id.btn_media_previous: case R.id.btn_media_next: case R.id.btn_media_mute: case R.id.btn_media_vol_up: case R.id.btn_media_vol_down: break; case R.id.btn_show_activity: Intent i = new Intent(context, ActivityMain.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); break; default: break; } } super.onReceive(context, intent); } @Override public void onDeleted(Context context, int[] appWidgetIds) { super.onDeleted(context, appWidgetIds); } @Override public void onEnabled(Context context) { super.onEnabled(context); } @Override public void onDisabled(Context context) { super.onDisabled(context); } </code></pre> <p>}</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload