// Build a widget update to show the current Wiktionary // "Word of the day." Will block until the online API returns. public RemoteViews buildUpdate(Context context) { // Build an update that holds the updated widget contents var updateViews = new RemoteViews(context.PackageName, Resource.Layout.widget_logo); Log.Debug("WIDGET", "Loading OTA"); var ota = Arasoft.ClassicPhone.OTABitmap.FromUserData("00 48 1C 01 7F FF EF FF EF FF FB FF FE 40 3F E8 38 2F FF FB FF FE 48 3F A8 38 2F 9F FB FF FE 4C FF A9 FF 2F 8F FA DA DA 4E FF 29 01 2F 80 FA 52 52 5E 7F 69 31 2F BF 7B 07 06 4F FF 69 79 2F BE FB 77 76 47 FF 69 79 2F BE 7B 07 06 47 FE EF 7D EF BE 7B FF FE 47 FC EF 7D E7 BC F1 FF FC 40 F0 EF 7D E7 7C F1 ED BC 21 E7 C9 79 27 98 F1 E5 3C 21 E7 C9 39 27 C8 F1 F0 7C 16 6F 89 39 23 E6 E0 F7 78 15 2F 88 82 23 F3 E0 F0 78 08 3F 04 44 43 D7 E0 FF F8 04 3E 02 28 81 EF C0 7F F0 02 3C 01 39 00 FF 80 3F E0 01 38 00 BA 00 7F 00 1F C0 00 F0 00 7C 00 3E 00 0F 80 FF C0 00 38 00 1C 00 07 FF 55 FF FF FF FF FF FF FF AA 2A F3 87 87 3F 1E 67 0F 54 15 F3 93 9F 3E 4E 27 27 A8 2A F3 87 8F 3E 4E 07 27 54 55 F3 93 9F 3E 0E 47 27 AA FF F3 9B 87 0E 4E 67 0F FF 00 FF FF FF FF FF FF FF 00".Replace(" ", "")); var bmp = Bitmap.CreateBitmap(10 + ota.Width * 4, 10 + ota.Height * 4, Bitmap.Config.Argb8888); var cnv = new Canvas(bmp); var white = new Paint(PaintFlags.AntiAlias) { Color = Color.White }; var dropshadow = new Paint(PaintFlags.AntiAlias) { Color = Color.Argb(127, 0, 0, 0) }; Log.Debug("WIDGET", "Drawing bitmap"); DrawOTA(ota, cnv, dropshadow, 6, 6); DrawOTA(ota, cnv, white, 5, 5); Log.Debug("WIDGET", "Bitmap generated"); updateViews.SetImageViewBitmap(Resource.Id.logo, bmp); Log.Debug("WIDGET", "View bitmap set"); return updateViews; }
public override RemoteViews getViewAt(int position) { // TODO Auto-generated method stub RemoteViews contentView = new RemoteViews(mContext.PackageName, R.layout.widget_item); Bundle extras = new Bundle(); Intent fillInIntent = new Intent(); if ((position % 2) == 0) { PendingIntent pIntent = PendingIntent.getActivity(mContext, 0, new Intent(Intent.ACTION_DIAL), PendingIntent.FLAG_UPDATE_CURRENT); extras.putParcelable(Constants.EXTRA_CONTENT_INTENT, pIntent); fillInIntent.putExtras(extras); contentView.setOnClickFillInIntent(R.id.widget_item_layout, fillInIntent); } else { Intent intent = new Intent(Intent.ACTION_VIEW); intent.Type = "vnd.android-dir/mms-sms"; PendingIntent pIntent = PendingIntent.getActivity(mContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); extras.putParcelable(Constants.EXTRA_CONTENT_INTENT, pIntent); fillInIntent.putExtras(extras); contentView.setOnClickFillInIntent(R.id.widget_item_layout, fillInIntent); } try { contentView.setTextViewText(R.id.tv_item, mDbHelper.getData(position)); } catch (System.IndexOutOfRangeException) { } return contentView; }
public RemoteViews GetViewAt (int position) { var remoteView = new RemoteViews (context.PackageName, Resource.Layout.widget_list_item); var rowData = itemList [position]; // set if is running if (rowData.IsRunning) { remoteView.SetImageViewResource (Resource.Id.WidgetContinueImageButton, Resource.Drawable.IcWidgetStop); } else { remoteView.SetImageViewResource (Resource.Id.WidgetContinueImageButton, Resource.Drawable.IcWidgetPlay); } // set color remoteView.SetInt (Resource.Id.WidgetColorView, "setColorFilter", Color.ParseColor (rowData.Color)); remoteView.SetOnClickFillInIntent (Resource.Id.WidgetContinueImageButton, ConstructFillIntent (rowData)); // set content remoteView.SetTextViewText ( Resource.Id.DescriptionTextView, String.IsNullOrWhiteSpace (rowData.Description) ? context.Resources.GetString (Resource.String.RunningWidgetNoDescription) : rowData.Description); remoteView.SetTextViewText ( Resource.Id.ProjectTextView, String.IsNullOrWhiteSpace (rowData.ProjectName) ? context.Resources.GetString (Resource.String.RunningWidgetNoProject) : rowData.ProjectName); remoteView.SetTextViewText (Resource.Id.DurationTextView, rowData.TimeValue); return remoteView; }
public RemoteViews GetViewAt (int position) { IList<RichPushMessage> messages = RichPushManager.Shared ().RichPushUser.Inbox.Messages; if (position > messages.Count) { return null; } // Get the data for this position from the content provider RichPushMessage message = messages [position]; // Return a proper item String formatStr = context.Resources.GetString (Resource.String.item_format_string); int itemId = Resource.Layout.widget_item; RemoteViews rv = new RemoteViews (context.PackageName, itemId); rv.SetTextViewText (Resource.Id.widget_item_text, Java.Lang.String.Format (formatStr, message.Title)); int iconDrawable = message.IsRead ? Resource.Drawable.mark_read : Resource.Drawable.mark_unread; rv.SetImageViewResource (Resource.Id.widget_item_icon, iconDrawable); SimpleDateFormat dateFormat = new SimpleDateFormat ("yyyy-MM-dd HH:mm"); rv.SetTextViewText (Resource.Id.date_sent, dateFormat.Format (message.SentDate)); // Add the message id to the intent Intent fillInIntent = new Intent (); Bundle extras = new Bundle (); extras.PutString (RichPushApplication.MESSAGE_ID_RECEIVED_KEY, message.MessageId); fillInIntent.PutExtras (extras); rv.SetOnClickFillInIntent (Resource.Id.widget_item, fillInIntent); return rv; }
protected void ShowNotification() { /* Notification.Builder builder = new Notification.Builder(this) .SetContentTitle("Break Time!") .SetContentText("You have passed a 3.5 hours and should take your 10 minute break if possible") .SetSmallIcon(Resource.Drawable.coffee); Notification notification = builder.Build(); NotificationManager notificationManager = GetSystemService(Context.NotificationService) as NotificationManager; const int notificationId = 0; notificationManager.Notify(notificationId, notification); * * */ Notification notification; RemoteViews bigView = new RemoteViews(ApplicationContext.PackageName, Resource.Layout.notification_large); //PendingIntent testIntent = PendingIntent.GetActivities Notification.Builder builder = new Notification.Builder(this); notification = builder.SetContentTitle("Accrued Break Time") .SetContentText("You have reached a certain threshold to take a required break. Slide down for more details") .SetSmallIcon(Resource.Drawable.bussmall) .SetLargeIcon(Android.Graphics.BitmapFactory.DecodeResource(Resources, Resource.Drawable.bus)) .Build(); notification.BigContentView = bigView; NotificationManager manager = (NotificationManager)GetSystemService(Context.NotificationService) as NotificationManager; manager.Notify(0, notification); }
protected override void OnCreate (Bundle bundle) { RequestWindowFeature(WindowFeatures.NoTitle); base.OnCreate (bundle); this.SetContentView(Resource.Layout.Home); String package = PackageName; Glistener = new GestureListener(); Gdetector = new GestureDetector (this, Glistener); var trans = FragmentManager.BeginTransaction (); trans.Add (Resource.Id.frame_home,mHomeFragment3,"HomeFragment3"); trans.Hide (mHomeFragment3); trans.Add (Resource.Id.frame_home,mHomeFragment2,"HomeFragment2"); trans.Hide (mHomeFragment2); trans.Add (Resource.Id.frame_home,mHomeFragment1,"HomeFragment1"); trans.Commit(); currentFragment = mHomeFragment1; Button haz_plif = FindViewById <Button> (Resource.Id.haz_plif); FrameLayout fcontainer = FindViewById<FrameLayout> (Resource.Id.frame_home); haz_plif.Click += (object sender, EventArgs e) => { StartActivity(typeof(login)); Finish (); }; fcontainer.Touch += Fcontainer_Touch; RemoteViews rmv = new RemoteViews(package, Resource.Layout.Home); rmv.SetTextViewText(Resource.Id.haz_plif,"Elias was here"); }
/// <summary> /// Initializes a new instance of the <see cref="V3CustomNotification"/> class. /// </summary> public V3CustomNotification() { this.CurrentBytes = -1; this.TotalBytes = -1; this.notification = new Notification(); this.expandedView = null; this.notification.Flags |= NotificationFlags.OngoingEvent; }
internal static void UpdateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) { RemoteViews views = new RemoteViews(context.PackageName, Resource.Layout.widget); ImageSize minImageSize = new ImageSize(70, 70); // 70 - approximate size of ImageView in widget ImageLoader.Instance .LoadImage(Constants.IMAGES[0], minImageSize, displayOptions, new ThisSimpleImageLoadingListener(appWidgetManager, appWidgetId, views, Resource.Id.image_left)); ImageLoader.Instance .LoadImage(Constants.IMAGES[1], minImageSize, displayOptions, new ThisSimpleImageLoadingListener(appWidgetManager, appWidgetId, views, Resource.Id.image_right)); }
public override void OnUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { RemoteViews updateViews = new RemoteViews(context.PackageName, Resource.Layout.sample_widget); // Load image for all appWidgetIds. Picasso picasso = Picasso.With(context); picasso.Load(Data.Urls[(new Random()).Next(Data.Urls.Length)]) .Placeholder(Resource.Drawable.placeholder) .Error(Resource.Drawable.error) .Transform(new GrayscaleTransformation(picasso)) .Into(updateViews, Resource.Id.image, appWidgetIds); }
public override void OnUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { Log.Info(App.Tag, "In MainWidget.OnUpdate()"); var remoteViews = new RemoteViews(context.PackageName, Resource.Layout.mainWidget); var thisWidget = new ComponentName(context, this.Class); Intent intent = new Intent(context, typeof(WidgetService)); PendingIntent pendingIntent = PendingIntent.GetService(context, 0, intent, PendingIntentFlags.UpdateCurrent); remoteViews.SetOnClickPendingIntent(Resource.Id.MyButton, pendingIntent); appWidgetManager.UpdateAppWidget(thisWidget, remoteViews); }
public override void OnUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { Console.WriteLine("PlayerWidgetProvider - OnUpdate - appWidgetIds.length: {0}", appWidgetIds.Length); AlarmManager alarmManager = (AlarmManager)context.GetSystemService(Context.AlarmService); Intent intentAlarm = new Intent(context, typeof(WidgetService)); intentAlarm.SetAction(AppWidgetManager.ActionAppwidgetUpdate); intentAlarm.PutExtra(AppWidgetManager.ExtraAppwidgetIds, appWidgetIds); if (_pendingIntentWidgetService == null) _pendingIntentWidgetService = PendingIntent.GetService(context, 0, intentAlarm, PendingIntentFlags.CancelCurrent); Calendar time = Calendar.Instance; time.Set(CalendarField.Minute, 0); time.Set(CalendarField.Second, 0); time.Set(CalendarField.Millisecond, 0); alarmManager.SetRepeating(AlarmType.Rtc, time.Time.Time, 1000 * 10, _pendingIntentWidgetService); //alarmManager.SetRepeating(AlarmType.ElapsedRealtime, SystemClock.ElapsedRealtime(), 1000, _pendingIntentWidgetService); for (int a = 0; a < appWidgetIds.Length; a++) { int appWidgetId = appWidgetIds[a]; RemoteViews views = new RemoteViews(context.PackageName, Resource.Layout.WidgetPlayer); //var intentBackground = new Intent(context, typeof (WidgetService)); //intentBackground.SetAction(SessionsWidgetActions.op.ToString()); //intentBackground.PutExtra(AppWidgetManager.ExtraAppwidgetIds, appWidgetIds); //var pendingIntentBackgroundClick = PendingIntent.GetService(context, appWidgetId, intentBackground, PendingIntentFlags.UpdateCurrent); //views.SetOnClickPendingIntent(Resource.Id.widgetPlayer, pendingIntentBackgroundClick); var intentPrevious = new Intent(context, typeof(WidgetService)); intentPrevious.SetAction(SessionsWidgetActions.SessionsWidgetPrevious.ToString()); intentPrevious.PutExtra(AppWidgetManager.ExtraAppwidgetIds, appWidgetIds); var pendingIntentPreviousClick = PendingIntent.GetService(context, appWidgetId, intentPrevious, PendingIntentFlags.UpdateCurrent); views.SetOnClickPendingIntent(Resource.Id.widgetPlayer_btnPrevious, pendingIntentPreviousClick); var intentPlayPause = new Intent(context, typeof(WidgetService)); intentPlayPause.SetAction(SessionsWidgetActions.SessionsWidgetPlayPause.ToString()); intentPlayPause.PutExtra(AppWidgetManager.ExtraAppwidgetIds, appWidgetIds); var pendingIntentPlayPauseClick = PendingIntent.GetService(context, appWidgetId, intentPlayPause, PendingIntentFlags.UpdateCurrent); views.SetOnClickPendingIntent(Resource.Id.widgetPlayer_btnPlayPause, pendingIntentPlayPauseClick); var intentNext = new Intent(context, typeof(WidgetService)); intentNext.SetAction(SessionsWidgetActions.SessionsWidgetNext.ToString()); intentNext.PutExtra(AppWidgetManager.ExtraAppwidgetIds, appWidgetIds); var pendingIntentNextClick = PendingIntent.GetService(context, appWidgetId, intentNext, PendingIntentFlags.UpdateCurrent); views.SetOnClickPendingIntent(Resource.Id.widgetPlayer_btnNext, pendingIntentNextClick); appWidgetManager.UpdateAppWidget(appWidgetId, views); } }
public override void onUpdate(Context context, SlookCocktailManager cocktailBarManager, int[] cocktailIds) { // create RemoteViews RemoteViews rv = new RemoteViews(context.PackageName, R.layout.feeds_panel_layout); string str = context.Resources.getString([email protected]_contents); // set text in RemoteViews rv.setTextViewText(R.id.text, str + " at " + CurrentDate); // update cocktail for (int i = 0; i < cocktailIds.Length; i++) { cocktailBarManager.updateCocktail(cocktailIds[i], rv); } }
public RemoteViews GetViewAt (int position) { var remoteView = new RemoteViews (context.PackageName, Resource.Layout.widget_list_item); var rowData = itemList [position]; // set if is running if (rowData.IsRunning) { remoteView.SetImageViewResource (Resource.Id.WidgetContinueImageButton, Resource.Drawable.IcWidgetStop); remoteView.SetViewVisibility (Resource.Id.DurationChronometer, Android.Views.ViewStates.Visible); remoteView.SetViewVisibility (Resource.Id.DurationTextView, Android.Views.ViewStates.Gone); } else { remoteView.SetImageViewResource (Resource.Id.WidgetContinueImageButton, Resource.Drawable.IcWidgetPlay); remoteView.SetViewVisibility (Resource.Id.DurationChronometer, Android.Views.ViewStates.Gone); remoteView.SetViewVisibility (Resource.Id.DurationTextView, Android.Views.ViewStates.Visible); } // set color remoteView.SetInt (Resource.Id.WidgetColorView, "setColorFilter", Color.ParseColor (rowData.Color)); remoteView.SetOnClickFillInIntent (Resource.Id.WidgetContinueImageButton, ConstructFillIntent (rowData)); // set content remoteView.SetTextViewText ( Resource.Id.DescriptionTextView, String.IsNullOrWhiteSpace (rowData.Description) ? context.Resources.GetString (Resource.String.RunningWidgetNoDescription) : rowData.Description); remoteView.SetTextViewText ( Resource.Id.ProjectTextView, String.IsNullOrWhiteSpace (rowData.ProjectName) ? context.Resources.GetString (Resource.String.RunningWidgetNoProject) : rowData.ProjectName); remoteView.SetTextViewText (Resource.Id.DurationTextView, rowData.TimeValue); var time = (long)rowData.Duration.TotalMilliseconds; // Format chronometer correctly. string format = "00:%s"; if (time >= 3600000 && time < 36000000) { format = "0%s"; } else if (time >= 36000000) { format = "%s"; } var baseTime = SystemClock.ElapsedRealtime (); remoteView.SetChronometer (Resource.Id.DurationChronometer, baseTime - (long)rowData.Duration.TotalMilliseconds, format, true); return remoteView; }
// Build a widget update to show the current Wiktionary // "Word of the day." Will block until the online API returns. public RemoteViews buildUpdate (Context context) { var entry = BlogPost.GetBlogPost (); // Build an update that holds the updated widget contents var updateViews = new RemoteViews (context.PackageName, Resource.Layout.widget_word); updateViews.SetTextViewText (Resource.Id.blog_title, entry.Title); updateViews.SetTextViewText (Resource.Id.creator, entry.Creator); // When user clicks on widget, launch to Wiktionary definition page if (!string.IsNullOrEmpty (entry.Link)) { Intent defineIntent = new Intent (Intent.ActionView, Android.Net.Uri.Parse (entry.Link)); PendingIntent pendingIntent = PendingIntent.GetActivity (context, 0, defineIntent, 0); updateViews.SetOnClickPendingIntent (Resource.Id.widget, pendingIntent); } return updateViews; }
/** * Creates a large layout for the app widget * * This layout is only supported in SDK >= 11 (Honeycomb) * * @param context Application context * @param appWidgetId id of the widget * @return RemoteViews for the large layout */ private static RemoteViews CreateLargeLayout(Context context, int appWidgetId) { RemoteViews remoteViews = new RemoteViews(context.PackageName, Resource.Layout.widget_layout); // Specify the service to provide data for the collection widget. Note that we need to // embed the appWidgetId via the data otherwise it will be ignored. Intent intent = new Intent(context, typeof (RichPushWidgetService)); intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); remoteViews.SetRemoteAdapter(appWidgetId, Resource.Id.message_list, intent); // Set the empty view to be displayed if the collection is empty. It must be a sibling // view of the collection view. remoteViews.SetEmptyView(Resource.Id.message_list, Resource.Id.empty_view); // Bind a click listener template for the contents of the message list remoteViews.SetPendingIntentTemplate(Resource.Id.message_list, CreateMessageTemplateIntent(context, appWidgetId)); // Add a click pending intent to launch the inbox remoteViews.SetOnClickPendingIntent(Resource.Id.widget_header, CreateInboxActivityPendingIntent(context)); return remoteViews; }
private void SetupWidget (Context ctx) { RemoteViews views; var wm = AppWidgetManager.GetInstance (ctx); var cn = new ComponentName (ctx, Java.Lang.Class.FromType (typeof (WidgetProvider))); var ids = wm.GetAppWidgetIds (cn); if (UpdateService.IsUserLogged) { views = new RemoteViews (ctx.PackageName, Resource.Layout.keyguard_widget); SetupRunningBtn (ctx, views); var adapterServiceIntent = new Intent (ctx, typeof (RemotesViewsFactoryService)); adapterServiceIntent.PutExtra (AppWidgetManager.ExtraAppwidgetIds, ids); adapterServiceIntent.SetData (Android.Net.Uri.Parse (adapterServiceIntent.ToUri (IntentUriType.Scheme))); for (int i = 0; i < ids.Length; i++) { views.SetRemoteAdapter (ids[i], Resource.Id.WidgetRecentEntriesListView, adapterServiceIntent); } var listItemIntent = new Intent (ctx, typeof (WidgetStartStopService.Receiver)); listItemIntent.SetData (Android.Net.Uri.Parse (listItemIntent.ToUri (IntentUriType.Scheme))); var pendingIntent = PendingIntent.GetBroadcast (ctx, 0, listItemIntent, PendingIntentFlags.UpdateCurrent); views.SetPendingIntentTemplate (Resource.Id.WidgetRecentEntriesListView, pendingIntent); views.SetOnClickPendingIntent (Resource.Id.WidgetActionButton, StartStopButtonIntent (ctx)); } else { views = new RemoteViews (ctx.PackageName, Resource.Layout.widget_login); views.SetOnClickPendingIntent (Resource.Id.WidgetLoginButton, LogInButtonIntent (ctx)); } // Update widget view. wm.UpdateAppWidget (ids, views); }
public RemoteViews GetViewAt(int position) { if (_source.Count == 0) { return(null); } var book = _source[position]; var remoteViews = new RemoteViews(_context.PackageName, Resource.Layout.WidgetCell); remoteViews.SetTextViewText(Resource.Id.widgetcell_title, book.Title); var data = _webApi.GetThumbnail(book.Thumbnail).Result; var image = BitmapFactory.DecodeByteArray(data, 0, data.Length); remoteViews.SetImageViewBitmap(Resource.Id.widgetcell_image, image); var intent = new Intent(); // TODO: セルごとにアクションを変えたい場合などはこのIntendにデータをセットする remoteViews.SetOnClickFillInIntent(Resource.Id.widgetcell_container, intent); return(remoteViews); }
static Sample() { Values = new[] { new Sample("Image Grid View", typeof(SampleGridViewActivity)), new Sample("Load from Gallery", typeof(SampleGalleryActivity)), new Sample("List / Detail View", typeof(SampleListDetailActivity)), new Sample("Sample Notification", activity => { RemoteViews remoteViews = new RemoteViews(activity.PackageName, Resource.Layout.notification_view); Intent intent = new Intent(activity, typeof(SampleGridViewActivity)); Notification notification = new NotificationCompat.Builder(activity) .SetSmallIcon(Resource.Drawable.icon) .SetContentIntent(PendingIntent.GetActivity(activity, -1, intent, 0)) .SetContent(remoteViews) .Build(); // Bug in NotificationCompat that does not set the content. if ((int)Build.VERSION.SdkInt <= (int)BuildVersionCodes.GingerbreadMr1) { notification.ContentView = remoteViews; } NotificationManager notificationManager = NotificationManager.FromContext(activity); notificationManager.Notify(NotificationId, notification); // Now load an image for this notification. Picasso.With(activity) .Load(Data.Urls[(new Random()).Next(Data.Urls.Length)]) .ResizeDimen( Resource.Dimension.notification_icon_width_height, Resource.Dimension.notification_icon_width_height) .Into(remoteViews, Resource.Id.photo, NotificationId, notification); }) }; }
public RemoteViews BuildRemoteViews(Context context, int[] appWidgetIds) { var store = ShinyHost.Resolve <IConferenceStore>(); var sessions = store.GetSessions().GetAwaiter().GetResult(); var myNextSession = sessions.FirstOrDefault(s => s.IsFavorite); var views = new RemoteViews(context.PackageName, Resource.Layout.Widget); RegisterClicks(context, views, appWidgetIds); if (myNextSession != null) { views.SetTextViewText(Resource.Id.titleView, myNextSession.Title); views.SetTextViewText(Resource.Id.timeAndLocationView, $"{myNextSession.StartsAt.ToLocalTime():t} - {myNextSession.EndsAt.ToLocalTime():t} in {myNextSession.Room}"); } else { views.SetTextViewText(Resource.Id.titleView, "No session available"); views.SetTextViewText(Resource.Id.timeAndLocationView, "You have not favorited any sessions"); } return(views); }
void SendInfoToWidget(int id) { // Build an update that holds the updated widget contents var updateViews = new RemoteViews(this.PackageName, Resource.Layout.widget_message); updateViews.SetTextViewText(Resource.Id.message, "Your nearest animal is: " + id); //updateViews.SetTextViewText (Resource.Id.creator, entry.Creator); // When user clicks on widget, launch to Wiktionary definition page Intent defineIntent = new Intent(this, typeof(MainActivity)); Bundle b = new Bundle(); b.PutInt("id", id); defineIntent.PutExtras(b); PendingIntent pendingIntent = PendingIntent.GetActivity(this, id, defineIntent, 0); updateViews.SetOnClickPendingIntent(Resource.Id.widget, pendingIntent); ComponentName thisWidget = new ComponentName(this, Java.Lang.Class.FromType(typeof(ExplorerWidgetAppWidgetProvider)).Name); AppWidgetManager manager = AppWidgetManager.GetInstance(this); manager.UpdateAppWidget(thisWidget, updateViews); }
private List <Dataset> BuildEntryDatasets(string query, string queryDomain, string queryPackage, AutofillId[] autofillIds, StructureParser parser, DisplayWarning warning, IList <InlinePresentationSpec> inlinePresentationSpecs) { List <Dataset> result = new List <Dataset>(); Kp2aLog.Log("AF: BuildEntryDatasets"); var suggestedEntries = GetSuggestedEntries(query).ToDictionary(e => e.DatasetName, e => e); Kp2aLog.Log("AF: BuildEntryDatasets found " + suggestedEntries.Count + " entries"); int count = 0; foreach (var filledAutofillFieldCollection in suggestedEntries.Values) { if (filledAutofillFieldCollection == null) { continue; } var inlinePresentationSpec = AutofillHelper.ExtractSpec(inlinePresentationSpecs, count); if (warning == DisplayWarning.None) { FilledAutofillFieldCollection partitionData = AutofillHintsHelper.FilterForPartition(filledAutofillFieldCollection, parser.AutofillFields.FocusedAutofillCanonicalHints); Kp2aLog.Log("AF: Add dataset"); result.Add(AutofillHelper.NewDataset(this, parser.AutofillFields, partitionData, IntentBuilder, inlinePresentationSpec)); } else { //return an "auth" dataset (actually for just warning the user in case domain/package dont match) IntentSender sender = IntentBuilder.GetAuthIntentSenderForWarning(this, query, queryDomain, queryPackage, warning); var datasetName = filledAutofillFieldCollection.DatasetName; if (datasetName == null) { Kp2aLog.Log("AF: dataset name is null"); continue; } RemoteViews presentation = AutofillHelper.NewRemoteViews(PackageName, datasetName, AppNames.LauncherIcon); var datasetBuilder = new Dataset.Builder(presentation); datasetBuilder.SetAuthentication(sender); AutofillHelper.AddInlinePresentation(this, inlinePresentationSpec, datasetName, datasetBuilder, AppNames.LauncherIcon); //need to add placeholders so we can directly fill after ChooseActivity foreach (var autofillId in autofillIds) { datasetBuilder.SetValue(autofillId, AutofillValue.ForText("PLACEHOLDER")); } Kp2aLog.Log("AF: Add auth dataset"); result.Add(datasetBuilder.Build()); } count++; } return(result); }
/// <summary> /// Update the notification. /// </summary> /// <param name="context"> /// The context. /// </param> /// <returns> /// The updated notification. /// </returns> public Notification UpdateNotification(Context context) { // Build the RemoteView object if (expandedView == null) { expandedView = new RemoteViews(context.PackageName, Resource.Layout.status_bar_ongoing_event_progress_bar); } expandedView.SetImageViewResource(Resource.Id.appIcon, this.Icon); expandedView.SetTextViewText(Resource.Id.title, this.Title); expandedView.SetTextViewText(Resource.Id.progress_text, Helpers.GetDownloadProgressPercent(this.CurrentBytes, this.TotalBytes)); expandedView.SetTextViewText(Resource.Id.description, Helpers.GetDownloadProgressString(this.CurrentBytes, this.TotalBytes)); expandedView.SetProgressBar( Resource.Id.progress_bar, (int)(this.TotalBytes >> 8), (int)(this.CurrentBytes >> 8), this.TotalBytes <= 0); expandedView.SetTextViewText(Resource.Id.time_remaining, context.GetString(Resource.String.time_remaining_notification, Helpers.GetTimeRemaining(this.TimeRemaining))); this.notification.ContentView = expandedView; return this.notification; }
private async Task <RemoteViews> BuildRemoteViews(Context context, int[] appWidgetIds) { RemoteViews widgetView = new RemoteViews(context.PackageName, Resource.Layout.widget_measurements); IList <Location> locationList = null; try { locationList = (await _locationDataService.GetAllDataAsync(true)).ToList(); } catch { // Error handling needs more work, and check how to make widget work more reliably in general // For now, just go without updating anything on widget if reading data fails due to OS preventing access etc. } if (locationList != null) { if (locationList.Count > 0) { var measurements = new List <Tuple <string, Measurement> >(); foreach (var location in locationList) { foreach (var measurement in location) { if (measurement.IsVisibleInWidget) { measurements.Add(new Tuple <string, Measurement>(location.Name, measurement)); } } } if (measurements.Count >= 1) { widgetView.SetTextViewText(Resource.Id.location1, measurements[0].Item1); widgetView.SetTextViewText(Resource.Id.sensor1, measurements[0].Item2.SensorName); widgetView.SetTextViewText(Resource.Id.value1, DisplayValueFormatter.GetMeasurementDisplayValue(measurements[0].Item2)); } if (measurements.Count >= 2) { widgetView.SetTextViewText(Resource.Id.location2, measurements[1].Item1); widgetView.SetTextViewText(Resource.Id.sensor2, measurements[1].Item2.SensorName); widgetView.SetTextViewText(Resource.Id.value2, DisplayValueFormatter.GetMeasurementDisplayValue(measurements[1].Item2)); } if (measurements.Count >= 3) { widgetView.SetTextViewText(Resource.Id.location3, measurements[2].Item1); widgetView.SetTextViewText(Resource.Id.sensor3, measurements[2].Item2.SensorName); widgetView.SetTextViewText(Resource.Id.value3, DisplayValueFormatter.GetMeasurementDisplayValue(measurements[2].Item2)); } var firstLocation = locationList.FirstOrDefault(); widgetView.SetTextViewText(Resource.Id.updated, string.Format("{0}:{1}", firstLocation.Timestamp.Hour, firstLocation.Timestamp.Minute.ToString("00"))); } else { widgetView.SetTextViewText(Resource.Id.updated, context.Resources.GetString(Resource.String.no_widget_data_found)); } } RegisterClicks(context, appWidgetIds, widgetView); return(widgetView); }
private void SetView(Context context, int appWidgetId, RemoteViews widgetView, WidgetLargeAltParams widgetLargeAltParams) { if (!widgetLargeAltParams.IsRefreshing) { Realm realm = Realm.GetInstance(DB.RealmConfiguration); // Bind the RemoteViewsService (adapter) for the Chapters list Intent intent = new Intent(context, typeof(RemoteChapterAdapter)); intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); intent.PutExtra(RemoteChapterAdapter.ExtraBookId, widgetLargeAltParams.Book); intent.PutExtra(RemoteChapterAdapter.ExtraSortOrder, widgetLargeAltParams.Descending); intent.SetData(Uri.Parse(intent.ToUri(IntentUriType.Scheme))); widgetView.SetRemoteAdapter(Resource.Id.list_chapters, intent); // Set Chapter list click intent template Intent chapterClickIntentTemplate = new Intent(Intent.ActionView); PendingIntent chapterClickPendingIntentTemplate = TaskStackBuilder.Create(context) .AddNextIntentWithParentStack(chapterClickIntentTemplate) .GetPendingIntent(appWidgetId, PendingIntentFlags.UpdateCurrent); widgetView.SetPendingIntentTemplate(Resource.Id.list_chapters, chapterClickPendingIntentTemplate); // Bind the click intent for the refresh button on the widget Intent refreshIntent = new Intent(context, typeof(WidgetLargeAlt)); refreshIntent.SetAction(RefreshClick); refreshIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); PendingIntent refreshPendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, refreshIntent, PendingIntentFlags.UpdateCurrent); widgetView.SetOnClickPendingIntent(Resource.Id.btn_refresh, refreshPendingIntent); realm.Dispose(); } if (widgetLargeAltParams.OpenMenu) { widgetView.SetViewVisibility(Resource.Id.menu, Android.Views.ViewStates.Visible); // Bind the click intent for the reverse button on the widget Intent CloseIntent = new Intent(context, typeof(WidgetLargeAlt)); CloseIntent.SetAction(MenuOutsideClick); CloseIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); PendingIntent closePendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, CloseIntent, PendingIntentFlags.UpdateCurrent); widgetView.SetOnClickPendingIntent(Resource.Id.menu_outside, closePendingIntent); if (!widgetLargeAltParams.IsRefreshing) { // Bind the RemoteViewsService (adapter) for the Book list Intent intent = new Intent(context, typeof(RemoteBookAdapter)); intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); intent.PutExtra(RemoteBookAdapter.ExtraBookId, widgetLargeAltParams.Book); intent.SetData(Uri.Parse(intent.ToUri(IntentUriType.Scheme))); widgetView.SetRemoteAdapter(Resource.Id.list_books, intent); // Set Book list click intent template Intent bookClickIntentTemplate = new Intent(context, typeof(WidgetLargeAlt)); PendingIntent bookClickPendingIntentTemplate = PendingIntent.GetBroadcast(context, appWidgetId, bookClickIntentTemplate, PendingIntentFlags.UpdateCurrent); widgetView.SetPendingIntentTemplate(Resource.Id.list_books, bookClickPendingIntentTemplate); } } else { widgetView.SetViewVisibility(Resource.Id.menu, Android.Views.ViewStates.Invisible); } // Bind the click intent for the menu button on the widget Intent menuIntent = new Intent(context, typeof(WidgetLargeAlt)); menuIntent.SetAction(MenuClick); menuIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); PendingIntent menuPendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, menuIntent, PendingIntentFlags.UpdateCurrent); widgetView.SetOnClickPendingIntent(Resource.Id.btn_menu, menuPendingIntent); // Bind the click intent for the reverse button on the widget Intent reverseIntent = new Intent(context, typeof(WidgetLargeAlt)); reverseIntent.SetAction(ReverseClick); reverseIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); PendingIntent reversePendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, reverseIntent, PendingIntentFlags.UpdateCurrent); widgetView.SetOnClickPendingIntent(Resource.Id.btn_reverse, reversePendingIntent); }
private void CreateNoti() { try { BigViews = new RemoteViews(PackageName, Resource.Layout.CustomNotificationLayout); SmallViews = new RemoteViews(PackageName, Resource.Layout.CustomNotificationSmallLayout); Intent notificationIntent = new Intent(this, typeof(SplashScreenActivity)); notificationIntent.SetAction(Intent.ActionMain); notificationIntent.AddCategory(Intent.CategoryLauncher); notificationIntent.PutExtra("isnoti", true); PendingIntent pendingIntent = PendingIntent.GetActivity(this, 0, notificationIntent, PendingIntentFlags.UpdateCurrent); Intent previousIntent = new Intent(this, typeof(PlayerService)); previousIntent.SetAction(ActionRewind); PendingIntent ppreviousIntent = PendingIntent.GetService(this, 0, previousIntent, 0); Intent playIntent = new Intent(this, typeof(PlayerService)); playIntent.SetAction(ActionToggle); PendingIntent pplayIntent = PendingIntent.GetService(this, 0, playIntent, 0); Intent nextIntent = new Intent(this, typeof(PlayerService)); nextIntent.SetAction(ActionSkip); PendingIntent pnextIntent = PendingIntent.GetService(this, 0, nextIntent, 0); Intent closeIntent = new Intent(this, typeof(PlayerService)); closeIntent.SetAction(ActionStop); PendingIntent pcloseIntent = PendingIntent.GetService(this, 0, closeIntent, 0); Notification = new NotificationCompat.Builder(this, NotificationChannelId) .SetLargeIcon(BitmapFactory.DecodeResource(Resources, Resource.Mipmap.icon)) .SetContentTitle(AppSettings.ApplicationName) .SetPriority((int)NotificationPriority.Max) .SetContentIntent(pendingIntent) .SetSmallIcon(Resource.Drawable.icon_notification) .SetTicker(Constant.ArrayListPlay[Constant.PlayPos]?.Title) .SetChannelId(NotificationChannelId) .SetOngoing(true) .SetAutoCancel(true) .SetOnlyAlertOnce(true); NotificationChannel mChannel; if (Build.VERSION.SdkInt >= BuildVersionCodes.O) { NotificationImportance importance = NotificationImportance.Low; mChannel = new NotificationChannel(NotificationChannelId, AppSettings.ApplicationName, importance); MNotificationManager.CreateNotificationChannel(mChannel); MediaSessionCompat mMediaSession = new MediaSessionCompat(Application.Context, AppSettings.ApplicationName); mMediaSession.SetFlags(MediaSessionCompat.FlagHandlesMediaButtons | MediaSessionCompat.FlagHandlesTransportControls); Notification.SetStyle(new Android.Support.V4.Media.App.NotificationCompat.MediaStyle() .SetMediaSession(mMediaSession.SessionToken).SetShowCancelButton(true) .SetShowActionsInCompactView(0, 1, 2) .SetCancelButtonIntent(MediaButtonReceiver.BuildMediaButtonPendingIntent(Application.Context, PlaybackStateCompat.ActionStop))) .AddAction(new NotificationCompat.Action(Resource.Xml.ic_skip_previous, "Previous", ppreviousIntent)) .AddAction(new NotificationCompat.Action(Resource.Xml.ic_pause, "Pause", pplayIntent)) .AddAction(new NotificationCompat.Action(Resource.Xml.ic_skip_next, "Next", pnextIntent)) .AddAction(new NotificationCompat.Action(Resource.Drawable.ic_action_close, "Close", pcloseIntent)); } else { string songName = Methods.FunString.DecodeString(Constant.ArrayListPlay[Constant.PlayPos]?.Title); string genresName = Methods.FunString.DecodeString(Constant.ArrayListPlay[Constant.PlayPos]?.CategoryName) + " " + Application.Context.Resources.GetString(Resource.String.Lbl_Music); BigViews.SetOnClickPendingIntent(Resource.Id.imageView_noti_play, pplayIntent); BigViews.SetOnClickPendingIntent(Resource.Id.imageView_noti_next, pnextIntent); BigViews.SetOnClickPendingIntent(Resource.Id.imageView_noti_prev, ppreviousIntent); BigViews.SetOnClickPendingIntent(Resource.Id.imageView_noti_close, pcloseIntent); SmallViews.SetOnClickPendingIntent(Resource.Id.status_bar_collapse, pcloseIntent); BigViews.SetImageViewResource(Resource.Id.imageView_noti_play, Android.Resource.Drawable.IcMediaPause); BigViews.SetTextViewText(Resource.Id.textView_noti_name, songName); SmallViews.SetTextViewText(Resource.Id.status_bar_track_name, songName); BigViews.SetTextViewText(Resource.Id.textView_noti_artist, genresName); SmallViews.SetTextViewText(Resource.Id.status_bar_artist_name, genresName); BigViews.SetImageViewResource(Resource.Id.imageView_noti, Resource.Mipmap.icon); SmallViews.SetImageViewResource(Resource.Id.status_bar_album_art, Resource.Mipmap.icon); Notification.SetCustomContentView(SmallViews).SetCustomBigContentView(BigViews); } ShowNotification(); } catch (Exception e) { Console.WriteLine(e); } }
protected virtual void OnUpdateCustomPart(Context context, AppWidgetSettings settings, RemoteViews view) { }
public void Show(int notifyId, NotificationPayload payload) { try { PendingIntent resultPendingIntent = null; if ((null != payload.payload) && ((null != payload.payload.CourseId) || (null != payload.payload.ActivityId))) { Intent resultIntent = context.PackageManager.GetLaunchIntentForPackage(context.PackageName); if (null != payload.payload.CourseId && MainActivity.IsAppRunning) { App.CurrentApplication.StartActivity(payload.payload.CourseId, payload.payload.ActivityId); return; } //Store the data locally Settings.Local.Set <string>("CourseId", payload.payload.CourseId); Settings.Local.Set <string>("ActivityId", payload.payload.ActivityId); // Create a PendingIntent; we're only using one PendingIntent (ID = 0): const int pendingIntentId = 0; resultPendingIntent = PendingIntent.GetActivity(context, pendingIntentId, resultIntent, PendingIntentFlags.UpdateCurrent); } // Build the notification var builder = new NotificationCompat.Builder(context) .SetAutoCancel(true) // dismiss the notification from the notification area when the user clicks on it .SetContentIntent(resultPendingIntent) // start up this activity when the user clicks the intent. .SetContentTitle(Constants.APP_NAME) //(payload.Info.Title) // Set the title .SetSound(RingtoneManager.GetDefaultUri(RingtoneType.Notification)) .SetSmallIcon(Resource.Drawable.ic_launcher) // This is the icon to display .SetContentText(payload.Info.Body) .SetColor(Resource.Color.notificationBgColor); // the message to display. Console.WriteLine("package name:" + context.PackageName); var remoteView = new RemoteViews(context.PackageName, Resource.Layout.customNotification); remoteView.SetTextViewText(Resource.Id.message, payload.Info.Body); builder.SetContent(remoteView); if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Lollipop) { builder.SetSmallIcon(Resource.Drawable.notification_icon); //builder.SetLargeIcon(); } /* * * var style = new NotificationCompat.BigTextStyle(builder); * style.BigText(payload.Info.Body); */ //style.Build(); //builder.SetStyle(style); //if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.JellyBean) //{ // // Using BigText notification style to support long message //} NotificationManager notificationManager = (NotificationManager)context.GetSystemService(Context.NotificationService); notificationManager.Notify(notifyId, builder.Build()); //style.Build()); } catch (Exception e) { Console.WriteLine(" Exception on Show " + e.Message + "\n Source: " + e.Source + "\n Stacktrace: " + e.StackTrace); } }
protected override async void OnHandleIntent(Intent intent) { AppWidgetManager manager = AppWidgetManager.GetInstance(this); int[] allWidgetIds = intent .GetIntArrayExtra(AppWidgetManager.ExtraAppwidgetIds); var layoutId = intent.GetIntExtra("ResourceId", Resource.Layout.CalendarWidgetLight); var views = new List <Tuple <RemoteViews, int> >(); try { ResourceLocator.RegisterBase(); ResourceLocator.RegisterAppDataServiceAdapter(new ApplicationDataServiceService()); ResourceLocator.RegisterPasswordVaultAdapter(new PasswordVaultProvider()); ResourceLocator.RegisterMessageDialogAdapter(new MessageDialogProvider()); ResourceLocator.RegisterDataCacheAdapter(new Adapters.DataCache(null)); Credentials.Init(); } catch (Exception e) { } bool running = ResourceLocator.AnimeLibraryDataStorage.AllLoadedAuthAnimeItems?.Any() ?? false; foreach (var widgetId in allWidgetIds) { var view = new RemoteViews(PackageName, layoutId); views.Add(new Tuple <RemoteViews, int>(view, widgetId)); manager.UpdateAppWidget(widgetId, view); } CalendarPivotPage shows = null; if (Credentials.Authenticated) { if (!running) { ViewModelLocator.AnimeList.ListSource = Credentials.UserName; await ViewModelLocator.AnimeList.FetchData(true, AnimeListWorkModes.Anime); } await ViewModelLocator.CalendarPage.Init(true); shows = ViewModelLocator.CalendarPage.CalendarData.FirstOrDefault( page => page.DayOfWeek == DateTime.Now.DayOfWeek); } if (shows != null && shows.Items.Any()) { foreach (var view in views) { view.Item1.SetViewVisibility(Resource.Id.LoadingSpinner, ViewStates.Gone); view.Item1.SetViewVisibility(Resource.Id.EmptyNotice, ViewStates.Gone); view.Item1.SetViewVisibility(Resource.Id.GridView, ViewStates.Visible); view.Item1.SetRemoteAdapter(Resource.Id.GridView, new Intent(ApplicationContext, typeof(CalendarWidgetRemoteViewsService))); var intentTemplate = new Intent(ApplicationContext, typeof(MainActivity)); view.Item1.SetPendingIntentTemplate(Resource.Id.GridView, PendingIntent.GetActivity(ApplicationContext, 0, intentTemplate, 0)); manager.UpdateAppWidget(view.Item2, view.Item1); } } else { foreach (var view in views) { view.Item1.SetViewVisibility(Resource.Id.LoadingSpinner, ViewStates.Gone); view.Item1.SetViewVisibility(Resource.Id.EmptyNotice, ViewStates.Visible); view.Item1.SetViewVisibility(Resource.Id.GridView, ViewStates.Gone); manager.UpdateAppWidget(view.Item2, view.Item1); } } }
private void SetTextViewText(RemoteViews widgetView) { // if (listTeamName.Count==0) // { // team1 = "1"; // team1points = "2"; // } // else // { // //team1 = listTeamName[0]; // //team1points = listTeamPoints[0]; // team1 = "3"; // team1points = "4"; // } //team2 = MainActivity.listTeamName[1]; //team2points = MainActivity.listTeamPoints[1]; //team3 = MainActivity.listTeamName[2]; //team3points = MainActivity.listTeamPoints[2]; //team4 = MainActivity.listTeamName[3]; //team4points = MainActivity.listTeamPoints[3]; //team5 = MainActivity.listTeamName[4]; //team5points = MainActivity.listTeamPoints[4]; ////Typeface tf = Typeface.CreateFromAsset(Context, "epl.ttf"); //widgetView.SetTextViewText(Resource.Id.widget_team1, string.Format(team1)); //widgetView.SetTextViewText(Resource.Id.widget_team1points, string.Format(team1points)); //widgetView.SetTextViewText(Resource.Id.widget_team2, string.Format(team2)); //widgetView.SetTextViewText(Resource.Id.widget_team2points, string.Format(team2points)); //widgetView.SetTextViewText(Resource.Id.widget_team3, string.Format(team3)); //widgetView.SetTextViewText(Resource.Id.widget_team3points, string.Format(team3points)); //widgetView.SetTextViewText(Resource.Id.widget_team4, string.Format(team4)); //widgetView.SetTextViewText(Resource.Id.widget_team4points, string.Format(team4points)); //widgetView.SetTextViewText(Resource.Id.widget_team5, string.Format(team5)); //widgetView.SetTextViewText(Resource.Id.widget_team5points, string.Format(team5points)); if (listTeamName.Count == 0) { widgetView.SetViewVisibility(Resource.Id.eplNeedRefresh, ViewStates.Visible); widgetView.SetViewVisibility(Resource.Id.eplTeamsGrid, ViewStates.Gone); //team1 = "Refresh Needed"; //team1points = "6"; //widgetView.SetTextViewText(Resource.Id.widget_team1, string.Format(team1)); //widgetView.SetTextViewText(Resource.Id.widget_team1points, string.Format(team1points)); widgetView.SetTextViewText(Resource.Id.updateTime, string.Format("Last updated on: Update Needed")); } else { widgetView.SetViewVisibility(Resource.Id.eplNeedRefresh, ViewStates.Gone); widgetView.SetViewVisibility(Resource.Id.eplTeamsGrid, ViewStates.Visible); team1 = listTeamName[0]; team1points = listTeamPoints[0]; team2 = listTeamName[1]; team2points = listTeamPoints[1]; team3 = listTeamName[2]; team3points = listTeamPoints[2]; team4 = listTeamName[3]; team4points = listTeamPoints[3]; team5 = listTeamName[4]; team5points = listTeamPoints[4]; widgetView.SetTextViewText(Resource.Id.widget_team1, string.Format(team1)); widgetView.SetTextViewText(Resource.Id.widget_team1points, string.Format(team1points)); widgetView.SetTextViewText(Resource.Id.widget_team2, string.Format(team2)); widgetView.SetTextViewText(Resource.Id.widget_team2points, string.Format(team2points)); widgetView.SetTextViewText(Resource.Id.widget_team3, string.Format(team3)); widgetView.SetTextViewText(Resource.Id.widget_team3points, string.Format(team3points)); widgetView.SetTextViewText(Resource.Id.widget_team4, string.Format(team4)); widgetView.SetTextViewText(Resource.Id.widget_team4points, string.Format(team4points)); widgetView.SetTextViewText(Resource.Id.widget_team5, string.Format(team5)); widgetView.SetTextViewText(Resource.Id.widget_team5points, string.Format(team5points)); widgetView.SetTextViewText(Resource.Id.updateTime, string.Format("Last updated on: {0:H:mm:ss}", DateTime.Now)); } }
private Notification BuildNotification() { _notificationBuilder = new NotificationCompat.Builder(ApplicationContext); _notificationBuilder.SetOngoing(true); _notificationBuilder.SetAutoCancel(false); _notificationBuilder.SetSmallIcon(Resource.Drawable.NotifIcon); //Open up the player screen when the user taps on the notification. var launchNowPlayingIntent = new Intent(); launchNowPlayingIntent.SetAction(LaunchNowPlayingAction); var launchNowPlayingPendingIntent = PendingIntent.GetBroadcast(ApplicationContext, 0, launchNowPlayingIntent, 0); _notificationBuilder.SetContentIntent(launchNowPlayingPendingIntent); //Grab the notification layouts. var notificationView = new RemoteViews(ApplicationContext.PackageName, Resource.Layout.notification_custom_layout); var expNotificationView = new RemoteViews(ApplicationContext.PackageName, Resource.Layout.notification_custom_expanded_layout); //Initialize the notification layout buttons. var previousTrackIntent = new Intent(); previousTrackIntent.SetAction(PrevAction); var previousTrackPendingIntent = PendingIntent.GetBroadcast(ApplicationContext, 0, previousTrackIntent, 0); var playPauseTrackIntent = new Intent(); playPauseTrackIntent.SetAction(PlayPauseAction); var playPauseTrackPendingIntent = PendingIntent.GetBroadcast(ApplicationContext, 0, playPauseTrackIntent, 0); var nextTrackIntent = new Intent(); nextTrackIntent.SetAction(NextAction); var nextTrackPendingIntent = PendingIntent.GetBroadcast(ApplicationContext, 0, nextTrackIntent, 0); var stopServiceIntent = new Intent(); stopServiceIntent.SetAction(StopAction); var stopServicePendingIntent = PendingIntent.GetBroadcast(ApplicationContext, 0, stopServiceIntent, 0); //Check if audio is playing and set the appropriate play/pause button. if (App.Current.AudioServiceConnection.GetPlaybackService().IsPlayingMusic) { notificationView.SetImageViewResource(Resource.Id.notification_base_play, Resource.Drawable.btn_playback_pause_light); expNotificationView.SetImageViewResource(Resource.Id.notification_expanded_base_play, Resource.Drawable.btn_playback_pause_light); } else { notificationView.SetImageViewResource(Resource.Id.notification_base_play, Resource.Drawable.btn_playback_play_light); expNotificationView.SetImageViewResource(Resource.Id.notification_expanded_base_play, Resource.Drawable.btn_playback_play_light); } var song = AudioPlayerHelper.CurrentQueueSong.Song; //Set the notification content. expNotificationView.SetTextViewText(Resource.Id.notification_expanded_base_line_one, song.Name); expNotificationView.SetTextViewText(Resource.Id.notification_expanded_base_line_two, song.ArtistName); expNotificationView.SetTextViewText(Resource.Id.notification_expanded_base_line_three, song.Album.Name); notificationView.SetTextViewText(Resource.Id.notification_base_line_one, song.Name); notificationView.SetTextViewText(Resource.Id.notification_base_line_two, song.ArtistName); //the previous and next buttons, always enabled. expNotificationView.SetViewVisibility(Resource.Id.notification_expanded_base_previous, ViewStates.Visible); expNotificationView.SetViewVisibility(Resource.Id.notification_expanded_base_next, ViewStates.Visible); expNotificationView.SetOnClickPendingIntent(Resource.Id.notification_expanded_base_play, playPauseTrackPendingIntent); expNotificationView.SetOnClickPendingIntent(Resource.Id.notification_expanded_base_next, nextTrackPendingIntent); expNotificationView.SetOnClickPendingIntent(Resource.Id.notification_expanded_base_previous, previousTrackPendingIntent); notificationView.SetViewVisibility(Resource.Id.notification_base_previous, ViewStates.Visible); notificationView.SetViewVisibility(Resource.Id.notification_base_next, ViewStates.Visible); notificationView.SetOnClickPendingIntent(Resource.Id.notification_base_play, playPauseTrackPendingIntent); notificationView.SetOnClickPendingIntent(Resource.Id.notification_base_next, nextTrackPendingIntent); notificationView.SetOnClickPendingIntent(Resource.Id.notification_base_previous, previousTrackPendingIntent); //Set the "Stop Service" pending intents. expNotificationView.SetOnClickPendingIntent(Resource.Id.notification_expanded_base_collapse, stopServicePendingIntent); notificationView.SetOnClickPendingIntent(Resource.Id.notification_base_collapse, stopServicePendingIntent); //Set the album art. if (song.Album.Artwork != null) { if (song.Album.Artwork.Image != null) { expNotificationView.SetImageViewBitmap(Resource.Id.notification_expanded_base_image, song.Album.Artwork.Image as Bitmap); notificationView.SetImageViewBitmap(Resource.Id.notification_base_image, song.Album.Artwork.Image as Bitmap); } else ((PclBitmapImage) song.Album.Artwork).PropertyChanged += OnPropertyChanged; } else song.Album.PropertyChanged += OnPropertyChanged; //Attach the shrunken layout to the notification. _notificationBuilder.SetContent(notificationView); //Build the notification object. var notification = _notificationBuilder.Build(); //Attach the expanded layout to the notification and set its flags. notification.BigContentView = expNotificationView; notification.Flags = NotificationFlags.ForegroundService | NotificationFlags.NoClear | NotificationFlags.OngoingEvent; return notification; }
private Notification CreateNotificationView() { var notificationBuilder = new NotificationCompat.Builder(this); notificationBuilder.SetOngoing(true); notificationBuilder.SetSmallIcon(Resource.Drawable.Icon); if (((int) global::Android.OS.Build.VERSION.SdkInt) >= 16) notificationBuilder.SetPriority((int) NotificationPriority.Max); var notification = notificationBuilder.Build(); // Use the big notification style for Android 4.1+; //#if __ANDROID_16__ if (((int) global::Android.OS.Build.VERSION.SdkInt) >= 16) { Console.WriteLine("NotificationService - Android 4.1+ detected; adding Big View style for notification"); RemoteViews viewBigNotificationPlayer = new RemoteViews(ApplicationContext.PackageName, Resource.Layout.BigNotificationPlayer); notification.BigContentView = viewBigNotificationPlayer; } Console.WriteLine("NotificationService - Android 4.0.3+ detected; adding standard style for notification"); RemoteViews viewNotificationPlayer = new RemoteViews(ApplicationContext.PackageName, Resource.Layout.NotificationPlayer); notification.ContentView = viewNotificationPlayer; _notification = notification; // Create intents for buttons Intent intentPlayPause = new Intent(this, typeof(NotificationService)); intentPlayPause.SetAction(SessionsWidgetActions.SessionsWidgetPlayPause.ToString()); PendingIntent pendingIntentPlayPause = PendingIntent.GetService(this, 0, intentPlayPause, PendingIntentFlags.UpdateCurrent); _notification.ContentView.SetOnClickPendingIntent(Resource.Id.notificationPlayer_btnPlayPause, pendingIntentPlayPause); Intent intentPrevious = new Intent(this, typeof(NotificationService)); intentPrevious.SetAction(SessionsWidgetActions.SessionsWidgetPrevious.ToString()); PendingIntent pendingIntentPrevious = PendingIntent.GetService(this, 0, intentPrevious, PendingIntentFlags.UpdateCurrent); _notification.ContentView.SetOnClickPendingIntent(Resource.Id.notificationPlayer_btnPrevious, pendingIntentPrevious); Intent intentNext = new Intent(this, typeof(NotificationService)); intentNext.SetAction(SessionsWidgetActions.SessionsWidgetNext.ToString()); PendingIntent pendingIntentNext = PendingIntent.GetService(this, 0, intentNext, PendingIntentFlags.UpdateCurrent); _notification.ContentView.SetOnClickPendingIntent(Resource.Id.notificationPlayer_btnNext, pendingIntentNext); Intent intentClose = new Intent(this, typeof(NotificationService)); intentClose.SetAction(SessionsWidgetActions.SessionsWidgetClose.ToString()); PendingIntent pendingIntentClose = PendingIntent.GetService(this, 0, intentClose, PendingIntentFlags.UpdateCurrent); _notification.ContentView.SetOnClickPendingIntent(Resource.Id.notificationPlayer_btnClose, pendingIntentClose); if (((int) global::Android.OS.Build.VERSION.SdkInt) >= 16) { _notification.BigContentView.SetOnClickPendingIntent(Resource.Id.bigNotificationPlayer_btnPlayPause, pendingIntentPlayPause); _notification.BigContentView.SetOnClickPendingIntent(Resource.Id.bigNotificationPlayer_btnPrevious, pendingIntentPrevious); _notification.BigContentView.SetOnClickPendingIntent(Resource.Id.bigNotificationPlayer_btnNext, pendingIntentNext); _notification.BigContentView.SetOnClickPendingIntent(Resource.Id.bigNotificationPlayer_btnClose, pendingIntentClose); } Intent notificationIntent = new Intent(this, typeof(PlayerActivity)); //notificationIntent.SetFlags(ActivityFlags.NewTask | ActivityFlags.ClearTop | ActivityFlags.SingleTop); notificationIntent.SetFlags(ActivityFlags.ClearTop | ActivityFlags.SingleTop); PendingIntent pendingIntent = PendingIntent.GetActivity(this, 0, notificationIntent, 0); _notification.ContentIntent = pendingIntent; StartForeground(1, _notification); return notification; }
private void SetupRunningBtn (Context ctx, RemoteViews views) { var entry = new WidgetSyncManager.WidgetEntryData(); var isRunning = false; // Check if an entry is running. foreach (var item in UpdateService.LastEntries) if (item.IsRunning) { entry = item; isRunning = true; } var baseTime = SystemClock.ElapsedRealtime (); if (isRunning) { views.SetInt (Resource.Id.WidgetActionButton, "setBackgroundColor", ctx.Resources.GetColor (Resource.Color.bright_red)); views.SetInt (Resource.Id.WidgetActionButton, "setText", Resource.String.TimerStopButtonText); views.SetInt (Resource.Id.WidgetColorView, "setColorFilter", Color.ParseColor (entry.Color)); views.SetViewVisibility (Resource.Id.WidgetRunningEntry, ViewStates.Visible); views.SetTextViewText ( Resource.Id.WidgetRunningDescriptionTextView, String.IsNullOrWhiteSpace (entry.Description) ? ctx.Resources.GetString (Resource.String.RunningWidgetNoDescription) : entry.Description); var time = (long)entry.Duration.TotalMilliseconds; // Format chronometer correctly. string format = "00:%s"; if (time >= 3600000 && time < 36000000) { format = "0%s"; } else if (time >= 36000000) { format = "%s"; } views.SetChronometer (Resource.Id.Chronometer, baseTime - (long)entry.Duration.TotalMilliseconds, format, true); } else { views.SetInt (Resource.Id.WidgetActionButton, "setBackgroundColor", ctx.Resources.GetColor (Resource.Color.bright_green)); views.SetInt (Resource.Id.WidgetActionButton, "setText", Resource.String.TimerStartButtonText); views.SetViewVisibility (Resource.Id.WidgetRunningEntry, ViewStates.Invisible); views.SetChronometer (Resource.Id.Chronometer, baseTime, "00:%s", false); views.SetTextViewText (Resource.Id.Chronometer, "00:00:00"); } }
private void ScheduleUpdate (Context ctx, string action) { // Adds a runnable to update the widgets in the worker queue. workerQueue.RemoveMessages (0); workerQueue.Post (() => { var wm = AppWidgetManager.GetInstance (ctx); var cn = new ComponentName (ctx, Java.Lang.Class.FromType (typeof (WidgetProvider))); var ids = wm.GetAppWidgetIds (cn); if (action == RefreshCompleteAction) { OnUpdate (ctx, wm, ids); } else { var views = new RemoteViews (ctx.PackageName, Resource.Layout.keyguard_widget); SetupRunningBtn (ctx, views); wm.PartiallyUpdateAppWidget (ids, views); wm.NotifyAppWidgetViewDataChanged (ids, Resource.Id.WidgetRecentEntriesListView); } }); }
private void UpdateWidgetView() { if (_isShutDowning) return; Console.WriteLine("WidgetService - UpdateWidgetView"); try { // Update widget Console.WriteLine("WidgetService - UpdateWidgetView - Getting widgets (0)..."); RemoteViews viewWidget = new RemoteViews(PackageName, Resource.Layout.WidgetPlayer); Console.WriteLine("WidgetService - UpdateWidgetView - Getting widgets (1)..."); AppWidgetManager manager = AppWidgetManager.GetInstance(this); Console.WriteLine("WidgetService - UpdateWidgetView - Getting widgets (2) - appWidgetIds count: {0}", _widgetIds.Length); // Update metadata on widget if (_audioFile != null) { viewWidget.SetTextViewText(Resource.Id.widgetPlayer_lblArtistName, _audioFile.ArtistName); viewWidget.SetTextViewText(Resource.Id.widgetPlayer_lblAlbumTitle, _audioFile.AlbumTitle); viewWidget.SetTextViewText(Resource.Id.widgetPlayer_lblSongTitle, _audioFile.Title); } else { viewWidget.SetTextViewText(Resource.Id.widgetPlayer_lblArtistName, ""); viewWidget.SetTextViewText(Resource.Id.widgetPlayer_lblAlbumTitle, ""); viewWidget.SetTextViewText(Resource.Id.widgetPlayer_lblSongTitle, ""); } if (_status == PlayerStatusType.Initialized || _status == PlayerStatusType.Paused || _status == PlayerStatusType.Stopped) { viewWidget.SetImageViewResource(Resource.Id.widgetPlayer_btnPlayPause, Resource.Drawable.player_play); } else { viewWidget.SetImageViewResource(Resource.Id.widgetPlayer_btnPlayPause, Resource.Drawable.player_pause); } // Update album art on widget if (_bitmapAlbumArt == null) viewWidget.SetImageViewResource(Resource.Id.widgetPlayer_imageAlbum, 0); else viewWidget.SetImageViewBitmap(Resource.Id.widgetPlayer_imageAlbum, _bitmapAlbumArt); Console.WriteLine("WidgetService - UpdateWidgetView - Getting widgets (3) - appWidgetIds count: {0}", _widgetIds.Length); foreach (int id in _widgetIds) { Console.WriteLine("WidgetService - UpdateWidgetView - Updating widgets - id: {0}", id); manager.UpdateAppWidget(id, viewWidget); } } catch (Exception ex) { Console.WriteLine("WidgetService - UpdateWidgetView - Widget exception: {0}", ex); } }
public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId) { if (livecard == null) { livecard = new LiveCard (Application, "beacon"); remoteViews = new RemoteViews (PackageName, Resource.Layout.LiveCardBeacon); remoteViews.SetTextViewText (Resource.Id.LivecardContent, "Finding the monkey..."); livecard.SetViews (remoteViews); // Set up the live card's action with a pending intent // to show a menu when tapped var menuIntent = new Intent(this, typeof(MenuActivity)); menuIntent.AddFlags(ActivityFlags.NewTask | ActivityFlags.ClearTask); livecard.SetAction(PendingIntent.GetActivity(this, 0, menuIntent, 0)); livecard.Publish (LiveCard.PublishMode.Reveal); } return StartCommandResult.Sticky; }
public void OnCompleted(int task, int splitLineIndex, string pastedText, List <List <object> > tempLines, int curPos, long tempStartPos, long tempEndPos, bool isRemaining, List <Bookmark> foundBookmarks) { StringBuilder pinyin = new StringBuilder(""); RemoteViews smallView = null; if (Build.VERSION.SdkInt < BuildVersionCodes.JellyBean) { foreach (List <object> line in tempLines) { object lastWord = null; foreach (object word in line) { if (lastWord != null && (lastWord is int? || lastWord.GetType() != word.GetType())) { pinyin.Append(" "); } if (word is string) { pinyin.Append((string)word); } else { pinyin.Append(Dict.PinyinToTones(Dict.GetPinyin((int)word))); } lastWord = word; } } smallView = new RemoteViews(Service.PackageName, Resource.Layout.Notification_Small); smallView.SetTextViewText(Resource.Id.notifsmall_text, pinyin); } else { smallView = new RemoteViews(Service.PackageName, Resource.Layout.Notification_Big); } Service.dict = null; NotificationCompat.Builder mBuilder = (new NotificationCompat.Builder(Service.ApplicationContext)) .SetSmallIcon(Resource.Drawable.notification) .SetContentTitle("ChineseReader") .SetContentText(pinyin) .SetContent(smallView) .SetPriority(NotificationCompat.PriorityMax) .SetVibrate(new long[0]); Intent resultIntent = new Intent(Service.Application, typeof(MainActivity)); resultIntent.SetAction(Intent.ActionSend); resultIntent.SetType("text/plain"); resultIntent.PutExtra(Intent.ExtraText, pastedText); // The stack builder object will contain an artificial back stack for the // started Activity. // This ensures that navigating backward from the Activity leads out of // your application to the Home screen. global::Android.Support.V4.App.TaskStackBuilder stackBuilder = global::Android.Support.V4.App.TaskStackBuilder.Create(Service.ApplicationContext); // Adds the back stack for the Intent (but not the Intent itself) stackBuilder.AddParentStack(Class.FromType(typeof(MainActivity))); // Adds the Intent that starts the Activity to the top of the stack stackBuilder.AddNextIntent(resultIntent); PendingIntent resultPendingIntent = stackBuilder.GetPendingIntent(0, (int)PendingIntentFlags.UpdateCurrent); mBuilder.SetContentIntent(resultPendingIntent); NotificationManager mNotificationManager = (NotificationManager)Service.GetSystemService(Context.NotificationService); mNotificationManager.CancelAll(); // mId allows you to update the notification_big later on. Notification notif = mBuilder.Build(); if (Build.VERSION.SdkInt >= BuildVersionCodes.JellyBean) { LineView lv = new LineView(Service.context); lv.line = tempLines[0]; lv.lines = tempLines; lv.hlIndex = new Point(-1, -1); lv.top = new List <string>(); lv.bottom = new List <string>(); lv.tones = new List <int>(); lv.charTypeface = Typeface.Default; int wordHeight = (int)(lv.WordHeight); int lineCount = (int)System.Math.Min(tempLines.Count, System.Math.Floor(256 * lv.scale / wordHeight) + 1); int width = (int)System.Math.Round((double)AnnTask.screenWidth); lv.Measure(width, wordHeight); lv.Layout(0, 0, width, wordHeight); Bitmap bitmap = Bitmap.CreateBitmap(width, (int)System.Math.Min(System.Math.Max(64 * lv.scale, wordHeight * lineCount), 256 * lv.scale), Bitmap.Config.Argb8888); Canvas canvas = new Canvas(bitmap); Paint whiteBg = new Paint(); whiteBg.Color = Color.ParseColor("FFFFFFFF"); canvas.DrawRect(0, 0, canvas.Width, canvas.Height, whiteBg); for (int i = 0; i < lineCount; i++) { lv.lines = tempLines; lv.line = tempLines[i]; lv.bottom.Clear(); lv.top.Clear(); lv.tones.Clear(); int count = lv.lines[i].Count; if (count == 0 || lv.line[count - 1] is string && ((string)lv.line[count - 1]).Length == 0 || tempEndPos >= pastedText.Length && i == tempLines.Count - 1) { lv.lastLine = true; } else { lv.lastLine = false; } for (int j = 0; j < count; j++) { object word = lv.lines[i][j]; if (word is string) { lv.bottom.Add((string)word); lv.top.Add(""); lv.tones.Add(0); } else { int entry = (int)word; string key = Dict.GetCh(entry); lv.bottom.Add(key); if (Service.sharedPrefs.GetString("pref_pinyinType", "marks").Equals("none")) { lv.top.Add(""); } else { lv.top.Add(Dict.PinyinToTones(Dict.GetPinyin(entry))); } if (Service.sharedPrefs.GetString("pref_toneColors", "none").Equals("none")) { lv.tones.Add(0); } else { int tones = int.Parse(Regex.Replace(Dict.GetPinyin(entry), @"[\\D]", "")); int reverseTones = 0; while (tones != 0) { reverseTones = reverseTones * 10 + tones % 10; tones = tones / 10; } lv.tones.Add(reverseTones); } } } lv.Draw(canvas); canvas.Translate(0, wordHeight); } RemoteViews bigView = new RemoteViews(Service.PackageName, Resource.Layout.Notification_Big); bigView.SetImageViewBitmap(Resource.Id.notif_img, bitmap); smallView.SetImageViewBitmap(Resource.Id.notif_img, Bitmap.CreateBitmap(bitmap, 0, 0, bitmap.Width, (int)(64 * lv.scale))); notif.BigContentView = bigView; } mNotificationManager.Notify(NOTIFICATION_ID, notif); }
private void StartForeground(bool flag) { Intent resultIntent = new Intent(this, typeof(MainActivity)); PendingIntent resultPendingIntent = PendingIntent.GetActivity(this, 0, resultIntent, PendingIntentFlags.UpdateCurrent); PendingIntent play_pauseAction = null; int notificationAction = Android.Resource.Drawable.IcMediaPause; var intent_receiver = new Intent(Receiver.ButtonPlayNotificationReceiver.ReceiverPlay); if (flag) { notificationAction = Android.Resource.Drawable.IcMediaPause; play_pauseAction = ActionsInNotification(0); intent_receiver.PutExtra("buttonflag", false); } else { notificationAction = Android.Resource.Drawable.IcMediaPlay; play_pauseAction = ActionsInNotification(1); intent_receiver.PutExtra("buttonflag", true); } SendBroadcast(intent_receiver); contentView = new RemoteViews(ApplicationContext.PackageName, Resource.Layout.notification); if (info_radio != null) { contentView.SetImageViewBitmap(Resource.Id.notification_image, GetImageBitmapFromUrl(info_radio.image)); contentView.SetTextViewText(Resource.Id.notification_text_title, info_radio.track); contentView.SetTextViewText(Resource.Id.notification_text_artist, info_radio.artist); } else { contentView.SetImageViewBitmap(Resource.Id.notification_image, GetImageBitmapFromUrl("http://medianau.top/images/logo.png")); contentView.SetTextViewText(Resource.Id.notification_text_title, "Подключение..."); contentView.SetTextViewText(Resource.Id.notification_text_artist, ""); } contentView.SetImageViewResource(Resource.Id.notification_button_play, notificationAction); contentView.SetOnClickPendingIntent(Resource.Id.notification_button_play, play_pauseAction); contentView.SetOnClickPendingIntent(Resource.Id.notification_button_cancel, ActionsInNotification(2)); NotifyBuilder = new NotificationCompat.Builder(this, Id_Channel); notification = NotifyBuilder.SetContentTitle("Radio NAU started!") .SetTicker("Radio NAU started!") .SetContentText("Radio NAU started!") .SetSmallIcon(Resource.Mipmap.logo_min) .SetContentIntent(resultPendingIntent) .SetPriority(Android.Support.V4.App.NotificationCompat.PriorityDefault) .SetSound(null) .SetOngoing(true) .SetAutoCancel(false) .SetVisibility(NotificationCompat.VisibilityPublic) .Build(); notification.BigContentView = contentView; mNotifyManager = (NotificationManager)GetSystemService(Context.NotificationService); if (Build.VERSION.SdkInt >= Build.VERSION_CODES.O) { NotificationChannel channel = new NotificationChannel(Id_Channel, GetString(Resource.String.noti_channel_default), NotificationImportance.High); channel.SetShowBadge(false); mNotifyManager.CreateNotificationChannel(channel); } //mNotifyManager.Notify(Id_Notification, notification); StartForeground(Id_Notification, notification); }
// Build a widget update to show the current Wiktionary // "Word of the day." Will block until the online API returns. public RemoteViews BuildUpdate(Context context) { // var entry = WordEntry.GetWordOfTheDay(); // Build an update that holds the updated widget contents var updateViews = new RemoteViews(context.PackageName, Resource.Layout.taskwidget); try { var launchAppIntent = new Intent(this, typeof (MainActivity)); launchAppIntent.AddFlags(ActivityFlags.SingleTop); launchAppIntent.AddFlags(ActivityFlags.ClearTop); launchAppIntent.PutExtra("CameFromWidget", true); var pendingIntent = PendingIntent.GetActivity(context, 0, launchAppIntent, 0); updateViews.SetOnClickPendingIntent(Resource.Id.widget_top_action_bar, pendingIntent); var launchAppIntent2 = new Intent(this, typeof(MainActivity)); launchAppIntent2.AddFlags(ActivityFlags.SingleTop); launchAppIntent2.AddFlags(ActivityFlags.ClearTop); var pendingIntent2 = PendingIntent.GetActivity(context, 0, launchAppIntent, 0); updateViews.SetOnClickPendingIntent(Resource.Id.widget_main_area, pendingIntent2); var newTasks = new List<string>(); var newTasksChecked = new List<bool>(); var lineVisibility = new List<ViewStates>(); for(int i = 0; i < 15; i++) { newTasks.Add(string.Empty); newTasksChecked.Add(false); lineVisibility.Add(ViewStates.Gone); } var tasks = DataManager.GetTasks(SortOption.Newest); var count = tasks.Count(); count = count > m_TextViews.Length ? m_TextViews.Length : count; for (int i = 0; i < count; i++) { var task = tasks.ElementAt(i); newTasks[i] = task.Task; newTasksChecked[i] = task.Checked; if (i != 0) lineVisibility[i - 1] = ViewStates.Visible; } if (newTasks[0] == string.Empty) newTasks[0] = "No Tasks Added."; for(int i = 0; i < m_TextViews.Length; i++) { updateViews.SetTextViewText(m_TextViews[i], newTasks[i]); updateViews.SetTextColor(m_TextViews[i], newTasksChecked[i] ? Android.Graphics.Color.DarkGray : Android.Graphics.Color.Black ); } for(int i = 0; i < m_TextViewsLines.Length; i++) updateViews.SetViewVisibility(m_TextViewsLines[i], lineVisibility[i]); } catch (Exception ex) { updateViews.SetTextViewText(Resource.Id.widget_task_1, "Error loading widget"); } return updateViews; }
void RegisterClicks(Context context, int[] appWidgetIds, RemoteViews widgetView) { //SwitchButton widgetView.SetOnClickPendingIntent(Resource.Id.SwitchButton, GetPendingSelfIntent(context, Constants.ACTION_WIDGET_SWITCH)); }
private void T_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { RemoteViews updateViews = buildUpdate(this); manager.UpdateAppWidget(thisWidget, updateViews); }
/** * Creates a small layout for the app widget * * * @param context Application context * @param appWidgetId id of the widget * @return RemoteViews for the small layout */ private static RemoteViews CreateSmallLayout(Context context, int appWidgetId) { RemoteViews remoteViews = new RemoteViews(context.PackageName, Resource.Layout.widget_layout_small); // Update the header for the current unread message count int count = RichPushManager.Shared().RichPushUser.Inbox.UnreadCount; String inboxName = context.GetString(Resource.String.inbox_name); String header = context.GetString(Resource.String.header_format_string, count, inboxName); remoteViews.SetTextViewText(Resource.Id.widget_header_text, header); // Add a click pending intent to launch the inbox remoteViews.SetOnClickPendingIntent(Resource.Id.widget_header, CreateInboxActivityPendingIntent(context)); return remoteViews; }
private void RegisterClicks(Context context, int[] appWidgetIds, RemoteViews widgetView) { widgetView.SetOnClickPendingIntent(Resource.Id.widget_btnImage, GetPendingSelfIntent(context, _WidgetClickedTag)); }
private RemoteViews UpdateWidgetListView(Context context, int appWidgetId) { RemoteViews ClassIndex = new RemoteViews(context.PackageName, Resource.Layout.classindex); RemoteViews Framework = new RemoteViews(context.PackageName, Resource.Layout.classtableframe); RemoteViews remoteViews = new RemoteViews(context.PackageName, Resource.Layout.classtablewidget); remoteViews.RemoveAllViews(Resource.Id.ClassGrid); Framework.RemoveAllViews(Resource.Id.classgridframe); remoteViews.AddView(Resource.Id.ClassGrid, ClassIndex); if (!Core.Initialized) { Framework.SetTextViewText(Resource.Id.lastrefreshtime, "请进入程序初次设置后点击刷新"); Framework.AddView(Resource.Id.classgridframe, remoteViews); return(Framework); } RenderItems(); for (int i = 0; i < 7; i++) { RemoteViews SingleLine = new RemoteViews(context.PackageName, Resource.Layout.SingleLine); int AlreadyFillBlanks = 0; for (int j = 0; j < 11; j++) { if (items[i, j] == null) { if (AlreadyFillBlanks == 11) { continue; } int Period = 11 - AlreadyFillBlanks; int LayoutId = (int)typeof(Resource.Layout).GetField("singleclassitem_" + Period.ToString()).GetRawConstantValue(); RemoteViews AddView = new RemoteViews(context.PackageName, LayoutId); SingleLine.AddView(Resource.Id.singleline, AddView); AlreadyFillBlanks += Period; } else if (items[i, j].Name == "") { int Period = items[i, j].DayEnd - items[i, j].DayBegin + 1; int LayoutId = (int)typeof(Resource.Layout).GetField("singleclassitem_" + Period.ToString()).GetRawConstantValue(); AlreadyFillBlanks += Period; RemoteViews AddView = new RemoteViews(context.PackageName, LayoutId); SingleLine.AddView(Resource.Id.singleline, AddView); } else { int Period = items[i, j].DayEnd - items[i, j].DayBegin + 1; int LayoutId = (int)typeof(Resource.Layout).GetField("singleclassitem_" + Period.ToString()).GetRawConstantValue(); int ViewId = (int)typeof(Resource.Id).GetField("class" + Period.ToString()).GetRawConstantValue(); RemoteViews AddView = new RemoteViews(context.PackageName, LayoutId); AddView.SetTextViewText(ViewId, items[i, j].Name + "\n" + items[i, j].Classroom); Color color = ClassColors[items[i, j].Name[0] % 10]; //color.A = 95; AlreadyFillBlanks += Period; AddView.SetInt(ViewId, "setBackgroundColor", color); SingleLine.AddView(Resource.Id.singleline, AddView); } } AlreadyFillBlanks = 0; remoteViews.AddView(Resource.Id.ClassGrid, SingleLine); } DateTime currentTime = DateTime.Now; var WeekDays = new string[] { "星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; var LastRefreshTime = $"{currentTime.ToString("m")} {WeekDays[(int)currentTime.DayOfWeek]} 第{Core.App.Service.CurrentWeek}周 点击刷新"; Framework.SetTextViewText(Resource.Id.lastrefreshtime, LastRefreshTime); Framework.AddView(Resource.Id.classgridframe, remoteViews); return(Framework); }
private void onShowViewModel(GlassShowViewModelMessage request) { var shouldPublish = ensureLiveCard(request); if (GlassViewModelAnnotator.Annotators.ContainsKey(request.ViewModelType) && shouldPublish) { var rendererType = GlassViewModelAnnotator.Annotators[request.ViewModelType]; if (rendererType.IsSubclassOf(typeof(GlassDirectRenderingCallbackTarget))) { var renderer = Activator.CreateInstance(rendererType, new[] {request.SenderAsService}) as GlassDirectRenderingCallbackTarget; renderer.attachedService(request.SenderAsService); request.SenderAsService.attachedRenderer(renderer); try { _liveCard .SetDirectRenderingEnabled(true) .SurfaceHolder .AddCallback(renderer.RenderingCallbackWrapper); _liveCard.Attach(request.SenderAsService); var menuIntent = new Intent(request.SenderAsService, typeof(CompassMenuActivity)); menuIntent.AddFlags(ActivityFlags.NewTask | ActivityFlags.ClearTask); _liveCard.SetAction(PendingIntent.GetActivity(request.SenderAsService, 0, menuIntent, 0)); } catch (Exception ex) { } } else { //var rv = new RemoteViews(request.SenderAsService.PackageName, Resource.Layout.ViewMapNotFound); //rv.SetTextViewText(Resource.Id.LivecardContent, "Unsupported view type: " + request.ViewModelType.Name); //_liveCard.SetViews(rv); } //var rv = new RemoteViews(request.SenderAsService.PackageName, Resource.Layout.ViewMapNotFound); //rv.SetTextViewText(Resource.Id.LivecardContent, "Up and running " + request.ViewModelType.Name); //_liveCard.SetViews(rv); } else if (shouldPublish) { var rv = new RemoteViews(request.SenderAsService.PackageName, Resource.Layout.ViewMapNotFound); rv.SetTextViewText(Resource.Id.LivecardContent, "Could not locate annotation for view model: " + request.ViewModelType.Name); _liveCard.SetViews(rv); var menuIntent = new Intent(request.SenderAsService, typeof(CompassMenuActivity)); menuIntent.AddFlags(ActivityFlags.NewTask | ActivityFlags.ClearTask); _liveCard.SetAction(PendingIntent.GetActivity(request.SenderAsService, 0, menuIntent, 0)); _liveCard.Attach(request.SenderAsService); } if (shouldPublish) _liveCard.Publish(LiveCard.PublishMode.Reveal); _liveCard.Navigate(); }
public void mostrarnotificacion() { var listapending = listapendingintents(); RemoteViews contentView = new RemoteViews(PackageName, Resource.Layout.layoutminiplayeronline); if (linkactual.Trim().Length > 1) { try { contentView.SetImageViewBitmap(Resource.Id.imageView1, ImageHelper.GetRoundedShape(GetImageBitmapFromUrl(linkactual))); contentView.SetImageViewBitmap(Resource.Id.fondo1, ImageHelper.CreateBlurredImageFromUrl(this, 20, linkactual)); } catch (Exception) { } } contentView.SetOnClickPendingIntent(Resource.Id.imageView1, listapending[5]); contentView.SetTextViewText(Resource.Id.textView1, tituloactual); contentView.SetOnClickPendingIntent(Resource.Id.imageView2, listapending[0]); contentView.SetOnClickPendingIntent(Resource.Id.imageView4, listapending[1]); contentView.SetOnClickPendingIntent(Resource.Id.imageView3, listapending[2]); contentView.SetOnClickPendingIntent(Resource.Id.imageView6, listapending[3]); contentView.SetOnClickPendingIntent(Resource.Id.imageView5, listapending[4]); /* * * 1-playpause * 2-siguiente * 3-anterior * 4-adelantar * 5-atrazar * */ Notification.Action accion1 = new Notification.Action(Resource.Drawable.playpause, "Playpause", listapending[0]); Notification.Action accion2 = new Notification.Action(Resource.Drawable.skipnext, "Siguiente", listapending[1]); Notification.Action accion3 = new Notification.Action(Resource.Drawable.skipprevious, "Anterior", listapending[2]); Notification.Action accion4 = new Notification.Action(Resource.Drawable.skipforward, "adelantar", listapending[3]); Notification.Action accion5 = new Notification.Action(Resource.Drawable.skipbackward, "atrazar", listapending[4]); #pragma warning disable CS0618 // El tipo o el miembro están obsoletos var nBuilder = new Notification.Builder(this); #pragma warning restore CS0618 // El tipo o el miembro están obsoletos Notification.MediaStyle estilo = new Notification.MediaStyle(); if (Mainmenu.gettearinstancia() != null) { // estilo.SetMediaSession(mainmenu.gettearinstancia().mSession.SessionToken); estilo.SetShowActionsInCompactView(1, 2, 3); } if (Build.VERSION.SdkInt < BuildVersionCodes.Lollipop) { #pragma warning disable 414 try { #pragma warning disable CS0618 // El tipo o el miembro están obsoletos nBuilder.SetContent(contentView); #pragma warning restore CS0618 // El tipo o el miembro están obsoletos } catch (Exception) { } #pragma warning restore 414 } else { nBuilder.SetStyle(estilo); nBuilder.SetLargeIcon(ImageHelper.GetImageBitmapFromUrl(linkactual)); nBuilder.SetContentTitle(tituloactual); nBuilder.SetContentText("Desde: " + Mainmenu.gettearinstancia().devicename); nBuilder.AddAction(accion5); nBuilder.AddAction(accion3); nBuilder.AddAction(accion1); nBuilder.AddAction(accion2); nBuilder.AddAction(accion4); nBuilder.SetContentIntent(listapending[5]); nBuilder.SetColor(Android.Graphics.Color.ParseColor("#ce2c2b")); } nBuilder.SetOngoing(true); nBuilder.SetSmallIcon(Resource.Drawable.play); Notification notification = nBuilder.Build(); StartForeground(19248736, notification); }
public override RemoteViews Setup(Context context, TimeEntryWidgetInfo widgetInfo) { var view = new RemoteViews(context.PackageName, Resource.Layout.TimeEntryWidget); SetupActionsForStartAndStopButtons(context, view); view.SetOnClickPendingIntent(Resource.Id.RootLayout, getOpenAppToLoginPendingIntent(context)); if (widgetInfo.IsRunning) { view.SetViewVisibility(Resource.Id.StartButton, Gone); view.SetViewVisibility(Resource.Id.StopButton, Visible); var duration = (DateTimeOffset.Now - widgetInfo.StartTime).TotalMilliseconds; view.SetChronometer(Resource.Id.DurationTextView, SystemClock.ElapsedRealtime() - (long)duration, "%s", true); if (string.IsNullOrEmpty(widgetInfo.Description)) { view.SetTextViewText(Resource.Id.DescriptionTextView, Resources.NoDescription); view.SetTextColor(Resource.Id.DescriptionTextView, context.SafeGetColor(Resource.Color.secondaryText)); } else { view.SetTextViewText(Resource.Id.DescriptionTextView, widgetInfo.Description); view.SetTextColor(Resource.Id.DescriptionTextView, context.SafeGetColor(Resource.Color.primaryText)); } view.SetViewVisibility(Resource.Id.DotView, widgetInfo.HasProject.ToVisibility()); view.SetViewVisibility(Resource.Id.ProjectTextView, widgetInfo.HasProject.ToVisibility()); if (widgetInfo.HasProject) { // Project var projectColor = widgetInfo.ProjectColor != null ? Color.ParseColor(widgetInfo.ProjectColor) : Color.Black; view.SetInt(Resource.Id.DotView, "setBackgroundColor", projectColor); view.SetTextViewText(Resource.Id.ProjectTextView, widgetInfo.ProjectName ?? ""); view.SetTextColor(Resource.Id.ProjectTextView, projectColor); // Client view.SetViewVisibility(Resource.Id.ClientTextView, widgetInfo.HasClient.ToVisibility()); if (widgetInfo.HasClient) view.SetTextViewText(Resource.Id.ClientTextView, widgetInfo.ClientName); } } else { view.SetViewVisibility(Resource.Id.StartButton, Visible); view.SetViewVisibility(Resource.Id.StopButton, Gone); view.SetChronometer(Resource.Id.DurationTextView, SystemClock.ElapsedRealtime(), "%s", false); view.SetTextViewText(Resource.Id.DescriptionTextView, Resources.NoDescription); view.SetTextColor(Resource.Id.DescriptionTextView, context.SafeGetColor(Resource.Color.secondaryText)); view.SetViewVisibility(Resource.Id.DotView, false.ToVisibility()); view.SetViewVisibility(Resource.Id.ProjectTextView, false.ToVisibility()); view.SetViewVisibility(Resource.Id.ClientTextView, false.ToVisibility()); } return view; }
void ShowNotification(bool custom) { Resources res = Resources; NotificationManager notificationManager = (NotificationManager) GetSystemService ( NotificationService); Notification.Builder builder = new Notification.Builder (this) .SetSmallIcon (Resource.Drawable.ic_stat_notify_example) .SetAutoCancel (true) .SetTicker (GetString(Resource.String.notification_text)) .SetContentIntent (GetDialogPendingIntent ("Tapped the notification entry.")); if (custom) { // Sets a custom content view for the notification, including an image button. RemoteViews layout = new RemoteViews (PackageName, Resource.Layout.notification); layout.SetTextViewText (Resource.Id.notification_title, GetString (Resource.String.app_name)); layout.SetOnClickPendingIntent (Resource.Id.notification_button, GetDialogPendingIntent ("Tapped the 'dialog' button in the notification.")); builder.SetContent (layout); // Notifications in Android 3.0 now have a standard mechanism for displaying large // bitmaps such as contact avatars. Here, we load an example image and resize it to the // appropriate size for large bitmaps in notifications. Bitmap largeIconTemp = BitmapFactory.DecodeResource (res, Resource.Drawable.notification_default_largeicon); Bitmap largeIcon = Bitmap.CreateScaledBitmap ( largeIconTemp, res.GetDimensionPixelSize (Android.Resource.Dimension.NotificationLargeIconWidth), res.GetDimensionPixelSize (Android.Resource.Dimension.NotificationLargeIconHeight), false); largeIconTemp.Recycle (); builder.SetLargeIcon (largeIcon); } else { builder .SetNumber (7) // An example number. .SetContentTitle (GetString (Resource.String.app_name)) .SetContentText (GetString (Resource.String.notification_text)); } notificationManager.Notify (NotificationDefault, builder.Notification); }
public ThisSimpleImageLoadingListener(AppWidgetManager appWidgetManager, int appWidgetId, RemoteViews remoteViews, int imageResId) { mAppWidgetManager = appWidgetManager; mAppWidgetId = appWidgetId; mRemoteViews = remoteViews; mImageResId = imageResId; }
protected override void OnUpdateCustomPart(Context context, AppWidgetSettings settings, RemoteViews view) { var use12HourFormat = settings.Use12HourFormat; var offset = use12HourFormat ? 1 : 0; var format = settings.GetHourFormat(ApPmFormat); var clockLength = format.Length; var dateformat = Environment.NewLine + settings.GetDateFormat(); //var lengthdate = dateformat.Length; format += dateformat + Environment.NewLine; var spannable = new SpannableString(format); spannable.SetSpan(new AbsoluteSizeSpan(settings.ClockTextSizeSp, true), offset, clockLength, SpanTypes.ExclusiveExclusive); spannable.SetSpan(new TextAppearanceSpan(context, Resource.Style.wgClockTextStyle), offset, clockLength, SpanTypes.ExclusiveExclusive); spannable.SetSpan(new AlignmentSpanStandard(Layout.Alignment.AlignCenter), 0, clockLength, SpanTypes.ExclusiveExclusive); SetClockProperties(view, Resource.Id.txtDateTime, spannable); }
private void SetTextViewText(RemoteViews widgetView) { widgetView.SetTextViewText(Resource.Id.textView2, text: "HelloWorld"); }
private void SetClockProperties(RemoteViews view, int id, ICharSequence spannable) { view.SetCharSequence(id, "setFormat12Hour", spannable); view.SetCharSequence(id, "setFormat24Hour", spannable); }
public RemoteViews GetViewAt(int position) { try { object item = _items[position]; if (item is DateTime) { var dateHeaderView = new RemoteViews(_context.PackageName, Resource.Layout.WidgetScheduleDateListItem); dateHeaderView.SetTextViewText(Resource.Id.WidgetScheduleDateHeaderTextView, WidgetAgendaService.WidgetAgendaFactory.ToFriendlyDate((DateTime)item, _now)); return(dateHeaderView); } if (item is string) { // String represents "Nothing due!", etc var emptyView = new RemoteViews(_context.PackageName, Resource.Layout.WidgetScheduleEmptyListItem); emptyView.SetTextViewText(Resource.Id.WidgetScheduleEmptyListItemTextView, item as string); return(emptyView); } if (item is ViewItemHoliday) { var holiday = item as ViewItemHoliday; RemoteViews holidayView = new RemoteViews(_context.PackageName, Resource.Layout.WidgetScheduleHolidayListItem); holidayView.SetTextViewText(Resource.Id.WidgetScheduleHolidayNameTextView, holiday.Name.Trim()); holidayView.SetInt(Resource.Id.WidgetScheduleHolidayListItem, "setBackgroundColor", Views.DayScheduleSnapshotView.HolidayColor); Intent holidayIntent = new Intent() .SetAction(Intent.ActionView) .SetData(Android.Net.Uri.Parse("powerplanner:?" + new ViewHolidayArguments() { ItemId = holiday.Identifier, LaunchSurface = LaunchSurface.SecondaryTile, LocalAccountId = _localAccountId }.SerializeToString())); holidayView.SetOnClickFillInIntent(Resource.Id.WidgetScheduleHolidayListItem, holidayIntent); return(holidayView); } var schedule = item as ViewItemSchedule; var c = schedule.Class; if (c == null) { var emptyView = new RemoteViews(_context.PackageName, Resource.Layout.WidgetScheduleEmptyListItem); return(emptyView); } bool hasRoom = !string.IsNullOrWhiteSpace(schedule.Room); RemoteViews classView = new RemoteViews(_context.PackageName, hasRoom ? Resource.Layout.WidgetScheduleClassWithRoomListItem : Resource.Layout.WidgetScheduleClassListItem); classView.SetTextViewText(Resource.Id.WidgetScheduleClassNameTextView, c.Name.Trim()); classView.SetTextViewText(Resource.Id.WidgetScheduleClassTimeTextView, Views.ListItems.MyScheduleItemView.GetStringTimeToTime(schedule)); if (hasRoom) { classView.SetTextViewText(Resource.Id.WidgetScheduleClassRoomTextView, schedule.Room.Trim()); } classView.SetInt(Resource.Id.WidgetScheduleClassListItem, "setBackgroundColor", ColorTools.GetColor(c.Color)); Intent classIntent = new Intent() .SetAction(Intent.ActionView) .SetData(Android.Net.Uri.Parse("powerplanner:?" + new ViewClassArguments() { ItemId = c.Identifier, LaunchSurface = LaunchSurface.SecondaryTile, LocalAccountId = _localAccountId }.SerializeToString())); classView.SetOnClickFillInIntent(Resource.Id.WidgetScheduleClassListItem, classIntent); return(classView); } catch (Exception ex) { // Out of range exception can be expected since the items list can change while we're working if (!(ex is ArgumentOutOfRangeException)) { TelemetryExtension.Current?.TrackException(ex); } var emptyView = new RemoteViews(_context.PackageName, Resource.Layout.WidgetScheduleEmptyListItem); return(emptyView); } }
private void SetView(Context context, int appWidgetId, RemoteViews widgetView, WidgetLargeParams widgetLargeParams) { if (!widgetLargeParams.IsRefreshing) { Realm realm = Realm.GetInstance(DB.RealmConfiguration); // Bind the RemoteViewsService (adapter) for the Chapters list Intent intent = new Intent(context, typeof(RemoteChapterAdapter)); intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); intent.PutExtra(RemoteChapterAdapter.ExtraBookId, widgetLargeParams.Book); intent.PutExtra(RemoteChapterAdapter.ExtraSortOrder, widgetLargeParams.Descending); intent.SetData(Uri.Parse(intent.ToUri(IntentUriType.Scheme))); widgetView.SetRemoteAdapter(Resource.Id.list_chapters, intent); // Set Chapter list click intent template Intent chapterClickIntentTemplate = new Intent(Intent.ActionView); PendingIntent chapterClickPendingIntentTemplate = TaskStackBuilder.Create(context) .AddNextIntentWithParentStack(chapterClickIntentTemplate) .GetPendingIntent(appWidgetId, PendingIntentFlags.UpdateCurrent); widgetView.SetPendingIntentTemplate(Resource.Id.list_chapters, chapterClickPendingIntentTemplate); // Set list header to Book title string title = realm.Find <Book>(widgetLargeParams.Book).Title; widgetView.SetTextViewText(Resource.Id.book_title, title); Intent bookIntent = new Intent(context, typeof(WidgetLarge)); bookIntent.SetAction(BookClick); bookIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); PendingIntent bookPendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, bookIntent, PendingIntentFlags.OneShot); widgetView.SetOnClickPendingIntent(Resource.Id.book_title, bookPendingIntent); // Bind the click intent for the refresh button on the widget Intent refreshIntent = new Intent(context, typeof(WidgetLarge)); refreshIntent.SetAction(RefreshClick); refreshIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); PendingIntent refreshPendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, refreshIntent, PendingIntentFlags.UpdateCurrent); widgetView.SetOnClickPendingIntent(Resource.Id.btn_refresh, refreshPendingIntent); realm.Dispose(); } // Bind the click intent for the previous button on the widget Intent previousIntent = new Intent(context, typeof(WidgetLarge)); previousIntent.SetAction(PreviousClick); previousIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); PendingIntent previousPendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, previousIntent, PendingIntentFlags.UpdateCurrent); widgetView.SetOnClickPendingIntent(Resource.Id.btn_previous, previousPendingIntent); // Bind the click intent for the next button on the widget Intent nextIntent = new Intent(context, typeof(WidgetLarge)); nextIntent.SetAction(NextClick); nextIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); PendingIntent nextPendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, nextIntent, PendingIntentFlags.UpdateCurrent); widgetView.SetOnClickPendingIntent(Resource.Id.btn_next, nextPendingIntent); // Bind the click intent for the reverse button on the widget Intent reverseIntent = new Intent(context, typeof(WidgetLarge)); reverseIntent.SetAction(ReverseClick); reverseIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); PendingIntent reversePendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, reverseIntent, PendingIntentFlags.UpdateCurrent); widgetView.SetOnClickPendingIntent(Resource.Id.btn_reverse, reversePendingIntent); }
private void SetTextViewText(RemoteViews widgetView) { //widgetView.SetTextViewText(Resource.Id.widgetMedium, "PetGo"); //widgetView.SetTextViewText(Resource.Id.widgetSmall, string.Format("Last update: {0:H:mm:ss}", DateTime.Now)); }
protected virtual void UpdateWeatherPart(Context context, RemoteViews view, AppWidgetSettings settings, bool isDemoMode) { var weather = settings.Weather; var utcNow = DateTime.UtcNow; if (isDemoMode && weather == null) { var weatherDataPoint = new WeatherDataPoint { Date = utcNow, Temperature = 0, MinTemperature = -1, MaxTemperature = 1, WeatherCode = WeatherCodes.ClearSky, Condition = context.GetString(Resource.String.DemoCondition) }; weather = new WeatherForecast(providerId: settings.WeatherProviderId, latitude: null, longitude: null, units: AppSettings.Default.Units, languageCode: AppSettings.Default.Language, link: null, hasIcons: false) { Currently = weatherDataPoint, Daily = new[] { weatherDataPoint } }; } if (weather?.MaxPublishedDate == null) { return; } var actualUtcDate = utcNow > weather.MaxPublishedDate ? weather.MaxPublishedDate.Value : utcNow; var currently = weather.FindActualCurrentlyAsync(actualUtcDate).Result; if (currently == null) { return; } var temperature = string.Empty; using (var weatherTools = new WeatherTools { ProviderUnits = weather.Units, }) { var degree = weatherTools.DegreeString; if (currently.Temperature.HasValue) { temperature = weatherTools.ConvertTemperatureToString(currently.Temperature.Value, "{0:f0}{1}", degree); } SetTextFormatted(view, Resource.Id.txtTemp, temperature, weatherTools.IsTemperatureAlerted(currently.Temperature)); var minTempText = string.Empty; var maxTempText = string.Empty; var visibility = ViewStates.Gone; var minTemp = weatherTools .CalculateMinTemperatureAsync(actualUtcDate, weather, currently.MinTemperature).Result; var maxTemp = weatherTools .CalculateMaxTemperatureAsync(actualUtcDate, weather, currently.MaxTemperature).Result; if (minTemp.HasValue && maxTemp.HasValue) { minTempText = weatherTools.ConvertTemperatureToString(minTemp.Value, "{0:f0}{1}", degree); maxTempText = weatherTools.ConvertTemperatureToString(maxTemp.Value, "{0:f0}{1}", degree); visibility = ViewStates.Visible; } SetTextFormatted(view, Resource.Id.txtLow, minTempText, weatherTools.IsTemperatureAlerted(minTemp)); view.SetViewVisibility(Resource.Id.txtLowIndicator, visibility); SetTextFormatted(view, Resource.Id.txtHigh, maxTempText, weatherTools.IsTemperatureAlerted(maxTemp)); view.SetViewVisibility(Resource.Id.txtHighIndicator, visibility); var conditionIconId = weatherTools.GetConditionIconId(WidgetTypes.AppWidget, settings.WidgetIconStyle, currently, true, true); view.SetImageViewResource(Resource.Id.imgCondition, conditionIconId); //"Небольшой снегопад " SetTextFormatted(view, Resource.Id.txtCondition, (currently.Condition ?? string.Empty).Trim().ToCapital(), weatherTools.IsConditionExtreme(currently.WeatherCode)); } var locality = (settings.LocationAddress?.GetDisplayLocality() ?? string.Empty).Trim(); if (string.IsNullOrEmpty(locality) && isDemoMode) { locality = context.GetString(settings.UseTrackCurrentLocation ? Resource.String.CurrentLocationEmpty : Resource.String.DemoLocality); } view.SetTextViewText(Resource.Id.txtLocation, locality); }
private void UpdateNowPlayingNotification() { Application.SynchronizationContext.Post(_ => { try { if (isNotifyPlayerActive) { var nm = GetNotifyManager(); var remoteViewExp = new RemoteViews(PackageName, Resource.Layout.layout_notifi_player_exp); remoteViewExp.SetImageViewResource(Resource.Id.ibNotifiAction3, netStatus.StatusPlay == CmdHelper.NetStatus.Status.PAUSE ? Resource.Drawable.play_100_black : Resource.Drawable.pause_100_black); Intent itAction = new Intent(BROAD_NOTIFY_PLAYER); itAction.PutExtra("ACT", 0); PendingIntent piAction = PendingIntent.GetBroadcast(this, IntentHelper.GetId(), itAction, 0); remoteViewExp.SetOnClickPendingIntent(Resource.Id.ibNotifiAction1, piAction); itAction = new Intent(BROAD_NOTIFY_PLAYER); itAction.PutExtra("ACT", 1); piAction = PendingIntent.GetBroadcast(this, IntentHelper.GetId(), itAction, 0); remoteViewExp.SetOnClickPendingIntent(Resource.Id.ibNotifiAction2, piAction); itAction = new Intent(BROAD_NOTIFY_PLAYER); itAction.PutExtra("ACT", 2); piAction = PendingIntent.GetBroadcast(this, IntentHelper.GetId(), itAction, 0); remoteViewExp.SetOnClickPendingIntent(Resource.Id.ibNotifiAction3, piAction); itAction = new Intent(BROAD_NOTIFY_PLAYER); itAction.PutExtra("ACT", 3); piAction = PendingIntent.GetBroadcast(this, IntentHelper.GetId(), itAction, 0); remoteViewExp.SetOnClickPendingIntent(Resource.Id.ibNotifiAction4, piAction); var titleName = netTitleName?.TitleName; var artistName = netArtistName?.ArtistName; if (cmdInputState?.Parameter == "2E") { artistName = netTitleName?.TitleName; titleName = "Bluetooth"; } if (titleName != null) { remoteViewExp.SetTextViewText(Resource.Id.tvNotifiTitle1, titleName); remoteViewExp.SetViewVisibility(Resource.Id.tvNotifiTitle1, ViewStates.Visible); } if (artistName != null) { remoteViewExp.SetTextViewText(Resource.Id.tvNotifiTitle2, artistName); remoteViewExp.SetViewVisibility(Resource.Id.tvNotifiTitle2, ViewStates.Visible); } if (netAlbumName?.AlbumName != null) { remoteViewExp.SetTextViewText(Resource.Id.tvNotifiTitle3, netAlbumName.AlbumName); remoteViewExp.SetViewVisibility(Resource.Id.tvNotifiTitle3, ViewStates.Visible); } if (netArt?.bmArt != null) { remoteViewExp.SetImageViewBitmap(Resource.Id.ivNotifiCover, netArt.bmArt); remoteViewExp.SetViewVisibility(Resource.Id.ivNotifiCover, ViewStates.Visible); } else { remoteViewExp.SetImageViewResource(Resource.Id.ivNotifiCover, Resource.Drawable.app_icon); remoteViewExp.SetViewVisibility(Resource.Id.ivNotifiCover, ViewStates.Visible); } NotificationCompat.Builder nb = new NotificationCompat.Builder(ApplicationContext); Intent intent = new Intent(this, typeof(HomeActivity)); intent.PutExtra(INTENT_HOME_TAB, 0); intent.AddFlags(ActivityFlags.ClearTop); intent.AddFlags(ActivityFlags.SingleTop); PendingIntent pendingIntent = PendingIntent.GetActivity(this, IntentHelper.GetId(), intent, 0); nb.SetContentIntent(pendingIntent); nb.SetCustomBigContentView(remoteViewExp); var x = remoteViewExp.Clone(); x.SetViewVisibility(Resource.Id.llNotifyExp, ViewStates.Gone); nb.SetCustomContentView(x); nb.SetSmallIcon(Resource.Drawable.av_receiver_100_black); nb.SetOngoing(true); nm.Notify(notifyIdPlayer, nb.Build()); } } catch (Exception e) { Console.WriteLine(e); } }, null); }
/// <summary> /// Update the notification. /// </summary> /// <param name="context"> /// The context. /// </param> /// <returns> /// The updated notification. /// </returns> public Notification UpdateNotification(Context context) { bool hasPausedText = this.PausedText != null; bool mustUpdate = this.lastHasPausedText != hasPausedText; // Build the RemoteView object if (expandedView == null) { expandedView = new RemoteViews(context.PackageName, Resource.Layout.status_bar_ongoing_event_progress_bar); expandedView.SetImageViewResource(Resource.Id.appIcon, this.Icon); expandedView.SetTextViewText(Resource.Id.paused_text, this.PausedText); expandedView.SetTextViewText(Resource.Id.title, this.Title); this.notification.ContentView = expandedView; mustUpdate = true; } if (mustUpdate) { expandedView.SetViewVisibility(Resource.Id.progress_bar_frame, hasPausedText ? ViewStates.Gone : ViewStates.Visible); expandedView.SetViewVisibility(Resource.Id.description, hasPausedText ? ViewStates.Gone : ViewStates.Visible); expandedView.SetViewVisibility(Resource.Id.time_remaining, hasPausedText ? ViewStates.Gone : ViewStates.Visible); expandedView.SetViewVisibility(Resource.Id.paused_text, hasPausedText ? ViewStates.Visible : ViewStates.Gone); } if (!hasPausedText) { expandedView.SetTextViewText(Resource.Id.progress_text, Helpers.GetDownloadProgressPercent(this.CurrentBytes, this.TotalBytes)); expandedView.SetTextViewText(Resource.Id.description, Helpers.GetDownloadProgressString(this.CurrentBytes, this.TotalBytes)); expandedView.SetProgressBar( Resource.Id.progress_bar, (int)(this.TotalBytes >> 8), (int)(this.CurrentBytes >> 8), this.TotalBytes <= 0); expandedView.SetTextViewText(Resource.Id.time_remaining, string.Format("Time remaining: {0}", Helpers.GetTimeRemaining(this.TimeRemaining))); } this.lastHasPausedText = hasPausedText; return this.notification; }
public static RemoteViews UpdateWidget(Context context, int appWidgetId, int[] appWidgetIds) { var remoteViews = new RemoteViews(context.PackageName, Resource.Layout.task_widget); var intent = new Intent(Intent.ActionMain); intent.AddCategory(Intent.CategoryLauncher); intent.SetComponent(new ComponentName(context, Java.Lang.Class.FromType(typeof(MainActivity)))); var pending = PendingIntent.GetActivity(context, 0, intent, 0); remoteViews.SetOnClickPendingIntent(Resource.Id.widget_layout, pending); remoteViews.SetOnClickPendingIntent(Resource.Id.previous_button, GetPendingSelfIntent(context, ACTION_WIDGET_PREVIOUS)); remoteViews.SetOnClickPendingIntent(Resource.Id.forward_button, GetPendingSelfIntent(context, ACTION_WIDGET_FORWARD)); remoteViews.SetOnClickPendingIntent(Resource.Id.refresh_button, GetPendingSelfIntent(context, ACTION_WIDGET_REFRESH)); var svcIntent = new Intent(context, typeof(TaskWidgetService)); svcIntent.SetPackage(context.PackageName); svcIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); svcIntent.SetData(Android.Net.Uri.Parse(svcIntent.ToUri(IntentUriType.AndroidAppScheme))); var itemIntent = new Intent(context, typeof(TaskWidget)); itemIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetIds); itemIntent.SetData(Android.Net.Uri.Parse(svcIntent.ToUri(IntentUriType.AndroidAppScheme))); itemIntent.SetAction(ACTION_WIDGET_LIST_ITEM); var itemPending = PendingIntent.GetBroadcast(context, 0, itemIntent, 0); remoteViews.SetPendingIntentTemplate(Resource.Id.task_listview, itemPending); var task = ""; switch (CurrentTask) { case 0: task = context.GetText(Resource.String.daily_task); break; case 1: task = context.GetText(Resource.String.weekly_task); break; case 2: task = context.GetText(Resource.String.one_time_task); break; } remoteViews.SetInt(Resource.Id.widget_layout, "setBackgroundColor", (int)(Opacity * 0xFF) << 24 | Theme); // 어두운 테마 if (Theme == Convert.ToInt32(0x000000)) { remoteViews.SetTextColor(Resource.Id.task, Android.Graphics.Color.White); remoteViews.SetInt(Resource.Id.divider, "setBackgroundColor", Android.Graphics.Color.White); } // 밝은 테마 else { remoteViews.SetTextColor(Resource.Id.task, Android.Graphics.Color.Black); remoteViews.SetInt(Resource.Id.divider, "setBackgroundColor", Android.Graphics.Color.Black); } remoteViews.SetTextViewText(Resource.Id.task, task); remoteViews.SetEmptyView(Resource.Id.task_listview, Resource.Id.empty_view); remoteViews.SetRemoteAdapter(Resource.Id.task_listview, svcIntent); if (Progress) { remoteViews.SetViewVisibility(Resource.Id.progress_layout, Android.Views.ViewStates.Visible); } else { remoteViews.SetViewVisibility(Resource.Id.progress_layout, Android.Views.ViewStates.Gone); } return(remoteViews); }
private Notification BuildNotification() { _notificationBuilder = new NotificationCompat.Builder(ApplicationContext); _notificationBuilder.SetOngoing(true); _notificationBuilder.SetAutoCancel(false); _notificationBuilder.SetSmallIcon(Resource.Drawable.NotifIcon); //Open up the player screen when the user taps on the notification. var launchNowPlayingIntent = new Intent(); launchNowPlayingIntent.SetAction(LaunchNowPlayingAction); var launchNowPlayingPendingIntent = PendingIntent.GetBroadcast(ApplicationContext, 0, launchNowPlayingIntent, 0); _notificationBuilder.SetContentIntent(launchNowPlayingPendingIntent); //Grab the notification layouts. var notificationView = new RemoteViews(ApplicationContext.PackageName, Resource.Layout.notification_custom_layout); var expNotificationView = new RemoteViews(ApplicationContext.PackageName, Resource.Layout.notification_custom_expanded_layout); //Initialize the notification layout buttons. var previousTrackIntent = new Intent(); previousTrackIntent.SetAction(PrevAction); var previousTrackPendingIntent = PendingIntent.GetBroadcast(ApplicationContext, 0, previousTrackIntent, 0); var playPauseTrackIntent = new Intent(); playPauseTrackIntent.SetAction(PlayPauseAction); var playPauseTrackPendingIntent = PendingIntent.GetBroadcast(ApplicationContext, 0, playPauseTrackIntent, 0); var nextTrackIntent = new Intent(); nextTrackIntent.SetAction(NextAction); var nextTrackPendingIntent = PendingIntent.GetBroadcast(ApplicationContext, 0, nextTrackIntent, 0); var stopServiceIntent = new Intent(); stopServiceIntent.SetAction(StopAction); var stopServicePendingIntent = PendingIntent.GetBroadcast(ApplicationContext, 0, stopServiceIntent, 0); //Check if audio is playing and set the appropriate play/pause button. if (App.Current.AudioServiceConnection.GetPlaybackService().IsPlayingMusic) { notificationView.SetImageViewResource(Resource.Id.notification_base_play, Resource.Drawable.btn_playback_pause_light); expNotificationView.SetImageViewResource(Resource.Id.notification_expanded_base_play, Resource.Drawable.btn_playback_pause_light); } else { notificationView.SetImageViewResource(Resource.Id.notification_base_play, Resource.Drawable.btn_playback_play_light); expNotificationView.SetImageViewResource(Resource.Id.notification_expanded_base_play, Resource.Drawable.btn_playback_play_light); } var song = AudioPlayerHelper.CurrentQueueSong.Song; //Set the notification content. expNotificationView.SetTextViewText(Resource.Id.notification_expanded_base_line_one, song.Name); expNotificationView.SetTextViewText(Resource.Id.notification_expanded_base_line_two, song.ArtistName); expNotificationView.SetTextViewText(Resource.Id.notification_expanded_base_line_three, song.Album.Name); notificationView.SetTextViewText(Resource.Id.notification_base_line_one, song.Name); notificationView.SetTextViewText(Resource.Id.notification_base_line_two, song.ArtistName); //the previous and next buttons, always enabled. expNotificationView.SetViewVisibility(Resource.Id.notification_expanded_base_previous, ViewStates.Visible); expNotificationView.SetViewVisibility(Resource.Id.notification_expanded_base_next, ViewStates.Visible); expNotificationView.SetOnClickPendingIntent(Resource.Id.notification_expanded_base_play, playPauseTrackPendingIntent); expNotificationView.SetOnClickPendingIntent(Resource.Id.notification_expanded_base_next, nextTrackPendingIntent); expNotificationView.SetOnClickPendingIntent(Resource.Id.notification_expanded_base_previous, previousTrackPendingIntent); notificationView.SetViewVisibility(Resource.Id.notification_base_previous, ViewStates.Visible); notificationView.SetViewVisibility(Resource.Id.notification_base_next, ViewStates.Visible); notificationView.SetOnClickPendingIntent(Resource.Id.notification_base_play, playPauseTrackPendingIntent); notificationView.SetOnClickPendingIntent(Resource.Id.notification_base_next, nextTrackPendingIntent); notificationView.SetOnClickPendingIntent(Resource.Id.notification_base_previous, previousTrackPendingIntent); //Set the "Stop Service" pending intents. expNotificationView.SetOnClickPendingIntent(Resource.Id.notification_expanded_base_collapse, stopServicePendingIntent); notificationView.SetOnClickPendingIntent(Resource.Id.notification_base_collapse, stopServicePendingIntent); //Set the album art. if (song.Album.Artwork != null) { if (song.Album.Artwork.Image != null) { expNotificationView.SetImageViewBitmap(Resource.Id.notification_expanded_base_image, song.Album.Artwork.Image as Bitmap); notificationView.SetImageViewBitmap(Resource.Id.notification_base_image, song.Album.Artwork.Image as Bitmap); } else { ((PclBitmapImage)song.Album.Artwork).PropertyChanged += OnPropertyChanged; } } else { song.Album.PropertyChanged += OnPropertyChanged; } //Attach the shrunken layout to the notification. _notificationBuilder.SetContent(notificationView); //Build the notification object. var notification = _notificationBuilder.Build(); //Attach the expanded layout to the notification and set its flags. notification.BigContentView = expNotificationView; notification.Flags = NotificationFlags.ForegroundService | NotificationFlags.NoClear | NotificationFlags.OngoingEvent; return(notification); }