标签: accessibility

我是否可以在不更改系统的DPI设置的情况下设置Java Swing应用程序的DPI分辨率?

我有一个使用Substance LookAndFeel和Windows作为目标平台的Java应用程序,我想在更改系统设置的情况下增加应用程序的DPI 设置.

我想这样做是因为我不想强迫用户重新启动Windows,因为很多Windows应用程序似乎都有很高的DPI设置问题(> 120)

PS:我知道Substance LaF允许在运行时缩放字体大小,但这样只调整控件的高度,而不是宽度.我希望我的GUI完全缩放,如果我设置系统的DPI设置会发生.

java testing swing accessibility dpi

9
推荐指数
1
解决办法
8061
查看次数

如何在android中以编程方式打开/关闭辅助功能设置中的所有声音?

在Android 4.0+中,有一个选项设置 - >辅助功能 - >转动所有声音.如果我检查该选项,Android设备上运行的任何应用程序都不会产生任何声音.我的应用程序必须发出警报声,所以如果有人检查了该选项,该应用程序不会发出任何声音.因此,每次用户启动应用程序时,我都必须自动取消选中该选项.通过代码,我该怎么做?

如果有人可以共享一段代码,将会很有帮助.我尝试过AudioManager,但只有在启用了移动音频的情况下才有效.

amanger.setRingerMode(AudioManager.RINGER_MODE_NORMAL);

amanger.setStreamMute(AudioManager.STREAM_MUSIC, false);

amanger.setStreamVolume(AudioManager.STREAM_MUSIC,
    (int)(amanger.getStreamMaxVolume(AudioManager.STREAM_MUSIC)*(75.0/100.0)), 0);
Run Code Online (Sandbox Code Playgroud)

audio android accessibility

9
推荐指数
1
解决办法
2万
查看次数

视觉上删除 <h1> 元素,同时保留屏幕阅读器的可访问性并避免搜索引擎的惩罚

我想在视觉<h1>上对常规网站访问者隐藏页面上的元素;但是,我意识到该元素对于使用屏幕阅读器的用户很重要。所以我需要以屏幕阅读器仍然可以访问它的方式在视觉上隐藏元素。

似乎有很多技术可以使用。例如,使用文本缩进将文本移出屏幕。在其他情况下,一些使用样式,将高度和宽度设置为 1px,然后隐藏溢出。

虽然从可访问性的角度来看这些应该有效,但我担心这些技术可能会被搜索引擎视为“伪装”,从而导致网站受到惩罚。

解决这个问题的最佳方法是什么?这甚至可能吗?

html css seo accessibility wcag

9
推荐指数
2
解决办法
5897
查看次数

多个 h1 会导致屏幕阅读器出现问题吗?

当我通过 W3C 检查器构建一个网站时,它要求我考虑仅使用 h1 作为顶级标题,并指出我在某个部分内有 h1 的部分。它还提到,屏幕阅读器会将它们全部视为顶级元素,但是,根据 HTML5 规范,部分会有效地“重置”标题,以便您可以在其中启动另一个从 1 到 6 的层次结构。

如果我们试图专注于 W3C 验证和可访问性,我是否应该只在部分中使用 h2-h6?或者这个警告不正确?

html w3c accessibility screen-readers

9
推荐指数
2
解决办法
9562
查看次数

作为辅助功能元素的 VoiceOver 父视图和子视图

我有一个简单的 UIView 层次结构。有一个包含视图 B 和 C 的父视图 A。如果我将所有视图设置为可访问性元素,则只有视图 A 可访问。视图 B 和 C 不可点击。我需要所有视图(A、B 和 C)都是可访问性元素。

我知道您可以通过将所有视图(A、B 和 C)置于同一级别来实现这一点,但我的应用程序中的视图层次结构不允许任何更改。

你有什么解决办法吗?

accessibility uiview ios voiceover uiaccessibility

9
推荐指数
3
解决办法
9155
查看次数

为屏幕上的所有应用程序窗口访问 NSWindow.level

我正在尝试操作 macOS 的窗口。我找到了以下网址:

这些链接允许通过 macOS 的辅助功能 API 访问应用程序的各种窗口;更具体地说,他们使用该AXUIElementRef元素来重新定位窗口。

在为 macOS 创建应用程序时,我成功使用了以下代码...

@implementation CustomWindow

- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSWindowStyleMask)windowStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)deferCreation
{
    self = [super initWithContentRect:contentRect styleMask:windowStyle backing:bufferingType defer:deferCreation];
    if(self)
    {
        [self setLevel:kCGDesktopWindowLevel - 1];
        [self setCollectionBehavior:
         (NSWindowCollectionBehaviorCanJoinAllSpaces |
          NSWindowCollectionBehaviorStationary |
          NSWindowCollectionBehaviorIgnoresCycle)];
    }
    return …
Run Code Online (Sandbox Code Playgroud)

macos cocoa accessibility core-graphics objective-c

9
推荐指数
1
解决办法
751
查看次数

macOS 10.15 Catalina 的安全系统首选项中的隐私功能“输入监控”背后是哪个 API?

在 macOS 10.15 Catalina 中,安全系统首选项中有一个名为Input Monitoring的新部分。

它说:

即使在使用其他应用程序时,也允许以下应用程序监控来自键盘的输入。

我想知道这背后是哪个 API 将应用程序引入本节。

我知道AXIsProcessTrustedWithOptions(),它向输入监控上方的辅助功能部分添加了一个应用程序。然后我可以用来观看来自其他应用程序的按键。但是输入监控有什么用呢?NSEvent.addGlobalMonitorForEvents(matching: .keyDown, handler: self.keyDown(event:))

看起来手动将应用程序添加到输入监控不允许您使用NSEvent.addGlobalMonitorForEvents(...).

像 Steam 这样的应用程序在更新到 Catalina 后已被放入该部分,所以必须有一些东西告诉系统将它们放在那里......

在此处输入图片说明

macos accessibility keyboard-events

9
推荐指数
1
解决办法
1153
查看次数

HTML:是否可以提供替代文档标题?

目标是在浏览器选项卡中显示正常文本,同时提供不可见的替代文本,帮助屏幕阅读器获得更好的发音。

例如,地理信息系统的首字母缩写词被 NVDA 屏幕阅读器发音为“GIs”(如士兵),而不是传统的“GI S”。

在下面的实验中,NVDA 没有看到任何替代方案。可以做到吗?

谢谢!

<!doctype html>
<html lang="en" dir="ltr">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <title aria-label="G I S aria" title="G I S title" alt="G I S alt">GIS</title>
</head>
<body>doc</body>
</html>
Run Code Online (Sandbox Code Playgroud)

html accessibility screen-readers

9
推荐指数
1
解决办法
89
查看次数

当当前聚焦的元素从 DOM 中移除时,如何挽救焦点?

我创建了一个与键盘导航配合良好的复合小部件网格。我遇到的一个问题是,当当前焦点元素所在的网格中的某一行时,焦点将返回到该<body>元素。我希望能够将焦点拯救到最接近的有意义的交互元素(在上面或下面的行中)。

\n

我的问题是:

\n

当当前聚焦的元素从 DOM 中删除时,如何将焦点设置到最近的交互元素(仍在 dom 中)?

\n

我尝试将焦点/模糊事件与 setTimeout 结合使用来获取正确的信号,但没有得到任何结果。

\n

还尝试在当前聚焦的元素上使用 MutationObserver,这有效,但我遇到了问题,因为网格实际上是滚动的,因此由于行被虚拟滚动器回收,当前聚焦的元素可能会从 DOM 中删除,在这种情况下我不想救援焦点(这会导致网格不断向上滚动到新的“救援”焦点,并且您永远无法到达底部)

\n

\r\n
\r\n
const grid = document.querySelector(\'.grid\');\n\n// Remove all buttons/links from the natural tab order\ngrid\n  .querySelectorAll(\'a:not([tabindex="0"]), button:not([tabindex="0"])\')\n  .forEach(el => el.setAttribute(\'tabindex\', \'-1\'));\n\ngrid.addEventListener(\'keydown\', (e) => {\n    // Prevent scrolling\n    if (e.key === \'ArrowUp\' || e.key === \'ArrowDown\') {\n      e.preventDefault();\n    }\n    if (e.key === \'ArrowUp\') moveFocus(grid, \'up\');\n    if (e.key === \'ArrowDown\') moveFocus(grid, \'down\');\n    if (e.key === \'ArrowLeft\') moveFocus(grid, \'left\');\n    if (e.key …
Run Code Online (Sandbox Code Playgroud)

javascript accessibility

9
推荐指数
2
解决办法
2489
查看次数

如何使用可访问性服务从浏览器获取 url

我已启用可访问性服务权限,现在我想从地址栏中获取 url。

我试过下面的事情:

Accessibility_service_config.xml

<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:accessibilityEventTypes="typeAllMask"
    android:accessibilityFeedbackType="feedbackAllMask"
    android:accessibilityFlags="flagDefault"
    android:canRetrieveWindowContent="true"
    android:description="@string/accessibility_service_description"
    android:notificationTimeout="0"
    android:canRequestFilterKeyEvents="true"
    android:settingsActivity="com.example.android.accessibility.ServiceSettingsActivity" />
Run Code Online (Sandbox Code Playgroud)

访问服务.java

public class AccessService extends AccessibilityService {

    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        AccessibilityNodeInfo source = event.getSource();
        if (source == null)
            return;
        final String packageName = String.valueOf(source.getPackageName());
        String BROWSER_LIST = "com.android.chrome";
        List<String> browserList
                = Arrays.asList(BROWSER_LIST.split(",\\s*"));
        if (event.getEventType()
                == AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED) {
            if (!browserList.contains(packageName)) {
                return;
            }
        }

        if (browserList.contains(packageName)) {
            try {
                if (AccessibilityEvent
                        .eventTypeToString(event.getEventType())
                        .contains("WINDOW")) {
                    AccessibilityNodeInfo nodeInfo = event.getSource();
                    getUrlsFromViews(nodeInfo);
                }
            } catch (StackOverflowError …
Run Code Online (Sandbox Code Playgroud)

android accessibility accessibilityservice android-accessibility

9
推荐指数
2
解决办法
1199
查看次数