Как реализовать часто обновление виджетов Android (например, обратный отсчет или счетчик) в .NET MAUI, несмотря на 30-миAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как реализовать часто обновление виджетов Android (например, обратный отсчет или счетчик) в .NET MAUI, несмотря на 30-ми

Сообщение Anonymous »

Я разрабатываю приложение .NET MAUI, и я хочу реализовать виджет домашнего экрана на Android, который отображает счетчик или часы-обновляя каждую секунду (например, секундомер или таймер в реальном времени).
Однако Android-ограничения видны в виде обновления в течение каждые 30 минут. /> Чего я хочу достичь:
widget, который: < /p>
является частью приложения .net maui. Реализация AppWidgetProvider с помощью пользовательского действия, которое обновляет отображаемое время при нажатии кнопки. Вот упрощенная версия моего кода: < /p>

Код: Выделить всё

using Android.App;
using Android.Appwidget;
using Android.Content;
using Android.Widget;
using System;

namespace Maui_Widget_Test_App.Platforms.Android.AppWidget
{
[BroadcastReceiver(Label = "Zeit-Widget", Exported = true)]
[IntentFilter(new[] { "android.appwidget.action.APPWIDGET_UPDATE", "com.example.GET_TIME" })]
[MetaData("android.appwidget.provider", Resource = "@xml/my_widget_info")]
public class CounterWidget : AppWidgetProvider
{
public override void OnUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
{
base.OnUpdate(context, appWidgetManager, appWidgetIds);

foreach (var appWidgetId in appWidgetIds)
{
UpdateWidget(context, appWidgetManager, appWidgetId);
}
}

public override void OnReceive(Context context, Intent intent)
{
base.OnReceive(context, intent);

if (intent.Action == "com.example.GET_TIME")
{
var time = DateTime.Now.ToString("HH:mm:ss");

var appWidgetManager = AppWidgetManager.GetInstance(context);
var thisWidget = new ComponentName(context, Java.Lang.Class.FromType(typeof(CounterWidget)));
var appWidgetIds = appWidgetManager.GetAppWidgetIds(thisWidget);

foreach (var appWidgetId in appWidgetIds)
{
RemoteViews views = new RemoteViews(context.PackageName, Resource.Layout.my_widget_layout);
views.SetTextViewText(Resource.Id.buttonGetTime, time);

// Re-attach button intent
Intent buttonIntent = new Intent(context, Java.Lang.Class.FromType(typeof(CounterWidget)));
buttonIntent.SetAction("com.example.GET_TIME");

var pendingIntent = PendingIntent.GetBroadcast(context, 0, buttonIntent,
PendingIntentFlags.Immutable | PendingIntentFlags.UpdateCurrent);

views.SetOnClickPendingIntent(Resource.Id.buttonGetTime, pendingIntent);
appWidgetManager.UpdateAppWidget(appWidgetId, views);
}
}
}

private void UpdateWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId)
{
RemoteViews views = new RemoteViews(context.PackageName, Resource.Layout.my_widget_layout);

Intent buttonIntent = new Intent(context, Java.Lang.Class.FromType(typeof(CounterWidget)));
buttonIntent.SetAction("com.example.GET_TIME");

var pendingIntent = PendingIntent.GetBroadcast(context, 0, buttonIntent,
PendingIntentFlags.Immutable | PendingIntentFlags.UpdateCurrent);

views.SetOnClickPendingIntent(Resource.Id.buttonGetTime, pendingIntent);
appWidgetManager.UpdateAppWidget(appWidgetId, views);
}
}
}

Как я могу реализовать виджет в .net maui для Android, который обновляет каждую секунду или близко к реальному времени-хотя Android ограничивает обновления виджетов до 30-минутного интервала? /> чертеж с помощью холста или с использованием GLANCE?>

Подробнее здесь: https://stackoverflow.com/questions/796 ... or-counter
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»