首页 > 解决方案 > 如何检测 TalkBack 是否处于活动状态?使用 Xamarin Forms -Dependency 服务

问题描述

在此处输入图像描述如果 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”不起作用。我猜是不确定的语法问题。

标签: androiddependency-injectionxamarin.formsxamarin.androidtalkback

解决方案


您可以做的是检查 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 方法,您将需要当前活动插件

  • 为其安装 NuGet 包。

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

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

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

推荐阅读