Merge pull request #229 from arkon/widget-refactor
Refactor widget classes
This commit is contained in:
commit
5b4dc41d1f
5 changed files with 61 additions and 207 deletions
|
|
@ -1,7 +1,6 @@
|
||||||
package com.kabouzeid.gramophone.appwidgets;
|
package com.kabouzeid.gramophone.appwidgets;
|
||||||
|
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
import android.appwidget.AppWidgetManager;
|
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
|
@ -25,9 +24,6 @@ import com.kabouzeid.gramophone.service.MusicService;
|
||||||
import com.kabouzeid.gramophone.ui.activities.MainActivity;
|
import com.kabouzeid.gramophone.ui.activities.MainActivity;
|
||||||
import com.kabouzeid.gramophone.util.Util;
|
import com.kabouzeid.gramophone.util.Util;
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Karim Abou Zeid (kabouzeid)
|
|
||||||
*/
|
|
||||||
public class AppWidgetBig extends BaseAppWidget {
|
public class AppWidgetBig extends BaseAppWidget {
|
||||||
public static final String NAME = "app_widget_big";
|
public static final String NAME = "app_widget_big";
|
||||||
|
|
||||||
|
|
@ -41,25 +37,11 @@ public class AppWidgetBig extends BaseAppWidget {
|
||||||
return mInstance;
|
return mInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void onUpdate(final Context context, final AppWidgetManager appWidgetManager,
|
|
||||||
final int[] appWidgetIds) {
|
|
||||||
defaultAppWidget(context, appWidgetIds);
|
|
||||||
final Intent updateIntent = new Intent(MusicService.APP_WIDGET_UPDATE);
|
|
||||||
updateIntent.putExtra(MusicService.EXTRA_APP_WIDGET_NAME, NAME);
|
|
||||||
updateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
|
|
||||||
updateIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
|
|
||||||
context.sendBroadcast(updateIntent);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize given widgets to default state, where we launch Music on
|
* Initialize given widgets to default state, where we launch Music on
|
||||||
* default click and hide actions if service not running.
|
* default click and hide actions if service not running.
|
||||||
*/
|
*/
|
||||||
private void defaultAppWidget(final Context context, final int[] appWidgetIds) {
|
protected void defaultAppWidget(final Context context, final int[] appWidgetIds) {
|
||||||
final RemoteViews appWidgetView = new RemoteViews(context.getPackageName(), R.layout.app_widget_big);
|
final RemoteViews appWidgetView = new RemoteViews(context.getPackageName(), R.layout.app_widget_big);
|
||||||
|
|
||||||
appWidgetView.setViewVisibility(R.id.media_titles, View.INVISIBLE);
|
appWidgetView.setViewVisibility(R.id.media_titles, View.INVISIBLE);
|
||||||
|
|
@ -72,38 +54,6 @@ public class AppWidgetBig extends BaseAppWidget {
|
||||||
pushUpdate(context, appWidgetIds, appWidgetView);
|
pushUpdate(context, appWidgetIds, appWidgetView);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void pushUpdate(final Context context, final int[] appWidgetIds, final RemoteViews views) {
|
|
||||||
final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
|
|
||||||
if (appWidgetIds != null) {
|
|
||||||
appWidgetManager.updateAppWidget(appWidgetIds, views);
|
|
||||||
} else {
|
|
||||||
appWidgetManager.updateAppWidget(new ComponentName(context, getClass()), views);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check against {@link AppWidgetManager} if there are any instances of this
|
|
||||||
* widget.
|
|
||||||
*/
|
|
||||||
private boolean hasInstances(final Context context) {
|
|
||||||
final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
|
|
||||||
final int[] mAppWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context,
|
|
||||||
getClass()));
|
|
||||||
return mAppWidgetIds.length > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handle a change notification coming over from
|
|
||||||
* {@link MusicService}
|
|
||||||
*/
|
|
||||||
public void notifyChange(final MusicService service, final String what) {
|
|
||||||
if (hasInstances(service)) {
|
|
||||||
if (MusicService.META_CHANGED.equals(what) || MusicService.PLAY_STATE_CHANGED.equals(what)) {
|
|
||||||
performUpdate(service, null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update all active widget instances by pushing changes
|
* Update all active widget instances by pushing changes
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package com.kabouzeid.gramophone.appwidgets;
|
package com.kabouzeid.gramophone.appwidgets;
|
||||||
|
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
import android.appwidget.AppWidgetManager;
|
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
|
@ -31,10 +30,9 @@ public class AppWidgetCard extends BaseAppWidget {
|
||||||
public static final String NAME = "app_widget_card";
|
public static final String NAME = "app_widget_card";
|
||||||
|
|
||||||
private static AppWidgetCard mInstance;
|
private static AppWidgetCard mInstance;
|
||||||
private Target<BitmapPaletteWrapper> target; // for cancellation
|
|
||||||
|
|
||||||
private static int imageSize = 0;
|
private static int imageSize = 0;
|
||||||
private static float cardRadius = 0f;
|
private static float cardRadius = 0f;
|
||||||
|
private Target<BitmapPaletteWrapper> target; // for cancellation
|
||||||
|
|
||||||
public static synchronized AppWidgetCard getInstance() {
|
public static synchronized AppWidgetCard getInstance() {
|
||||||
if (mInstance == null) {
|
if (mInstance == null) {
|
||||||
|
|
@ -43,25 +41,11 @@ public class AppWidgetCard extends BaseAppWidget {
|
||||||
return mInstance;
|
return mInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void onUpdate(final Context context, final AppWidgetManager appWidgetManager,
|
|
||||||
final int[] appWidgetIds) {
|
|
||||||
defaultAppWidget(context, appWidgetIds);
|
|
||||||
final Intent updateIntent = new Intent(MusicService.APP_WIDGET_UPDATE);
|
|
||||||
updateIntent.putExtra(MusicService.EXTRA_APP_WIDGET_NAME, NAME);
|
|
||||||
updateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
|
|
||||||
updateIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
|
|
||||||
context.sendBroadcast(updateIntent);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize given widgets to default state, where we launch Music on
|
* Initialize given widgets to default state, where we launch Music on
|
||||||
* default click and hide actions if service not running.
|
* default click and hide actions if service not running.
|
||||||
*/
|
*/
|
||||||
private void defaultAppWidget(final Context context, final int[] appWidgetIds) {
|
protected void defaultAppWidget(final Context context, final int[] appWidgetIds) {
|
||||||
final RemoteViews appWidgetView = new RemoteViews(context.getPackageName(), R.layout.app_widget_card);
|
final RemoteViews appWidgetView = new RemoteViews(context.getPackageName(), R.layout.app_widget_card);
|
||||||
|
|
||||||
appWidgetView.setViewVisibility(R.id.media_titles, View.INVISIBLE);
|
appWidgetView.setViewVisibility(R.id.media_titles, View.INVISIBLE);
|
||||||
|
|
@ -74,38 +58,6 @@ public class AppWidgetCard extends BaseAppWidget {
|
||||||
pushUpdate(context, appWidgetIds, appWidgetView);
|
pushUpdate(context, appWidgetIds, appWidgetView);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void pushUpdate(final Context context, final int[] appWidgetIds, final RemoteViews views) {
|
|
||||||
final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
|
|
||||||
if (appWidgetIds != null) {
|
|
||||||
appWidgetManager.updateAppWidget(appWidgetIds, views);
|
|
||||||
} else {
|
|
||||||
appWidgetManager.updateAppWidget(new ComponentName(context, getClass()), views);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check against {@link AppWidgetManager} if there are any instances of this
|
|
||||||
* widget.
|
|
||||||
*/
|
|
||||||
private boolean hasInstances(final Context context) {
|
|
||||||
final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
|
|
||||||
final int[] mAppWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context,
|
|
||||||
getClass()));
|
|
||||||
return mAppWidgetIds.length > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handle a change notification coming over from
|
|
||||||
* {@link MusicService}
|
|
||||||
*/
|
|
||||||
public void notifyChange(final MusicService service, final String what) {
|
|
||||||
if (hasInstances(service)) {
|
|
||||||
if (MusicService.META_CHANGED.equals(what) || MusicService.PLAY_STATE_CHANGED.equals(what)) {
|
|
||||||
performUpdate(service, null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update all active widget instances by pushing changes
|
* Update all active widget instances by pushing changes
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package com.kabouzeid.gramophone.appwidgets;
|
package com.kabouzeid.gramophone.appwidgets;
|
||||||
|
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
import android.appwidget.AppWidgetManager;
|
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
|
@ -24,9 +23,6 @@ import com.kabouzeid.gramophone.service.MusicService;
|
||||||
import com.kabouzeid.gramophone.ui.activities.MainActivity;
|
import com.kabouzeid.gramophone.ui.activities.MainActivity;
|
||||||
import com.kabouzeid.gramophone.util.Util;
|
import com.kabouzeid.gramophone.util.Util;
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Karim Abou Zeid (kabouzeid)
|
|
||||||
*/
|
|
||||||
public class AppWidgetClassic extends BaseAppWidget {
|
public class AppWidgetClassic extends BaseAppWidget {
|
||||||
public static final String NAME = "app_widget_classic";
|
public static final String NAME = "app_widget_classic";
|
||||||
|
|
||||||
|
|
@ -40,25 +36,11 @@ public class AppWidgetClassic extends BaseAppWidget {
|
||||||
return mInstance;
|
return mInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void onUpdate(final Context context, final AppWidgetManager appWidgetManager,
|
|
||||||
final int[] appWidgetIds) {
|
|
||||||
defaultAppWidget(context, appWidgetIds);
|
|
||||||
final Intent updateIntent = new Intent(MusicService.APP_WIDGET_UPDATE);
|
|
||||||
updateIntent.putExtra(MusicService.EXTRA_APP_WIDGET_NAME, NAME);
|
|
||||||
updateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
|
|
||||||
updateIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
|
|
||||||
context.sendBroadcast(updateIntent);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize given widgets to default state, where we launch Music on
|
* Initialize given widgets to default state, where we launch Music on
|
||||||
* default click and hide actions if service not running.
|
* default click and hide actions if service not running.
|
||||||
*/
|
*/
|
||||||
private void defaultAppWidget(final Context context, final int[] appWidgetIds) {
|
protected void defaultAppWidget(final Context context, final int[] appWidgetIds) {
|
||||||
final RemoteViews appWidgetView = new RemoteViews(context.getPackageName(), R.layout.app_widget_classic);
|
final RemoteViews appWidgetView = new RemoteViews(context.getPackageName(), R.layout.app_widget_classic);
|
||||||
|
|
||||||
appWidgetView.setViewVisibility(R.id.media_titles, View.INVISIBLE);
|
appWidgetView.setViewVisibility(R.id.media_titles, View.INVISIBLE);
|
||||||
|
|
@ -71,38 +53,6 @@ public class AppWidgetClassic extends BaseAppWidget {
|
||||||
pushUpdate(context, appWidgetIds, appWidgetView);
|
pushUpdate(context, appWidgetIds, appWidgetView);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void pushUpdate(final Context context, final int[] appWidgetIds, final RemoteViews views) {
|
|
||||||
final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
|
|
||||||
if (appWidgetIds != null) {
|
|
||||||
appWidgetManager.updateAppWidget(appWidgetIds, views);
|
|
||||||
} else {
|
|
||||||
appWidgetManager.updateAppWidget(new ComponentName(context, getClass()), views);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check against {@link AppWidgetManager} if there are any instances of this
|
|
||||||
* widget.
|
|
||||||
*/
|
|
||||||
private boolean hasInstances(final Context context) {
|
|
||||||
final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
|
|
||||||
final int[] mAppWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context,
|
|
||||||
getClass()));
|
|
||||||
return mAppWidgetIds.length > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handle a change notification coming over from
|
|
||||||
* {@link MusicService}
|
|
||||||
*/
|
|
||||||
public void notifyChange(final MusicService service, final String what) {
|
|
||||||
if (hasInstances(service)) {
|
|
||||||
if (MusicService.META_CHANGED.equals(what) || MusicService.PLAY_STATE_CHANGED.equals(what)) {
|
|
||||||
performUpdate(service, null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update all active widget instances by pushing changes
|
* Update all active widget instances by pushing changes
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package com.kabouzeid.gramophone.appwidgets;
|
package com.kabouzeid.gramophone.appwidgets;
|
||||||
|
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
import android.appwidget.AppWidgetManager;
|
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
|
@ -24,9 +23,6 @@ import com.kabouzeid.gramophone.service.MusicService;
|
||||||
import com.kabouzeid.gramophone.ui.activities.MainActivity;
|
import com.kabouzeid.gramophone.ui.activities.MainActivity;
|
||||||
import com.kabouzeid.gramophone.util.Util;
|
import com.kabouzeid.gramophone.util.Util;
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Karim Abou Zeid (kabouzeid)
|
|
||||||
*/
|
|
||||||
public class AppWidgetSmall extends BaseAppWidget {
|
public class AppWidgetSmall extends BaseAppWidget {
|
||||||
public static final String NAME = "app_widget_small";
|
public static final String NAME = "app_widget_small";
|
||||||
|
|
||||||
|
|
@ -40,25 +36,11 @@ public class AppWidgetSmall extends BaseAppWidget {
|
||||||
return mInstance;
|
return mInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void onUpdate(final Context context, final AppWidgetManager appWidgetManager,
|
|
||||||
final int[] appWidgetIds) {
|
|
||||||
defaultAppWidget(context, appWidgetIds);
|
|
||||||
final Intent updateIntent = new Intent(MusicService.APP_WIDGET_UPDATE);
|
|
||||||
updateIntent.putExtra(MusicService.EXTRA_APP_WIDGET_NAME, NAME);
|
|
||||||
updateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
|
|
||||||
updateIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
|
|
||||||
context.sendBroadcast(updateIntent);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize given widgets to default state, where we launch Music on
|
* Initialize given widgets to default state, where we launch Music on
|
||||||
* default click and hide actions if service not running.
|
* default click and hide actions if service not running.
|
||||||
*/
|
*/
|
||||||
private void defaultAppWidget(final Context context, final int[] appWidgetIds) {
|
protected void defaultAppWidget(final Context context, final int[] appWidgetIds) {
|
||||||
final RemoteViews appWidgetView = new RemoteViews(context.getPackageName(), R.layout.app_widget_small);
|
final RemoteViews appWidgetView = new RemoteViews(context.getPackageName(), R.layout.app_widget_small);
|
||||||
|
|
||||||
appWidgetView.setViewVisibility(R.id.media_titles, View.INVISIBLE);
|
appWidgetView.setViewVisibility(R.id.media_titles, View.INVISIBLE);
|
||||||
|
|
@ -71,38 +53,6 @@ public class AppWidgetSmall extends BaseAppWidget {
|
||||||
pushUpdate(context, appWidgetIds, appWidgetView);
|
pushUpdate(context, appWidgetIds, appWidgetView);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void pushUpdate(final Context context, final int[] appWidgetIds, final RemoteViews views) {
|
|
||||||
final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
|
|
||||||
if (appWidgetIds != null) {
|
|
||||||
appWidgetManager.updateAppWidget(appWidgetIds, views);
|
|
||||||
} else {
|
|
||||||
appWidgetManager.updateAppWidget(new ComponentName(context, getClass()), views);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check against {@link AppWidgetManager} if there are any instances of this
|
|
||||||
* widget.
|
|
||||||
*/
|
|
||||||
private boolean hasInstances(final Context context) {
|
|
||||||
final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
|
|
||||||
final int[] mAppWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context,
|
|
||||||
getClass()));
|
|
||||||
return mAppWidgetIds.length > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handle a change notification coming over from
|
|
||||||
* {@link MusicService}
|
|
||||||
*/
|
|
||||||
public void notifyChange(final MusicService service, final String what) {
|
|
||||||
if (hasInstances(service)) {
|
|
||||||
if (MusicService.META_CHANGED.equals(what) || MusicService.PLAY_STATE_CHANGED.equals(what)) {
|
|
||||||
performUpdate(service, null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update all active widget instances by pushing changes
|
* Update all active widget instances by pushing changes
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.kabouzeid.gramophone.appwidgets;
|
package com.kabouzeid.gramophone.appwidgets;
|
||||||
|
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
|
import android.appwidget.AppWidgetManager;
|
||||||
import android.appwidget.AppWidgetProvider;
|
import android.appwidget.AppWidgetProvider;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
@ -12,11 +13,12 @@ import android.graphics.Paint;
|
||||||
import android.graphics.Path;
|
import android.graphics.Path;
|
||||||
import android.graphics.RectF;
|
import android.graphics.RectF;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
|
import android.widget.RemoteViews;
|
||||||
|
|
||||||
/**
|
import com.kabouzeid.gramophone.service.MusicService;
|
||||||
* @author Karim Abou Zeid (kabouzeid)
|
|
||||||
*/
|
public abstract class BaseAppWidget extends AppWidgetProvider {
|
||||||
public class BaseAppWidget extends AppWidgetProvider {
|
public static final String NAME = "app_widget";
|
||||||
|
|
||||||
protected static Bitmap createBitmap(Drawable drawable, float sizeMultiplier) {
|
protected static Bitmap createBitmap(Drawable drawable, float sizeMultiplier) {
|
||||||
Bitmap bitmap = Bitmap.createBitmap((int) (drawable.getIntrinsicWidth() * sizeMultiplier), (int) (drawable.getIntrinsicHeight() * sizeMultiplier), Bitmap.Config.ARGB_8888);
|
Bitmap bitmap = Bitmap.createBitmap((int) (drawable.getIntrinsicWidth() * sizeMultiplier), (int) (drawable.getIntrinsicHeight() * sizeMultiplier), Bitmap.Config.ARGB_8888);
|
||||||
|
|
@ -66,6 +68,56 @@ public class BaseAppWidget extends AppWidgetProvider {
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
abstract protected void defaultAppWidget(final Context context, final int[] appWidgetIds);
|
||||||
|
|
||||||
|
abstract public void performUpdate(final MusicService service, final int[] appWidgetIds);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void onUpdate(final Context context, final AppWidgetManager appWidgetManager,
|
||||||
|
final int[] appWidgetIds) {
|
||||||
|
defaultAppWidget(context, appWidgetIds);
|
||||||
|
final Intent updateIntent = new Intent(MusicService.APP_WIDGET_UPDATE);
|
||||||
|
updateIntent.putExtra(MusicService.EXTRA_APP_WIDGET_NAME, NAME);
|
||||||
|
updateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
|
||||||
|
updateIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
|
||||||
|
context.sendBroadcast(updateIntent);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle a change notification coming over from
|
||||||
|
* {@link MusicService}
|
||||||
|
*/
|
||||||
|
public void notifyChange(final MusicService service, final String what) {
|
||||||
|
if (hasInstances(service)) {
|
||||||
|
if (MusicService.META_CHANGED.equals(what) || MusicService.PLAY_STATE_CHANGED.equals(what)) {
|
||||||
|
performUpdate(service, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void pushUpdate(final Context context, final int[] appWidgetIds, final RemoteViews views) {
|
||||||
|
final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
|
||||||
|
if (appWidgetIds != null) {
|
||||||
|
appWidgetManager.updateAppWidget(appWidgetIds, views);
|
||||||
|
} else {
|
||||||
|
appWidgetManager.updateAppWidget(new ComponentName(context, getClass()), views);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check against {@link AppWidgetManager} if there are any instances of this
|
||||||
|
* widget.
|
||||||
|
*/
|
||||||
|
protected boolean hasInstances(final Context context) {
|
||||||
|
final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
|
||||||
|
final int[] mAppWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context,
|
||||||
|
getClass()));
|
||||||
|
return mAppWidgetIds.length > 0;
|
||||||
|
}
|
||||||
|
|
||||||
protected PendingIntent buildPendingIntent(Context context, final String action, final ComponentName serviceName) {
|
protected PendingIntent buildPendingIntent(Context context, final String action, final ComponentName serviceName) {
|
||||||
Intent intent = new Intent(action);
|
Intent intent = new Intent(action);
|
||||||
intent.setComponent(serviceName);
|
intent.setComponent(serviceName);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue