Android textview上的可访问性

Android textview上的可访问性,android,accessibility,Android,Accessibility,我是android开发的新手。我开始做android易访问性工作,让盲人可以访问android应用程序。我制作了一个简单的登录表单,并设置了可访问性属性,如内容描述和焦点等。我打开了对话并检查了它 here is code activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/

我是android开发的新手。我开始做android易访问性工作,让盲人可以访问android应用程序。我制作了一个简单的登录表单,并设置了可访问性属性,如内容描述和焦点等。我打开了对话并检查了它

    here is code activity_main.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
       android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MainActivity"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/usernm_text"
        android:id="@+id/username"
        android:contentDescription="@string/usernm_text"
        android:focusable="true"
        android:nextFocusDown="@+id/usr_nm"
         />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPersonName"
        android:ems="10"
        android:id="@+id/usr_nm"
        android:contentDescription="@string/usernm_text"
        android:focusable="true"
        android:text="admin"
        android:nextFocusDown="@+id/password"
        android:nextFocusUp="@id/usr_nm"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/pass_text"
        android:id="@+id/password"
        android:focusable="true"
        android:nextFocusDown="@+id/pass_edit"
        android:contentDescription="@string/pass_text"
        android:nextFocusUp="@id/usr_nm"/>

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPassword"
        android:ems="10"
        android:id="@+id/pass_edit"
        android:contentDescription="@string/pass_text"
        android:text="admin"
        android:focusable="true"
        android:nextFocusDown="@+id/login"
        android:nextFocusUp="@id/password"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/login_btn"
        android:onClick="log"
        android:id="@+id/login"
        android:contentDescription="@string/login_btn"
        android:focusable="true"
        android:nextFocusUp="@id/pass_edit"
        android:accessibilityLiveRegion="polite" />


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:id="@+id/log_succ"
        android:focusable="true"
        android:accessibilityLiveRegion="polite" />

</LinearLayout>
触摸时通过对讲成功登录文本视图提示。 我想,当我点击登录按钮,然后文本视图“登录成功”应立即通过对讲提示。 我将AccessibilityLiverRegion设置为“礼貌”。
我还应该做什么

据我所知,您希望系统在用户登录后大声说出“登录成功”

您可以使用
TextToSpeech
类来实现这一点

首先声明
TextToSpeech
的对象(全局/类变量):

然后将其设置为在登录过程成功时实例化并大声说话:

tts = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {
      @Override
      public void onInit(int status) {
          if(status == TextToSpeech.SUCCESS){
              tts.setLanguage(Locale.US);
              tts.speak("Login Successful", TextToSpeech.QUEUE_FLUSH, null);
          }
      }
  });
此外,完成后不要忘记释放资源:

@Override
protected void onPause() {
        if(tts!=null){
            tts.stop();
            tts.shutdown();
        }
        super.onPause();
}

希望这有帮助。

如果我们为textview设置android:accessibilityLiveRegion=“polite”,这是可能的。。感谢您的回复。

它需要添加辅助功能服务,以便在登录成功后提供反馈。
tts = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {
      @Override
      public void onInit(int status) {
          if(status == TextToSpeech.SUCCESS){
              tts.setLanguage(Locale.US);
              tts.speak("Login Successful", TextToSpeech.QUEUE_FLUSH, null);
          }
      }
  });
@Override
protected void onPause() {
        if(tts!=null){
            tts.stop();
            tts.shutdown();
        }
        super.onPause();
}