private void CatcherHelper_NotificationListSizeChanged(object sender, NotificationListSizeChangedEventArgs e) { RunOnUiThread(() => { if (e.ThereAreNotifications) { if (clearAll != null) { clearAll.Visibility = ViewStates.Visible; } } else { if (clearAll != null) { clearAll.Visibility = ViewStates.Invisible; } if (configurationManager.RetrieveAValue(ConfigurationParameters.TurnOffScreenAfterLastNotificationCleared) && ActivityLifecycleHelper.GetInstance().GetActivityState(typeof(LockScreenActivity)) == ActivityStates.Resumed) { AwakeHelper.TurnOffScreen(); } } }); }
protected override void OnPause() { base.OnPause(); watchDog.Stop(); watchDog.Elapsed -= WatchdogInterval_Elapsed; ActivityLifecycleHelper.GetInstance().NotifyActivityStateChange(typeof(LockScreenActivity), ActivityStates.Paused); }
private void WatchdogInterval_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { //it works correctly, but I want to refactor this. (Regression) if (ActivityLifecycleHelper.GetInstance().GetActivityState(typeof(LockScreenActivity)) == ActivityStates.Resumed) { AwakeHelper.TurnOffScreen(); } }
protected override void OnResume() { base.OnResume(); AddFlags(); watchDog.Elapsed += WatchdogInterval_Elapsed; watchDog.Stop(); watchDog.Start(); ActivityLifecycleHelper.GetInstance().NotifyActivityStateChange(typeof(LockScreenActivity), ActivityStates.Resumed); if (configurationManager.RetrieveAValue(ConfigurationParameters.TutorialRead) == false) { welcome = FindViewById <TextView>(Resource.Id.welcomeoverlay); welcome.Text = Resources.GetString(Resource.String.tutorialtext); welcome.Visibility = ViewStates.Visible; welcome.Touch += Welcome_Touch; } //Check if Awake is enabled. //Refactor switch (AwakeHelper.GetAwakeStatus()) { case AwakeStatus.None: livedisplayinfo.Text = Resources.GetString(Resource.String.idk); break; case AwakeStatus.CompletelyDisabled: livedisplayinfo.Text = "Completely disabled"; break; case AwakeStatus.Up: livedisplayinfo.Text = "Awake is active"; break; case AwakeStatus.Sleeping: livedisplayinfo.Text = "Awake is Sleeping"; break; case AwakeStatus.UpWithDeviceMotionDisabled: livedisplayinfo.Text = "Awake is active but not listening orientation changes"; break; case AwakeStatus.SleepingWithDeviceMotionEnabled: livedisplayinfo.Text = "Awake is sleeping but listening orientation changes"; break; case AwakeStatus.DisabledbyUser: livedisplayinfo.Text = "Awake is disabled by the user."; break; default: break; } }
public override void OnDestroy() { base.OnDestroy(); ActivityLifecycleHelper.GetInstance().ActivityStateChanged -= LockScreenActivity_OnActivityStateChanged; floatingNotificationView.Click -= FloatingNotificationView_Click; NotificationAdapterViewHolder.ItemClicked -= NotificationAdapterViewHolder_ItemClicked; NotificationAdapterViewHolder.ItemLongClicked -= NotificationAdapterViewHolder_ItemLongClicked; CatcherHelper.NotificationRemoved -= CatcherHelper_NotificationRemoved; CatcherHelper.NotificationPosted -= CatcherHelper_NotificationPosted; if (floatingNotificationView != null) { floatingNotificationAppName.Dispose(); floatingNotificationWhen.Dispose(); floatingNotificationTitle.Dispose(); floatingNotificationText.Dispose(); windowManager.RemoveView(floatingNotificationView); windowManager.Dispose(); } openNotification?.Dispose(); }
protected override void OnDestroy() { base.OnDestroy(); ActivityLifecycleHelper.GetInstance().NotifyActivityStateChange(typeof(LockScreenActivity), ActivityStates.Destroyed); //Unbind events clearAll.Click -= BtnClearAll_Click; WallpaperPublisher.NewWallpaperIssued -= Wallpaper_NewWallpaperIssued; CatcherHelper.NotificationListSizeChanged -= CatcherHelper_NotificationListSizeChanged; WidgetStatusPublisher.OnWidgetStatusChanged += WidgetStatusPublisher_OnWidgetStatusChanged; lockscreen.Touch -= Lockscreen_Touch; watchDog.Stop(); watchDog.Elapsed -= WatchdogInterval_Elapsed; watchDog.Dispose(); //Dispose Views //Views recycler.Dispose(); clearAll.Dispose(); lockscreen.Dispose(); viewPropertyAnimator.Dispose(); }
private void Wallpaper_NewWallpaperIssued(object sender, WallpaperChangedEventArgs e) { RunOnUiThread(() => { if (configurationManager.RetrieveAValue(ConfigurationParameters.AwakeCausesBlackWallpaper)) { Window.DecorView.SetBackgroundColor(Color.Black); return; } if (configurationManager.RetrieveAValue(ConfigurationParameters.DisableWallpaperChangeAnim) == false) //If the animation is not disabled. { if (ActivityLifecycleHelper.GetInstance().GetActivityState(typeof(LockScreenActivity)) == ActivityStates.Resumed) { //Animate only when the activity is visible to the user. Window.DecorView.Animate().SetDuration(100).Alpha(0.5f); } } if (e.Wallpaper?.Bitmap != null) { Window.DecorView.Background = e.Wallpaper; } }); }
public override void OnCreate() { base.OnCreate(); WindowManagerTypes layoutType = WindowManagerTypes.Phone; if (Build.VERSION.SdkInt > BuildVersionCodes.NMr1) //Nougat 7.1 { layoutType = WindowManagerTypes.ApplicationOverlay; //Android Oreo does not allow to add windows of WindowManagerTypes.Phone } windowManager = GetSystemService(WindowService).JavaCast <IWindowManager>(); var lol = LayoutInflater.From(this); floatingNotificationView = (LinearLayout)lol.Inflate(Resource.Layout.FloatingNotification, null); //var floatingList = (RecyclerView)lol.Inflate(Resource.Layout.NotificationList, null); //using (var layoutManager = new LinearLayoutManager(Application.Context)) //{ // floatingList.SetLayoutManager(layoutManager); // floatingList.SetAdapter(CatcherHelper.notificationAdapter); //} int width = 200; var floatingNotificationWidth = TypedValue.ApplyDimension(ComplexUnitType.Dip, width, Resources.DisplayMetrics); //var uiOptions = (int)floatingList.SystemUiVisibility; //var newUiOptions = uiOptions; //newUiOptions |= (int)SystemUiFlags.Fullscreen; //newUiOptions |= (int)SystemUiFlags.HideNavigation; //newUiOptions |= (int)SystemUiFlags.Immersive; //// This option will make bars disappear by themselves //newUiOptions |= (int)SystemUiFlags.ImmersiveSticky; //floatingList.SystemUiVisibility = (StatusBarVisibility)newUiOptions; WindowManagerLayoutParams layoutParams = new WindowManagerLayoutParams { Width = (int)floatingNotificationWidth, Height = ViewGroup.LayoutParams.WrapContent, Type = layoutType, Flags = WindowManagerFlags.NotFocusable | WindowManagerFlags.WatchOutsideTouch | WindowManagerFlags.ShowWhenLocked, Format = Format.Translucent, Gravity = GravityFlags.CenterHorizontal | GravityFlags.CenterVertical }; floatingNotificationView.Visibility = ViewStates.Gone; windowManager.AddView(floatingNotificationView, layoutParams); //windowManager.AddView(floatingList, layoutParams); floatingNotificationAppName = floatingNotificationView.FindViewById <TextView>(Resource.Id.tvAppName); floatingNotificationWhen = floatingNotificationView.FindViewById <TextView>(Resource.Id.tvWhen); floatingNotificationTitle = floatingNotificationView.FindViewById <TextView>(Resource.Id.tvTitle); floatingNotificationText = floatingNotificationView.FindViewById <TextView>(Resource.Id.tvText); floatingNotificationActionsContainer = floatingNotificationView.FindViewById <LinearLayout>(Resource.Id.notificationActions); CatcherHelper.NotificationRemoved += CatcherHelper_NotificationRemoved; CatcherHelper.NotificationPosted += CatcherHelper_NotificationPosted; NotificationAdapterViewHolder.ItemClicked += NotificationAdapterViewHolder_ItemClicked; NotificationAdapterViewHolder.ItemLongClicked += NotificationAdapterViewHolder_ItemLongClicked; ActivityLifecycleHelper.GetInstance().ActivityStateChanged += LockScreenActivity_OnActivityStateChanged; floatingNotificationView.SetOnTouchListener(this); }