AccessibilityService
Android 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
へのライブ アクセスというよりは、スナップショットのように見えますか? これを回避する方法はありますか?