如何检测TalkBack是否有效?使用Xamarin Forms -Dependency服务

问题描述 投票:1回答:1

如果TalkBack处于活动状态,enter image description hereI将返回true或false。

public bool 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个回答
0
投票

您可以做的是检查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;

UPDATE

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

  • 为它安装NuGet包。
  • 只需在MainActivity CrossCurrentActivity.Current.Init(this, bundle);的OnCreate上调用Init方法即可
  • 然后你可以调用GetSystemService方法,如下所示: AccessibilityManager am = (AccessibilityManager)CrossCurrentActivity.Current.Activity.GetSystemService(Context.AccessibilityService);
© www.soinside.com 2019 - 2024. All rights reserved.