Exemple #1
0
        public void Activate()
        {
            Window window = NUIApplication.GetDefaultWindow();

            window.BackgroundColor = Color.White;
            windowSize             = window.Size;

            // Create Table
            TableView table = new TableView(mRow, mColumn)
            {
                PositionUsesPivotPoint = true,
                PivotPoint             = PivotPoint.Center,
                ParentOrigin           = ParentOrigin.Center,
                Size            = new Size((float)(windowSize.Width * 0.8), (float)(windowSize.Height * 0.8)),
                BackgroundColor = new Color(0.2f, 0.5f, 0.5f, 1.0f),
                CellPadding     = new Vector2(10, 10),
            };

            window.GetDefaultLayer().Add(table);

            uint exampleCount = 0;

            // Fill the contents in TableView
            for (uint row = 0; row < mRow; row++)
            {
                for (uint column = 0; column < mColumn; column++)
                {
                    TextLabel content = CreateText();
                    content.Name = "TextLabel" + exampleCount;
                    content.Text = "R" + row + " - C" + column;

                    ///////////////////////////////////////////////////////////////////////////////////////////////
                    ///                 How to set Accessibility attribute to components                        ///
                    /// 1. Create AccessibilityManager.                                                         ///
                    /// 2. Set the focus order of each view and the index of order should start 1 (one).        ///
                    /// 3. Set the information of each view's accessibility attribute.                          ///
                    ///    There are four attributes, which will be read by screen reader.                      ///
                    ///    And the order of reading is : Label -> Trait -> Value (Optional) -> Hint (Optional)  ///
                    ///////////////////////////////////////////////////////////////////////////////////////////////

                    AccessibilityManager manager = AccessibilityManager.Instance;
                    manager.SetFocusOrder(content, ++exampleCount);
                    manager.SetAccessibilityAttribute(content,
                                                      AccessibilityManager.AccessibilityAttribute.Label, content.Name);
                    manager.SetAccessibilityAttribute(content,
                                                      AccessibilityManager.AccessibilityAttribute.Trait, "Tile");
                    manager.SetAccessibilityAttribute(content,
                                                      AccessibilityManager.AccessibilityAttribute.Hint, "You can run this example");

                    table.AddChild(content, new TableView.CellPosition(row, column));
                }
            }

            // You can connect with various Accessibility action signals.
            // AccessibilityManager provides functionality of setting the focus and moving forward and backward.
            // All touch interactions for screen will work with one more finger and tap.

            AccessibilityManager.Instance.FocusedViewActivated += OnFocusedView;
        }
Exemple #2
0
        protected override void OnAttached()
        {
            if (View == null)
            {
                return;
            }

            effect = TouchEffect.PickFrom(Element);
            if (effect?.IsDisabled ?? true)
            {
                return;
            }

            effect.Element = (VisualElement)Element;

            View.Touch += OnTouch;
            UpdateClickHandler();

            accessibilityManager = View.Context.GetSystemService(Context.AccessibilityService) as AccessibilityManager;
            if (accessibilityManager != null)
            {
                accessibilityListener = new AccessibilityListener(this);
                accessibilityManager.AddAccessibilityStateChangeListener(accessibilityListener);
                accessibilityManager.AddTouchExplorationStateChangeListener(accessibilityListener);
            }

            if (Build.VERSION.SdkInt < BuildVersionCodes.Lollipop || !effect.NativeAnimation)
            {
                return;
            }

            View.Clickable     = true;
            View.LongClickable = true;
            CreateRipple();

            if (Group == null)
            {
                if (Build.VERSION.SdkInt >= BuildVersionCodes.M)
                {
                    View.Foreground = ripple;
                }

                return;
            }

            rippleView = new FrameLayout(Group.Context)
            {
                LayoutParameters = new ViewGroup.LayoutParams(-1, -1),
                Clickable        = false,
                Focusable        = false,
                Enabled          = false,
            };
            View.LayoutChange    += OnLayoutChange;
            rippleView.Background = ripple;
            Group.AddView(rippleView);
            rippleView.BringToFront();
        }
 private float getScreenHeight()
 {
     if (screenHeight < 0f)
     {
         AccessibilityManager accessibilityManager = Service.Get <AccessibilityManager>();
         screenHeight = accessibilityManager.GetScreenSizeWithSoftKeys().y;
     }
     return(screenHeight);
 }
