标签: talkback

如何知道Android TalkBack是否处于活动状态?

我正在开发一个使用TalkBack引导人们通过它的应用程序.但是,在这些情况下,我希望在应用程序的布局中存在一些微妙的差异,因此导航更容易,并且还有额外的语音输出(使用TextToSpeech)来帮助指导用户.

我的问题是,如果用户激活了TalkBack,我只想要那些更改和额外输出.

有没有办法知道它是不是?我没有找到任何直接访问TalkBack设置的具体内容,但我希望有某种形式的访问通用手机设置可以让我知道我需要什么.

提前问候并表示感谢.

android accessibility talkback android-accessibility

26
推荐指数
4
解决办法
1万
查看次数

在仿真设备上测试辅助功能(棉花糖)

我想在模拟器中测试我的应用程序的可访问性(特别是Talkback),但似乎模拟器中缺少该选项.以下是可访问性设置中模拟器的屏幕截图:

在此输入图像描述

有两个选项"ClockBack""QueryBack"我不能我的手机上使用相同的Android版本发现.以下是我手机辅助功能设置的屏幕截图:

在此输入图像描述

我搜索了解"ClockBack""QueryBack"了解它们是否是Talkback模拟器的替代品,但我找不到任何东西.

有谁知道"ClockBack"和的功能是"QueryBack"什么?还有更多关于如何Talkback在模拟器中启用?

android android-emulator talkback android-6.0-marshmallow

26
推荐指数
3
解决办法
8326
查看次数

Android - 将TalkBack可访问性焦点设置为特定视图

启用TalkBack时,有没有办法将辅助功能焦点手动设置为特定视图?例如,当我的Activity启动时,我希望TalkBack自动关注某个Button(视图周围的黄色框)并阅读其内容描述.

到目前为止我尝试过的:

    myButton.setFocusable(true);
    myButton.setFocusableInTouchMode(true);
    myButton.requestFocus();
Run Code Online (Sandbox Code Playgroud)

requestFocus()似乎只是请求输入焦点而与可访问性焦点无关.我也尝试过:

    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);
    }
Run Code Online (Sandbox Code Playgroud)

这似乎都不起作用.

android accessibility talkback

21
推荐指数
3
解决办法
3万
查看次数

如何在ConstraintLayout中创建可访问的焦点组?

想象一下,你有一个LinearLayout里面RelativeLayout包含3个TextViews具有artist, song and album:

<RelativeLayout
    ...
    <LinearLayout
        android:id="@id/text_view_container"
        android:layout_width="warp_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:id="@id/artist"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Artist"/>

        <TextView
            android:id="@id/song"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Song"/>

        <TextView
            android:id="@id/album"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="album"/>
    </LinearLayout>

    <TextView
        android:id="@id/unrelated_textview1/>
    <TextView
        android:id="@id/unrelated_textview2/>
    ...
</RelativeLayout>        
Run Code Online (Sandbox Code Playgroud)

当您激活TalkbackReader并单击其中的a TextViewLinearLayout,TalkbackReader将显示"艺术家","歌曲"或"专辑".

但是您可以TextViews通过使用以下方法将前3个放入焦点组:

<LinearLayout
    android:focusable="true
    ...
Run Code Online (Sandbox Code Playgroud)

现在,TalkbackReader将阅读"艺术家歌曲专辑".

2 unrelated TextViews仍然是他们自己而不是阅读,这是我想要实现的行为.

(请参阅Google codelabs示例以供参考)

我现在正试图重新创建这种行为,ConstrainLayout但没有看到如何.

<ConstraintLayout>
    <TextView artist/>
    <TextView song/>
    <TextView album/>
    <TextView unrelated_textview1/>
    <TextView unrelated_textview2/>
</ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

将小部件放入"组"似乎不起作用:

<android.support.constraint.Group
    android:id="@+id/group"
    android:layout_width="wrap_content" …
Run Code Online (Sandbox Code Playgroud)

android accessibility talkback android-constraintlayout

20
推荐指数
2
解决办法
1965
查看次数

如何更改 JetpackCompose 上文本的内容描述

如何将 Jetpack Compose 上 TalkBack 上要读取的默认文本内容描述更改为我想要的任何文本?

android talkback android-jetpack-compose android-jetpack-compose-text

19
推荐指数
1
解决办法
5729
查看次数

Droid可访问性 - 禁用特定TextView的TalkBack

我找不到应该是一个非常简单的任务的答案.有人可以向我解释关闭android中单个元素的可访问性(对话)的最佳方法吗?

