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
| package com.IsiTech.WidgetBattery;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import android.widget.RemoteViews;
import android.widget.TextView;
public class WidgetBatteryActivity extends AppWidgetProvider {
static short batteryLevel = 50;
//Uniquement à la création de l'AppWidget
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
{
this.registerReceiver(this.mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
//On mets à jour le niveau de la batterie
updateBattery(); //Besoin d'un Intent
//On mets à jour les widgets
updateAppWidgets(context, appWidgetManager, appWidgetIds);
}
//Lorsque l'AppWidget reçoit une notification
@Override
public void onReceive(Context context, Intent intent) {
updateBattery(intent);
batteryLevelTextView.setText(batteryLevel);
}
/**
* Mets à jour les AppWidgets
* @param context
* @param appWidgetManager
* @param appWidgetIds
*/
private static void updateAppWidgets(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final int N = appWidgetIds.length;
// Pour chaque AppWidget
for (int i = 0; i < N; i++)
{
int appWidgetId = appWidgetIds[i];
updateAppWidget(context, appWidgetManager, appWidgetId);
}
}
/**
* Mets à jour un AppWidget
* @param context
* @param appWidgetManager
* @param appWidgetId
*/
private static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId)
{
// On récupère les Views de notre layout
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_battery);
// Mise à jour du TextView
String str = String.valueOf(batteryLevel);
views.setTextViewText(R.id.battery_level, str);
// Mise à jour de l'affichage
appWidgetManager.updateAppWidget(appWidgetId, views);
}
/**
* Récupère le niveau de la batterie et mets à jour l'objet
* @param intent
*/
private static void updateBattery(Intent intent) {
batteryLevel = (short) intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
}
} |
Partager