I have configured a new intent CLOCK_WIDGET_UPDATE in my manifest.
<activity android:name=".dayNightClockWidgetConfigureActivity" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
</intent-filter>
<intent-filter>
<action android:name="CLOCK_WIDGET_UPDATE" />
</intent-filter>
</activity>
I am using alarm manager to update a clock widget (configured it to update every 5 seconds for testing). but the timer is not updating automatically. here is my code.
public class dayNightClockWidget extends AppWidgetProvider {
public static String TIME_WIDGET_UPDATE = "manasthemarvel.daynightclockwidget.CLOCK_WIDGET_UPDATE";
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
// There may be multiple widgets active, so update all of them
final int N = appWidgetIds.length;
for (int i = 0; i < N; i++) {
updateAppWidget(context, appWidgetManager, appWidgetIds[i]);
}
}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
if(TIME_WIDGET_UPDATE.equals(intent.getAction())){
ComponentName thisAppWidget = new ComponentName(context.getPackageName(), getClass().getName());
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
int ids[] = appWidgetManager.getAppWidgetIds(thisAppWidget);
for (int appWidgetID: ids) {
updateAppWidget(context, appWidgetManager, appWidgetID);
}
}
}
@Override
public void onEnabled(Context context) {
// Enter relevant functionality for when the first widget is created
super.onEnabled(context);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
// Set update frequency
alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis(), 5000, createClockTickIntent(context));
}
static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
int appWidgetId) {
String timeStamp = new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime());
views.setTextViewText(R.id.tvClockText, timeStamp);
// Instruct the widget manager to update the widget
appWidgetManager.updateAppWidget(appWidgetId, views);
}
private PendingIntent createClockTickIntent(Context context) {
Intent intent = new Intent(TIME_WIDGET_UPDATE);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
return pendingIntent;
}
}
What am I doing wrong? cant figure it out.
0 comments:
Post a Comment