2017-06-07 8 views
0

私はAndroid Oのアクセシビリティで利用できる新しいメソッドを見てきました。私はgetAccessibilityButtonControllerという新しいメソッドを実行しました。 Android Oでは、アクセシビリティサービスに使用できるナビゲーションボタンがあることはわかっています。このアクセシビリティボタンはアクセシビリティサービスを起動するだけですか、特定のタスクを実行するなど、サービス内に他の機能を持つことはできますか?私は、アクセシビリティとgetAccessibilityButtonControllerメソッドのための好奇心が強い可能性のある使用方法です。あなたの時間をありがとう。getAccessibilityButtonController Androidアクセシビリティサービス

答えて

0

これは、あなたが欲しいものは何でもできます。 android accessibility docから、このボタンを使用すると、onClickedメソッドを持つコールバックを登録できます。ボタンを有効にして上記のコールバックを提供する場合は、そのコールバックのコンテキスト内で任意のものを実行できます。

docを読んでいる場合、現在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); 
    } 
} 
関連する問題