【问题标题】:Can the accessibility "Magnification Gesture" be detected on Android?可以在 Android 上检测到辅助功能“放大手势”吗?
【发布时间】:2023-04-07 07:44:01
【问题描述】:

我有一个游戏应用,它需要反复点击。一些玩家抱怨在他们的设备上启用了“三次点击缩放”无障碍手势时它不起作用。

网络搜索显示我的游戏中有can't be disabled,但可以检测到它吗?至少我可以向用户解释如何在播放时将其关闭。

我不确定我可以使用哪个 android API 来检查此设置。我不是原生的 android 开发者,我在 Unity 工作,而 Google 没有发现任何东西。

【问题讨论】:

  • 谢谢,这有点用。我找到了 AccessibilityService.MagnificationController,但这似乎只告诉你缩放发生的时间,而不是具体的原因(三次点击放大)。我对系统设置感兴趣,想知道是否启用和/或使用了特定的放大手势。
  • 我以为 ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED 可以告诉你,但它是一个私有 API。
  • 这成功了!我可以使用它添加支票。我会发布一个答案。

标签: java c# android unity3d accessibility


【解决方案1】:

感谢zcui93,我能够使用以下 Java 测试此设置:

Settings.Secure.getInt( context.getContentResolver(), "accessibility_display_magnification_enabled" );

...只需检查返回值:1 = 启用,0 = 禁用

这是在 Unity C# 脚本中执行此操作的代码:

public static bool CheckForSystemZoomEnabled()
{
    #if UNITY_ANDROID
    try {
        using(AndroidJavaClass clsUnity = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
        {
            AndroidJavaObject objActivity = clsUnity.GetStatic<AndroidJavaObject>("currentActivity");
            AndroidJavaObject objResolver = objActivity.Call<AndroidJavaObject>("getContentResolver");
            using(AndroidJavaClass clsSecure = new AndroidJavaClass("android.provider.Settings$Secure"))
            {
                int val = clsSecure.CallStatic<int>("getInt", objResolver, "accessibility_display_magnification_enabled");
                return val != 0;
            }
        }
    } catch(System.Exception) { }
    #endif
    return false;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    • 2011-08-13
    • 2013-04-25
    相关资源
    最近更新 更多