11

外部支援ツールを介して提供される音声コントロールとコントロールを組み合わせて使用​​して、ユーザーが Android をナビゲートするのに役立つアクセシビリティ アプリを作成しています。MonkeyTalk Java API を使用してより重い作業を行います。
何が起こっているかについてユーザーを支援するために、ユーザーがより迅速に行動できるように通知を読み取るアクセシビリティ サービスも使用します。

Facebookメッセンジャーにメッセージが届いたときに音声キューが得られないことを知らされており、ログを確認すると、次のように表示されます。

D/NotificationService(2665): package com.facebook.orcaText: []

0をevent.getText().size()返します (AccessibilityEvent イベントで)。
今のところ、彼らはアプリを開いてテキストを読み上げる必要があります。これは 2 つの音声コマンドです...
他のすべての通知を正しく受け取ります。Facebook のアクセシビリティに対する姿勢についてのドキュメントを探してみましたが、何も見つかりませんでした。
通知からテキストを取得する方法はありますか?

4

2 に答える 2

2

これを試して、Facebookメッセンジャーの通知で機能するかどうかを確認できます. これが機能する場合でも、より良い解決策を待つことをお勧めします.

API 19 以降では、オブジェクトが最初に作成されたときに渡された入力Notificationをバンドルして保持します。したがって、 、 などの情報は、フォームのキーを使用してこれから抽出できます。キーはここにあります: LinkextrasNotification.BuilderNotificationtitlecontextsummaryBundleNotification.EXTRAS_XXXX

オーバーライドされたonAccessibilityEvent(AccessibilityEvent event)メソッド:

@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
    Parcelable data = event.getParcelableData();

    if (data != null && data instanceof Notification) {
        Log.i("", "We have a notification to parse");

        Notification notification = (Notification) data;

        // For API 19 and above, `Notifications` carry an `extras` bundle with them
        // From this bundle, you can extract info such as:

        //      `EXTRA_TITLE`     -  as supplied to setContentTitle(CharSequence)
        //      `EXTRA_TEXT `     -  as supplied to setContentText(CharSequence)
        //      `EXTRA_INFO_TEXT` -  as supplied to setContentInfo(CharSequence)
        //      ... more at: http://developer.android.com/reference/android/app/Notification.html

        Bundle b = noti.extras;
        Log.i("Notification", "Title: " + b.get(Notification.EXTRA_TITLE));
        Log.i("Notification", "Text: " + b.get(Notification.EXTRA_TEXT));
        Log.i("Notification", "Info Text: " + b.get(Notification.EXTRA_INFO_TEXT));

        /////////////////////////////////////////////////////////////////

        // For API 18 and under:

        // Pass `notification` to a method that parses a Notification object - See link below

        List<String> notificationText = extractTextFromNotification(notification);
        ....
        ....
    }
}

extractTextFromNotification(Notification)ここからメソッドにすることができます: Link。言うまでもなく、これは回避策であり、必要に応じて機能することを確認するにはかなりのテストが必要です。

于 2014-09-05T22:06:42.570 に答える