Android – Set TalkBack Zugänglichkeit Fokus auf eine bestimmte Ansicht

Wenn TalkBack aktiviert ist, gibt es eine Möglichkeit, das Accessibility-Fokus-Handbuch auf eine bestimmte Ansicht zu setzen? Zum Beispiel, wenn meine Aktivität gestartet wird, möchte ich, dass TalkBack sich automatisch auf einen bestimmten Button (gelber Rahmen um die Ansicht) konzentriert und seine Inhaltsbeschreibung liest.

Was ich bisher versucht habe:

  • Kann eine Android-Applikation eine andere Applikation über UI Automator steuern?
  • Bei der Verwendung von TalkBack, was ist der bevorzugte Weg, um den Benutzer zu warnen, wenn sich der Inhalt eines TextViews geändert hat?
  • Android AutoCompleteTextView onItemSelectedListener nicht mit einer Bluetooth-Tastatur ausgelöst
  • So ändern Sie Android Talkback im Falle eines App-Namens
  • Gibt es einen üblichen Weg, um zu sagen, dass eine Zahl ein Zeichen zu einem Zeitpunkt gelesen werden sollte?
  • myButton.setFocusable(true); myButton.setFocusableInTouchMode(true); myButton.requestFocus(); 

    RequestFocus (), so scheint es, ist nur Eingabe Eingabe Fokus und hat nichts mit Accessibility Fokus zu tun. Ich habe auch versucht:

      myButton.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED); myButton.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED); myButton.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED); myButton.announceForAccessibility("accessibility test"); myButton.performAccessibilityAction(64, null); // Equivalent to ACTION_ACCESSIBILITY_FOCUS AccessibilityManager manager = (AccessibilityManager) getSystemService(Context.ACCESSIBILITY_SERVICE); if (manager.isEnabled()) { AccessibilityEvent e = AccessibilityEvent.obtain(); e.setSource(myButton); e.setEventType(AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED); e.setClassName(getClass().getName()); e.setPackageName(getPackageName()); e.getText().add("another accessibility test"); manager.sendAccessibilityEvent(e); } 

    Nichts davon scheint zu funktionieren.

  • Deinstallieren von Android ADT
  • Deaktivieren Sie die Back-Taste in Android
  • Wie bekomme ich Unique Id eines Beacon mit Estimote SDK in Android
  • Ändern des Textaussehens in Stilen und Designs für eine Android-App
  • Gibt es eine Möglichkeit, Extras zur Aktivität mit ActivityInstrumentationTestCase2 hinzuzufügen
  • Ton mit SoundPool spielen
  • One Solution collect form web for “Android – Set TalkBack Zugänglichkeit Fokus auf eine bestimmte Ansicht”

    HAFTUNGSAUSSCHLUSS: Erzwingen Sie den Fokus auf Aktivitätsbelastung überall, aber an der oberen Bar ist immer (okay, immer sollte fast nie gesagt werden), aber wirklich, einfach nicht tun. Es handelt sich um eine Verletzung aller Arten von WCAG 2.0-Vorschriften, einschließlich 3.2.1 und 3.2.3, in Bezug auf vorhersehbare Navigations- und Kontextänderungen. Sie sind, wahrscheinlich, machen Sie Ihre App mehr unzugänglich, indem Sie dies tun.

    http://www.w3.org/TR/WCAG20/#consistent-verhalten

    END-HAFTUNGSAUSSCHLUSS.

    Sie verwenden die korrekten Funktionsaufrufe. Alles was du tun musst, ist das:

     myButton.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED); 

    Das Problem ist eher der Punkt, an dem Sie versuchen, dies zu tun. Talkback legt sich Ihrer Tätigkeit etwas später im Aktivitätszyklus an. Die folgende Lösung illustriert dieses Problem, ich bin mir nicht sicher, dass es einen besseren Weg gibt, dies zu tun, um ehrlich zu sein. Ich habe versucht onPostResume, das ist der letzte Rückruf der Android OS ruft, über das Laden von Aktivitäten, und immer noch musste ich in einer Verzögerung hinzufügen.

     @Override protected void onPostResume() { super.onPostResume(); Log.wtf(this.getClass().getSimpleName(), "onPostResume"); Runnable task = new Runnable() { @Override public void run() { Button theButton = (Button)WelcomeScreen.this.findViewById(R.id.idButton); theButton.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED); } }; final ScheduledExecutorService worker = Executors.newSingleThreadScheduledExecutor(); worker.schedule(task, 5, TimeUnit.SECONDS); } 

    Sie können eine benutzerdefinierte Ansicht erstellen. Die Rückrufe innerhalb der Ansicht, können die Logik, die Sie benötigen, um dies zu tun, ohne die Rasse Zustand! Ich könnte mich später noch einmal anschauen, wenn ich Zeit bekomme.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.