Exemple #4
0
 /**
  * {@inheritDoc}
  */
 protected override void OnCreate(Bundle savedInstanceState)
 {
     base.OnCreate(savedInstanceState);
     SetContentView(R.Layout.accessibility_manager);
     mAccessibilityManager = (AccessibilityManager)GetSystemService(
         Service.ACCESSIBILITY_SERVICE);
     mAccessibilityStateView = (TextView)FindViewById(R.Id.accessibility_state);
     RegisterAccessibilityStateChangeListener();
 }
        public bool Emit(AccessibilityManager arg)
        {
            bool ret = Interop.AccessibilityManage.AccessibilityActionSignal_Emit(swigCPtr, AccessibilityManager.getCPtr(arg));

            if (NDalicPINVOKE.SWIGPendingException.Pending)
            {
                throw NDalicPINVOKE.SWIGPendingException.Retrieve();
            }
            return(ret);
        }
Exemple #6
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource   = Resource.Layout.Toolbar;

            base.OnCreate(savedInstanceState);
            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
            LoadApplication(new App());

            accessibilityManager = (AccessibilityManager)GetSystemService("accessibility");
        }
        public bool IsVoiceAssistanceActive()
        {
            AccessibilityManager am = (AccessibilityManager)Android.App.Application.Context.GetSystemService(Context.AccessibilityService);

            if (am != null & am.IsEnabled)
            {
                return(am.IsTouchExplorationEnabled);
            }

            return(false);
        }
Exemple #8
0
        protected override void OnCreate(Bundle bundle)
        {
            AppDomain.CurrentDomain.UnhandledException += PlatformError.CurrentDomainUnhandledException;
            TaskScheduler.UnobservedTaskException      += PlatformError.TaskSchedulerUnobservedTaskException;

            App.ScreenHeight = (int)(Resources.DisplayMetrics.HeightPixels / Resources.DisplayMetrics.Density);
            App.ScreenWidth  = (int)(Resources.DisplayMetrics.WidthPixels / Resources.DisplayMetrics.Density);
            App.VersionName  = Application.ApplicationContext.PackageManager
                               .GetPackageInfo(Application.ApplicationContext.PackageName, 0)
                               .VersionName;

            AccessibilityManager accessibilityManager = (AccessibilityManager)GetSystemService(AccessibilityService);

            //NOTE: ref: https://stackoverflow.com/a/12362545 we only use touch exploration events for checking if talkback is enabled
            accessibilityManager.AddTouchExplorationStateChangeListener(this);
            Accessibility.AccessibilityEnabled = accessibilityManager.IsTouchExplorationEnabled;

            Xamarin.Forms.Forms.Init(this, bundle);
            UserDialogs.Init(this);
            CarouselViewRenderer.Init();
            CachedImageRenderer.Init(true);
            FlowListView.Init();

            Rg.Plugins.Popup.Popup.Init(this, bundle);

            LocalNotificationsImplementation.NotificationIconId = Resource.Mipmap.notification_icon;
            //NOTE: We know. Lazy loading of service for platform specific version
#pragma warning disable CS0436 // Type conflicts with imported type
            IWalkingDataService walkingDataService = CrossWalkingDataService.Current;
            IUpdateService      updateService      = CrossUpdateService.Current;
            IScreenshotService  screenshotService  = CrossScreenshotService.Current;
            IShareImageService  shareImageService  = CrossImageShareService.Current;
#pragma warning restore CS0436 // Type conflicts with imported type
            ScreenshotService.Activity = this;
            ShareImageService.Context  = this;

            CrossServiceContainer.SetWalkingDataService(walkingDataService);
            CrossServiceContainer.SetUpdateService(updateService);
            CrossServiceContainer.SetScreenshotService(screenshotService);
            CrossServiceContainer.SetShareImageService(shareImageService);

            Log.Debug("MainActivity", "Mainactivity updateservice: " + updateService.ToString());

            base.OnCreate(bundle);

            Instance = this;
            OnActivityCreated?.Invoke(this);

            if (Settings.CanRequestReview())
            {
                RequestReview();
            }
        }