我有一个TextView,我以编程方式将contentDescription设置为nil,并且它保持对话说出标题,但是当浏览视图时它仍然停在该textview上......它只是保持沉默.

我的目标是让对话完全忽略TextView的存在.

请帮忙!

谢谢 :)

android accessibility text-to-speech talkback

15
推荐指数
2
解决办法
7258
查看次数

Android - 防止TalkBack大声宣布TextView标题

我正在开发一个可访问的Android应用程序,人们将使用Explore by Touch和TalkBack辅助功能服务来使用我的应用程序.

这是我的Android XML代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout" 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/forename"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dip"
        android:layout_marginLeft="15dip"
        android:textSize="20sp"
        android:text="@string/forenameText" 
        android:contentDescription="@null"/>

    <EditText
        android:id="@+id/EditTextForename"
        android:layout_width="285dp"
        android:layout_height="65dp"
        android:layout_marginTop="10dip"
        android:layout_marginLeft="15dip"
        android:hint="@string/forenameHint"
        android:inputType="textPersonName"
        android:lines="1"
        android:singleLine="true"
        android:textSize="20sp" >
    </EditText>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

strings.xml中

<string name="forenameText">Forename</string>
<string name="forenameHint">Enter your forename here</string>
Run Code Online (Sandbox Code Playgroud)

TextView显示标题"Forename",EditText允许我在表单字段中输入一些细节.我遇到的问题是,当我通过触摸浏览将手指拖过屏幕时,TalkBack会选择TextView的标题并将其大声宣布为"Forename".我希望TextView只显示文本而不提供任何声音反馈.

我已经将contentDescription设置为@null,正如您从上面的代码中看到的那样,但当我的手指位于TextView上时,TalkBack仍会宣布"Forename".

我也尝试在我的Java类中设置contentDescription:

TextView forename=(TextView)findViewById(R.id.forename);
forename.setContentDescription("");
Run Code Online (Sandbox Code Playgroud)

但是,我仍然遇到同样的问题.有没有其他方法将contentDescription设置为null/empty并阻止TalkBack大声宣布它?

Java代码:

public class MainActivity extends Activity{

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        View forename = findViewById(R.id.forename);

        forename.setAccessibilityDelegate(new AccessibilityDelegate() {
          public boolean performAccessibilityAction (View host, int action, Bundle args){
            return true; …
Run Code Online (Sandbox Code Playgroud)

android accessibility textview talkback

11
推荐指数
3
解决办法
2万
查看次数

如何更改双击和长按的Android对讲说明

我有一个有长按动作处理程序的视图.我使用内容描述来设置消息,当视图获得焦点时,Talkback会说话.

目前它在获得焦点后立即说出了我的内容描述,并在短暂停顿后说:

双击激活,双击并按住长按

我想将此消息更改为类似的内容

双击"动作1",双击并按住"动作2"

有办法吗?

我调查了onPopulateAccessibilityEvent(),它得到了TYPE_VIEW_ACCESSIBILITY_FOCUSED事件,但我无法更改所需的消息.

我错过了一些简单的事吗?

android accessibility talkback android-a11y

10
推荐指数
3
解决办法
1万
查看次数

Android 可访问性:除了宣布 ImageView 的内容描述之外,Talkback 还显示“不在列表中”

我的布局中有一个 ImageView,其内容描述=“关闭”。当 Talkback 打开时,它会显示“关闭按钮,不在列表中”。为什么 Talkback 还显示“不在列表中”?我该如何避免这种情况?PS布局中还有一个RecyclerView,也许它会产生某种影响。

android accessibility talkback

10
推荐指数
1
解决办法
6867
查看次数

在警报对话中自定义Android对讲?

我通过Android TalkBack检查了所有默认警报对话框.默认的Android Talkback行为是它在对话框中读取所有内容(不停止).有什么方法可以根据我的需要定制它.例如 :

AlertDialog alertDialog = new AlertDialog.Builder(AlertDialogActivity.this).create();
alertDialog.setTitle("Alert Dialog");
alertDialog.setMessage("This is my alert dialog");
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {
        Toast.makeText(getApplicationContext(), "You clicked on OK", Toast.LENGTH_SHORT).show();
    }
});

alertDialog.show();
Run Code Online (Sandbox Code Playgroud)

当出现对话框时,它会自动读取"Alert Dialogue.这是我的提醒对话.确定." 但我想控制它,就像它应该只读"警报对话"或"这是我的警报对话"等.

点击"确定"时,它只读"OK",而不是"OK按钮".

android android-alertdialog accessibilityservice talkback

9
推荐指数
1
解决办法
2206
查看次数