Beispiel #1
0
        // 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;
		}
Beispiel #3
0
        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);
        }
Beispiel #10
0
        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);
        }
Beispiel #11
0
        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;
		}
Beispiel #16
0
        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);
        }
Beispiel #17
0
        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);
                    })
                };
            }
Beispiel #19
0
        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);
        }
Beispiel #21
0
        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;
        }
Beispiel #23
0
        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);
        }
Beispiel #25
0
        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;
        }
Beispiel #31
0
        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;
        }
Beispiel #32
0
        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");
            }
        }
Beispiel #33
0
        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);
                }
            });
        }
Beispiel #34
0
        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);
            }
        }
Beispiel #35
0
        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;
        }
Beispiel #36
0
            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);
            }
Beispiel #37
0
        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;
        }
Beispiel #39
0
 void RegisterClicks(Context context, int[] appWidgetIds, RemoteViews widgetView)
 {
     //SwitchButton
     widgetView.SetOnClickPendingIntent(Resource.Id.SwitchButton, GetPendingSelfIntent(context, Constants.ACTION_WIDGET_SWITCH));
 }
Beispiel #40
0
        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;
		}
Beispiel #42
0
 private void RegisterClicks(Context context, int[] appWidgetIds, RemoteViews widgetView)
 {
     widgetView.SetOnClickPendingIntent(Resource.Id.widget_btnImage, GetPendingSelfIntent(context, _WidgetClickedTag));
 }
Beispiel #43
0
        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);
        }
Beispiel #44
0
        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);
        }
Beispiel #46
0
        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;
 }
Beispiel #49
0
        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);
        }
Beispiel #50
0
 private void SetTextViewText(RemoteViews widgetView)
 {
     widgetView.SetTextViewText(Resource.Id.textView2, text: "HelloWorld");
 }
Beispiel #51
0
 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);
        }
Beispiel #54
0
 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;
        }
Beispiel #58
0
        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);
        }
Beispiel #59
0
        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);
        }