Exemple #9
0
        protected override void OnDetached()
        {
            if (effect?.Element == null)
            {
                return;
            }

            try
            {
                if (accessibilityManager != null)
                {
                    accessibilityManager.RemoveAccessibilityStateChangeListener(accessibilityListener);
                    accessibilityManager.RemoveTouchExplorationStateChangeListener(accessibilityListener);
                    accessibilityListener.Dispose();
                    accessibilityManager  = null;
                    accessibilityListener = null;
                }

                if (View != null)
                {
                    View.LayoutChange -= OnLayoutChange;
                    View.Touch        -= OnTouch;
                    View.Click        -= OnClick;

                    if (Build.VERSION.SdkInt >= BuildVersionCodes.M && View.Foreground == ripple)
                    {
                        View.Foreground = null;
                    }
                }

                effect.Element = null;
                effect         = null;

                if (rippleView != null)
                {
                    rippleView.Pressed    = false;
                    rippleView.Background = null;
                    Group?.RemoveView(rippleView);
                    rippleView.Dispose();
                    rippleView = null;
                }

                ripple?.Dispose();
                ripple = null;
            }
            catch (ObjectDisposedException)
            {
                // Suppress exception
            }
            isHoverSupported = false;
        }
        public bool IsVoiceOverRunning()
        {
            AccessibilityManager am = (AccessibilityManager)Android.App.Application.Context.GetSystemService(Context.AccessibilityService);

            if (am != null && am.IsEnabled)
            {
                var serviceInfoList = am.GetEnabledAccessibilityServiceList(FeedbackFlags.Spoken);
                if (serviceInfoList != null)
                {
                    return(true);
                }
            }
            return(false);
        }
Exemple #11
0
        public Boolean  isAccessibilityServiceEnabled()
        {
            AccessibilityManager             accessibilityManager = (AccessibilityManager)Application.Context.GetSystemService(AccessibilityService.AccessibilityService);
            IList <AccessibilityServiceInfo> enabledServices      = accessibilityManager.GetEnabledAccessibilityServiceList(FeedbackFlags.AllMask);
            bool check = false;

            for (int i = 0; i < enabledServices.Count; i++)
            {
                AccessibilityServiceInfo e = enabledServices[i];
                if (e.ResolveInfo.ServiceInfo.PackageName == Application.Context.ApplicationInfo.PackageName)
                {
                    check = true;
                }
            }
            return(check);
        }
Exemple #12
0
        public void SetAnnouncement(string text)
        {
            AccessibilityManager manager = (AccessibilityManager)Android.App.Application.Context.GetSystemService(Android.App.Application.AccessibilityService);

            if (!(manager.IsEnabled || manager.IsTouchExplorationEnabled))
            {
                return;
            }

            // Sends the accessibility event to announce.
            AccessibilityEvent e = AccessibilityEvent.Obtain();

            e.EventType = EventTypes.Announcement;
            e.Text.Add(new Java.Lang.String(text));
            manager.SendAccessibilityEvent(e);
        }
