5

AccessibilityServiceAndroid 5.0.1 を実行している Samsung Note 4 にAndroidを展開しています。

私はWhatsAppをテストベッドとして使用していますが、これはどのアプリケーションにも当てはまり、アクセシビリティサービスがどのようにイベントを発生させるかについての質問です.

イベント2048 (TYPE_WINDOW_CONTENT_CHANGED)は、Android によって発生する一貫性がありません。WhatsAppにメッセージを送信すると、フォーカスがあり、画面が75%の時間でこのイベントが発生し、場合によっては発生しません。

これには理由がありますか?アクセシビリティ イベントは信頼できません..?

さらに、ユーザーがスクロールしたとき、またはWhatsAppのチャットウィンドウに新しい通信が表示されたときに、イベント4096 (TYPE_VIEW_SCROLLED)が一貫して発生するように見えますが、デバイスの現在のスクロール位置を特定する方法はないようです? AccessibilityEvent.getSource()リストの一部のメタデータ (この場合は android:id/list) へのアクセスを提供しますが、このリストまたはその子要素のスクロール位置に関する情報はありません。子リストは、画面に表示されているものに対して相対的boundsToScreen/Parentであり、リストの下部または中央または上部を見ているかに関係なく、値は同じです。AccessibilityEventNodeInfo提示されたインスタンスからスクロール位置を決定するのに役立つ手がかりはありますか?

最後に、2048 (TYPE_WINDOW_CONTENT_CHANGED)イベントが発生したときに、新しい要素が から実際に利用できない場合がありAccessibiltyEvent.getSource()ます (while ループを使用してルート要素まで反復し、getParent()再度下方向にスキャンした場合でも)。変更が UI に適用される前に、イベントが画面のスナップショットを取得しているようです。Athread.sleepは役に立ちません。UIAccessibilityEventNodeInfoへのライブ アクセスというよりは、スナップショットのように見えますか? これを回避する方法はありますか?

4

1 に答える 1