簡體   English   中英

getAccessibilityButtonController Android無障礙服務

[英]getAccessibilityButtonController Android Accessibility Service

我一直在研究Android O中可訪問性的新方法。我遇到了一個名為getAccessibilityButtonController的新方法,我不確定它的作用和預期用途。 我知道Android O中有一個導航按鈕,可用於輔助功能服務。 此輔助功能按鈕僅啟動輔助功能服務,還是在服務中具有其他功能,例如執行特定任務? 我很好奇可訪問性和getAccessibilityButtonController方法的可能用途。 感謝您的時間。

它幾乎可以做任何您想做的事情。 android輔助功能doc中 ,該按鈕可讓您注冊具有onClicked方法的回調。 如果啟用按鈕並提供上述回調,則可以執行該回調上下文中所需的任何操作。

編輯:android文檔已更新,因此以下不再需要。

請注意,如果您閱讀該文檔,則當前有一個示例可以在onCreate()中調用getAccessibilityButtonController()。 這是不正確的,因為在調用onServiceConnected之前控制器是無效的。 我已經修改了下面的示例,以顯示應有的功能。

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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM