【问题标题】:how to detect TalkBack is active? using Xamarin Forms -Dependency service如何检测 TalkBack 是否处于活动状态?使用 Xamarin Forms -Dependency 服务
【发布时间】:2019-02-23 04:45:43
【问题描述】:

如果 TalkBack 处于活动状态,我想返回 true 或 false。

公共布尔 IsVoiceOver() {

     AccessibilityManager am = (AccessibilityManager) 
     Context.AccessibilityService;

        var a =  am.IsEnabled;
        if (!a) 
        {
            Console.WriteLine(" DROID voice over   is : " + a);
            return false;
        }
        else 
        {
            Console.WriteLine("DROID voice over  is : " + a);
        return true;
        }
    }

但是,“AccessibilityManager”不起作用。我猜是不确定的语法问题。

【问题讨论】:

  • 我已经对我的答案进行了更改,看看它现在应该可以工作

标签: android dependency-injection xamarin.forms xamarin.android talkback


【解决方案1】:

你可以做的是检查 AccessibilityManager 是否可用

如下所示:

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

 if (am.IsEnabled) 
    {
        Console.WriteLine(" DROID voice over is active);
        return am.IsEnabled;
    }
    else 
    {
        Console.WriteLine("DROID voice over is inactive);
        return am.IsEnabled;
    }

不要忘记添加以下 using 语句:

using Android.Views.Accessibility;
using Android.Content;

更新

要访问 GetSystemService 方法,您需要 Current Activity Plugin

  • 为其安装 NuGet 包。

  • 只需在 MainActivity 的 OnCreate 上调用 Init 方法 CrossCurrentActivity.Current.Init(this, bundle);

  • 然后就可以调用GetSystemService方法了,如下图:

      AccessibilityManager am = (AccessibilityManager)CrossCurrentActivity.Current.Activity.GetSystemService(Context.AccessibilityService);
    

【讨论】:

  • 请看我原始代码的截图。在 GETSYSTEMSERVICE 上遇到问题是操作系统的这一部分还是只是任何其他方法的名称?并且用途已经包括在内。谢谢
  • 您需要活动参考,您需要将其与当前活动一起使用,例如Activity.GetSystemService()
  • 你知道了!!非常感谢
  • @Pxaml 如果这回答了您的问题,请将其标记为正确
  • G. hakim 你能看看这个问题吗stackoverflow.com/questions/55521746/…
猜你喜欢
  • 2012-08-03
  • 1970-01-01
  • 1970-01-01
  • 2021-07-23
  • 2020-04-11
  • 2012-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多