Exemple #13
0
        protected override void OnDetached()
        {
            if (effect?.Element == null)
            {
                return;
            }

            try
            {
                if (accessibilityManager != null)
                {
                    accessibilityManager.RemoveAccessibilityStateChangeListener(accessibilityListener);
                    accessibilityManager.RemoveTouchExplorationStateChangeListener(accessibilityListener);
                    accessibilityListener.Dispose();
                    accessibilityManager = null;
                    accessibilityManager = null;
                }

                if (View != null)
                {
                    View.LayoutChange -= LayoutChange;
                    View.Touch        -= OnTouch;
                    View.Click        -= OnClick;
                }

                effect.Element = null;
                effect         = null;

                if (viewOverlay != null)
                {
                    if (Group != null)
                    {
                        Group.RemoveView(viewOverlay);
                    }

                    viewOverlay.Pressed    = false;
                    viewOverlay.Foreground = null;
                    viewOverlay.Dispose();
                    ripple?.Dispose();
                }
            }
            catch (ObjectDisposedException)
            {
                // Suppress exception
            }
            isHoverSupported = false;
        }
Exemple #14
0
        protected override void OnDetached()
        {
            if (_effect?.Control == null)
            {
                return;
            }
            try
            {
                if (_accessibilityManager != null)
                {
                    _accessibilityManager.RemoveAccessibilityStateChangeListener(_accessibilityListener);
                    _accessibilityManager.RemoveTouchExplorationStateChangeListener(_accessibilityListener);
                    _accessibilityListener.Dispose();
                    _accessibilityManager = null;
                    _accessibilityManager = null;
                }

                if (View != null)
                {
                    View.LayoutChange -= LayoutChange;
                    View.Touch        -= OnTouch;
                    View.Click        -= OnClick;
                }

                _effect.Control = null;
                _effect         = null;

                if (_viewOverlay != null)
                {
                    if (Group != null)
                    {
                        Group.RemoveView(_viewOverlay);
                    }

                    _viewOverlay.Pressed    = false;
                    _viewOverlay.Foreground = null;
                    _viewOverlay.Dispose();
                    _ripple?.Dispose();
                }
            }
            catch (ObjectDisposedException)
            {
                //suppress exception
            }
            _isHoverSupported = false;
        }
