H
Heribert500
Ambitioniertes Mitglied
- 1
Maahlzeit,
in einem Widget auf dem Homescreen zeige ich Uhrzeit und Datum an.
Datum sepparat in einem Textview. Das korrekteDatum wird allerdings nur beim ersten Start des Widgets
angezeigt. es aktualiesiert sich leider nicht, auch nicht wenn ich im System das Datum verändere.
Was muss ich hier ändern?
Der Aufruf des Datums steht im onupdate ereigniss, funzt aber irgendwie nicht
Danke H500
in einem Widget auf dem Homescreen zeige ich Uhrzeit und Datum an.
Datum sepparat in einem Textview. Das korrekteDatum wird allerdings nur beim ersten Start des Widgets
angezeigt. es aktualiesiert sich leider nicht, auch nicht wenn ich im System das Datum verändere.
Was muss ich hier ändern?
Der Aufruf des Datums steht im onupdate ereigniss, funzt aber irgendwie nicht
Danke H500
Code:
public class UhrProvider extends AppWidgetProvider {
private AlarmManager mAlarmManager;
private Intent mIntent;
private PendingIntent mPendingIntent;
private static final String Testmodul = "Uhr" +"\n"+ "Datum";
Date date = Calendar.getInstance().getTime();
String datum = new SimpleDateFormat("EEEE, dd.MM.yyyy").format(date);
private static final SimpleDateFormat dateStyle = new SimpleDateFormat("HHmmss");
private static int[] mDigits = {
R.drawable.z0,
R.drawable.z1,
R.drawable.z2,
R.drawable.z3,
R.drawable.z4,
R.drawable.z5,
R.drawable.z6,
R.drawable.z7,
R.drawable.z8,
R.drawable.z9
};
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
final int N = appWidgetIds.length;
for(int i=0; i<N; i++){
int appWidgetId = appWidgetIds[i];
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
ComponentName watchWidget = new ComponentName(context, UhrProvider.class);
remoteViews.setOnClickPendingIntent(R.id.LinearLayout1, getPendingSelfIntent(context, Testmodul));
appWidgetManager.updateAppWidget(watchWidget, remoteViews);
if (mAlarmManager == null) {
mAlarmManager = (AlarmManager) context.getSystemService(context.ALARM_SERVICE);
mIntent = new Intent();
mIntent.setAction("de.hk.kleineuhr.SECONDS_UPDATE");
mPendingIntent = PendingIntent.getBroadcast(context, 0, mIntent, 0);
mAlarmManager.setRepeating(AlarmManager.RTC, (long) 0, (long) 1000, mPendingIntent);
}
Intent intent =new Intent(context,UhrProvider.class);
PendingIntent pendingIntent =PendingIntent.getActivity(context, 0, intent, 0);
// Hier holst du dir das Layout was du vorher erstellt hast (wo auch deine TextView dann drin ist) und weist der TextView den gewünschten Wert zu
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.main);
views.setTextViewText(R.id.text1, datum);
// AppWidgetManager sagen das er ein update machen soll, damit deine Änderungen auch sichtbar werden
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
@Override
public void onReceive (Context context, Intent intent) {
super.onReceive(context, intent);
Date date = new Date();
String actualTime = dateStyle.format(date);
int one = Integer.parseInt("" + actualTime.charAt(0));
int two = Integer.parseInt("" + actualTime.charAt(1));
int three = Integer.parseInt("" + actualTime.charAt(2));
int four = Integer.parseInt("" + actualTime.charAt(3));
int five = Integer.parseInt("" + actualTime.charAt(4));
int six = Integer.parseInt("" + actualTime.charAt(5));
RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.main);
rv.setImageViewResource(R.id.digit_one, mDigits[one]);
rv.setImageViewResource(R.id.digit_two, mDigits[two]);
rv.setImageViewResource(R.id.digit_three, mDigits[three]);
rv.setImageViewResource(R.id.digit_four, mDigits[four]);
rv.setImageViewResource(R.id.digit_five, mDigits[five]);
rv.setImageViewResource(R.id.digit_six, mDigits[six]);
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
ComponentName thisWidget = new ComponentName(context, UhrProvider.class);
appWidgetManager.updateAppWidget(thisWidget, rv);
if (Testmodul.equals(intent.getAction())) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
ComponentName watchWidget = new ComponentName(context, UhrProvider.class);
appWidgetManager.updateAppWidget(watchWidget, remoteViews);
Toast.makeText(context, Testmodul, Toast.LENGTH_LONG).show();
}
}
protected PendingIntent getPendingSelfIntent(Context context, String action) {
Intent intent = new Intent(context, getClass());
intent.setAction(action);
return PendingIntent.getBroadcast(context, 0, intent, 0);
}
@Override
public void onDisabled(Context context) {
super.onDisabled(context);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(context.ALARM_SERVICE);
mIntent = new Intent();
mIntent.setAction("de.hk.kleineuhr.SECONDS_UPDATE");
mPendingIntent = PendingIntent.getBroadcast(context, 0, mIntent, 0);
alarmManager.cancel(mPendingIntent);
}
}