1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
| package loris.widget.time;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.widget.RemoteViews;
import android.widget.Toast;
public class timeActivity extends AppWidgetProvider {
private static final String INTENT_UPDATE = "loris.widget.time.update";
private static final Integer ALL_WIDGETS = -1;
private final int SET_ALARM = 1;
private final int CANCEL_ALARM = 2;
Integer WIDGETID = -1;
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
manageAlarm(context, SET_ALARM);
WIDGETID = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,ALL_WIDGETS);
else if (INTENT_UPDATE.equals(intent.getAction())) {
int appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,ALL_WIDGETS);
buildView(context,WIDGETID);
}
}
@Override
public void onEnabled(Context context) {
super.onEnabled(context);
Toast.makeText(context,"onEnabled Loris-widget-time n° "+String.valueOf(WIDGETID) , Toast.LENGTH_LONG).show();
manageAlarm(context, SET_ALARM);
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
buildView(context,ALL_WIDGETS);
}
@Override
public void onDisabled(Context context) {
super.onDisabled(context);
Toast.makeText(context,"onDisabled Loris-widget-time n° "+String.valueOf(WIDGETID) , Toast.LENGTH_LONG).show();
manageAlarm(context, CANCEL_ALARM);
}
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
super.onDeleted(context, appWidgetIds);
Toast.makeText(context,"onDeleted Loris-widget-time n° "+String.valueOf(WIDGETID) , Toast.LENGTH_LONG).show();
manageAlarm(context, CANCEL_ALARM);
}
private void buildView(Context context,int widgetId){
SimpleDateFormat heure = new SimpleDateFormat("HH:mm:ss");
SimpleDateFormat date = new SimpleDateFormat("EEEE dd MMMM yyyy");
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
ComponentName componentName = new ComponentName(context, timeActivity.class);
int[] appWidgetIds = appWidgetManager.getAppWidgetIds(componentName);
final int N = appWidgetIds.length;
RemoteViews views;
int appWidgetId;
for (int i = 0; i < N; i++) {
appWidgetId = appWidgetIds[i];
if ((widgetId == ALL_WIDGETS) || (widgetId == appWidgetId)) {
views = new RemoteViews(context.getPackageName(), R.layout.main);
views.setTextViewText(R.id.tv_titre, " Loris-widget-time n° " + String.valueOf(appWidgetId));
views.setTextViewText(R.id.tv_contenu, heure.format(new Date())+"\n"+date.format(new Date()));
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
}
private void manageAlarm(Context context, int action) {
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(INTENT_UPDATE);
PendingIntent pendingIntentUpdate = PendingIntent.getBroadcast(context, 0, intent, 0);
if (CANCEL_ALARM == action) {
alarmManager.cancel(pendingIntentUpdate);
} else if (SET_ALARM == action) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 1);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(),
1*1000,
pendingIntentUpdate);
}
}
} |
Partager