Exemple #15
0
        protected override void OnAttached()
        {
            if (View == null)
            {
                return;
            }
            _effect = Element.PickTouchEff();
            if (_effect?.IsDisabled ?? true)
            {
                return;
            }

            _effect.Control = Element as VisualElement;

            View.Touch += OnTouch;
            UpdateClickHandler();

            _accessibilityManager = View.Context.GetSystemService(Context.AccessibilityService) as AccessibilityManager;
            if (_accessibilityManager != null)
            {
                _accessibilityListener = new AccessibilityListener(this);
                _accessibilityManager.AddAccessibilityStateChangeListener(_accessibilityListener);
                _accessibilityManager.AddTouchExplorationStateChangeListener(_accessibilityListener);
            }

            if (_effect.NativeAnimation && Group != null && AndroidOS.Build.VERSION.SdkInt >= AndroidOS.BuildVersionCodes.Lollipop)
            {
                View.Clickable     = true;
                View.LongClickable = true;
                _viewOverlay       = new FrameLayout(Group.Context)
                {
                    LayoutParameters = new ViewGroup.LayoutParams(-1, -1),
                    Clickable        = false,
                    Focusable        = false,
                };
                View.LayoutChange += LayoutChange;

                CreateRipple();
                _viewOverlay.Background = _ripple;
                Group.AddView(_viewOverlay);
                _viewOverlay.BringToFront();
            }
        }
        public void Announce(string text)
        {
            AccessibilityManager manager      = Android.App.Application.Context.GetSystemService(Android.Content.Context.AccessibilityService) as AccessibilityManager;
            AccessibilityEvent   announcement = AccessibilityEvent.Obtain();

            if (manager == null || announcement == null)
            {
                return;
            }

            if (!(manager.IsEnabled || manager.IsTouchExplorationEnabled))
            {
                return;
            }

            announcement.EventType = EventTypes.Announcement;
            announcement.Text?.Add(new Java.Lang.String(text));
            manager.SendAccessibilityEvent(announcement);
        }
        public static void AnnounceForAccessibilityCompat(Context context, String text)
        {
            if ((int)Build.VERSION.SdkInt >= 4)
            {
                AccessibilityManager accessibilityManager = null;
                if (null != context)
                {
                    accessibilityManager = (AccessibilityManager)context.GetSystemService(Context.AccessibilityService);
                }
                if (null == accessibilityManager || !accessibilityManager.IsEnabled)
                {
                    return;
                }

                // Prior to SDK 16, announcements could only be made through FOCUSED
                // events. Jelly Bean (SDK 16) added support for speaking text verbatim
                // using the ANNOUNCEMENT event type.
                EventTypes eventType;
                if ((int)Build.VERSION.SdkInt < 16)
                {
                    eventType = EventTypes.ViewFocused;
                }
                else
                {
                    eventType = EventTypes.Announcement;
                }

                // Construct an accessibility event with the minimum recommended
                // attributes. An event without a class name or package may be dropped.
                AccessibilityEvent ev = AccessibilityEvent.Obtain(eventType);
                var textProxy         = new Java.Lang.String(text);
                ev.Text.Add(textProxy);
                ev.ClassName   = _instance.GetType().ToString();
                ev.PackageName = context.PackageName;

                // Sends the event directly through the accessibility manager. If your
                // application only targets SDK 14+, you should just call
                // getParent().requestSendAccessibilityEvent(this, event);
                accessibilityManager.SendAccessibilityEvent(ev);
            }
        }
        public override void SendAccessibilityEvent(EventTypes eventType)
        {
            base.SendAccessibilityEvent(eventType);

            AccessibilityManager manager = (AccessibilityManager)Context.GetSystemService(Context.AccessibilityService);

            if (!manager.IsEnabled)
            {
                return;
            }

            switch (eventType)
            {
            case EventTypes.ViewAccessibilityFocused:
                manager.Interrupt();
                AccessibilityFocused?.Invoke(this, EventArgs.Empty);
                break;

            default:
                break;
            }
        }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            // Create your application here
            SetContentView(Resource.Layout.InGame);
            accessibilityManager = (AccessibilityManager)GetSystemService(AccessibilityService);

            View decorView    = Window.DecorView;
            var  uiOptions    = (int)decorView.SystemUiVisibility;
            var  newUiOptions = uiOptions;

            Window.SetFlags(WindowManagerFlags.KeepScreenOn, WindowManagerFlags.KeepScreenOn);

            //newUiOptions |= (int)SystemUiFlags.Fullscreen;
            newUiOptions |= (int)SystemUiFlags.HideNavigation;
            newUiOptions |= (int)SystemUiFlags.Immersive;

            decorView.SystemUiVisibility = (StatusBarVisibility)newUiOptions;

            if (!IPAddress.TryParse(Intent.Extras.GetString("ipAddress"), out ipAddress))
            {
                Console.WriteLine("ERROR in IP"); //TODO Better error handling
            }
            if (!int.TryParse(Intent.Extras.GetString("port"), out port))
            {
                Console.WriteLine("ERROR in port"); //TODO Better error handling
            }

            vibrator = (Vibrator)GetSystemService(VibratorService);

            View v = FindViewById(Resource.Id.clickerView);

            v.SetOnTouchListener(this);
            v.SetOnHoverListener(this);
            v.ImportantForAccessibility = ImportantForAccessibility.No;
        }
