我一直在研究Android O中可访问性的新方法。我访问了这种称为GetAccosconibilityButtonController的新方法,我不确定它的作用和预期的使用。我知道在Android O中有一个可用于可访问性服务的导航按钮。此可访问性按钮是否仅启动可访问性服务,还是在服务中可以使用其他功能,例如执行特定任务?我很好奇可访问性和可访问性的方法。谢谢您的宝贵时间。
它几乎可以做任何您想要的事情。从Android可访问性文档中,该按钮可允许您注册具有关闭方法的回调。如果您启用按钮并提供所述回调,则可以在该回调的上下文中执行您想要的任何内容。
编辑:Android文档已更新,因此不再需要以下内容。
请注意,如果您读取DOC,当前有一个示例,该示例在OnCreate((中都可以调用getAccosconibilitybuttoncontroller((。这是不正确的,因为在调用onservIconeconecteconeconeconeconeconeconeconeconecon中。我已经修改了下面的示例以显示应该有效的东西。
private AccessibilityButtonController mAccessibilityButtonController;
private AccessibilityButtonController
.AccessibilityButtonCallback mAccessibilityButtonCallback;
private boolean mIsAccessibilityButtonAvailable;
@Override
protected void onServiceConnected() {
mAccessibilityButtonController = getAccessibilityButtonController();
mIsAccessibilityButtonAvailable =
mAccessibilityButtonController.isAccessibilityButtonAvailable();
if (!mIsAccessibilityButtonAvailable) {
return;
}
AccessibilityServiceInfo serviceInfo = getServiceInfo();
serviceInfo.flags
|= AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_BUTTON;
setServiceInfo(serviceInfo);
mAccessibilityButtonCallback =
new AccessibilityButtonController.AccessibilityButtonCallback() {
@Override
public void onClicked(AccessibilityButtonController controller) {
Log.d("MY_APP_TAG", "Accessibility button pressed!");
// Add custom logic for a service to react to the
// accessibility button being pressed.
}
@Override
public void onAvailabilityChanged(
AccessibilityButtonController controller, boolean available) {
if (controller.equals(mAccessibilityButtonController)) {
mIsAccessibilityButtonAvailable = available;
}
}
};
if (mAccessibilityButtonCallback != null) {
mAccessibilityButtonController.registerAccessibilityButtonCallback(
mAccessibilityButtonCallback, null);
}
}