Exemple #20
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            // Create your application here
            SetContentView(Resource.Layout.AlertLayout);
            accessibilityManager = (AccessibilityManager)GetSystemService(AccessibilityService);

            View decorView    = Window.DecorView;
            var  uiOptions    = (int)decorView.SystemUiVisibility;
            var  newUiOptions = uiOptions;

            Window.SetFlags(WindowManagerFlags.KeepScreenOn, WindowManagerFlags.KeepScreenOn);

            //newUiOptions |= (int)SystemUiFlags.Fullscreen;
            newUiOptions |= (int)SystemUiFlags.HideNavigation;
            newUiOptions |= (int)SystemUiFlags.Immersive;

            decorView.SystemUiVisibility = (StatusBarVisibility)newUiOptions;

            if (!IPAddress.TryParse(Intent.Extras.GetString("ipAddress"), out ipAddress))
            {
                Console.WriteLine("ERROR in IP");
                Toast.MakeText(ApplicationContext, "Not Connected. Error in IP Address", ToastLength.Long).Show();
            }
            if (!int.TryParse(Intent.Extras.GetString("port"), out port))
            {
                Toast.MakeText(ApplicationContext, "Not Connected. Error in Port", ToastLength.Long).Show();
                Console.WriteLine("ERROR in port");
            }

            vibrator = (Vibrator)GetSystemService(VibratorService);

            mainView  = FindViewById <LinearLayout>(Resource.Id.clickerView);
            alertText = FindViewById <TextView>(Resource.Id.alertText);
            var reconnectButton = FindViewById <Button>(Resource.Id.reConnectButton);

            reconnectButton.Click += ReConnect;

            //Load the Prohibitive Sound Assets
            try
            {
                AssetFileDescriptor afd = Assets.OpenFd("prohibSound.wav");
                prohibMediaPlayer = new MediaPlayer();
                prohibMediaPlayer.SetDataSource(afd.FileDescriptor, afd.StartOffset, afd.Length);
                prohibMediaPlayer.Prepare();
            }
            catch (Exception e) {
                Console.WriteLine("Prohibitive Alert sound file error: " + e);
            };
            try
            {
                AssetFileDescriptor afd = Assets.OpenFd("pervSound.wav");
                pervMediaPlayer = new MediaPlayer();
                pervMediaPlayer.SetDataSource(afd.FileDescriptor, afd.StartOffset, afd.Length);
                pervMediaPlayer.Prepare();
            }
            catch (Exception e)
            {
                Console.WriteLine("Prohibitive Alert sound file error: " + e);
            };
        }
Exemple #21
0
        void IOrderedTraversalController.UpdateTraversalOrder()
        {
            // traversal order wasn't added until API 22
            if ((int)Forms.SdkInt < 22)
            {
                return;
            }

            // since getting and updating the traversal order is expensive, let's only do it when a screen reader is active
            // note that this does NOT get auto updated when you enable TalkBack, so the page will need to be reloaded to enable this path
            var am = AccessibilityManager.FromContext(Context);

            if (!am.IsEnabled)
            {
                return;
            }

            SortedDictionary <int, List <ITabStopElement> > tabIndexes = null;

            foreach (var child in Element.LogicalChildren)
            {
                if (!(child is VisualElement ve))
                {
                    continue;
                }

                tabIndexes = ve.GetSortedTabIndexesOnParentPage(out _);
                break;
            }

            if (tabIndexes == null)
            {
                return;
            }

            AView prevControl = null;

            foreach (var idx in tabIndexes?.Keys)
            {
                var tabGroup = tabIndexes[idx];
                foreach (var child in tabGroup)
                {
                    if (child is Layout ||
                        !(
                            child is VisualElement ve && ve.IsTabStop &&
                            AutomationProperties.GetIsInAccessibleTree(ve) != false &&                             // accessible == true
                            ve.GetRenderer()?.View is ITabStop tabStop)
                        )
                    {
                        continue;
                    }

                    var thisControl = tabStop.TabStop;

                    if (thisControl == null)
                    {
                        continue;
                    }

                    // this element should be the first thing focused after the root
                    if (prevControl == null)
                    {
                        thisControl.AccessibilityTraversalAfter = NoId;
                    }
                    else
                    {
                        if (thisControl != prevControl)
                        {
                            thisControl.AccessibilityTraversalAfter = prevControl.Id;
                        }
                    }

                    prevControl = thisControl;
                }
            }
        }
Exemple #22
0
        private static bool IsServiceEnabled()
        {
            AccessibilityManager manager = (AccessibilityManager)Application.Context.GetSystemService(AccessibilityService);

            return(manager.GetEnabledAccessibilityServiceList(FeedbackFlags.AllMask).Any(x => x.ResolveInfo.ServiceInfo.PackageName == Application.Context.ApplicationInfo.PackageName));
        }