[英]accessibility on textview
I am new in android development.我是 android 开发的新手。 I start for android accessibility work to make android application accessible for blind people.
我开始进行 android 辅助功能工作,以使盲人可以访问 android 应用程序。 I made simple login form and set accessibility attribute such as content description and focus etc I turn on talk back and check it.
我制作了简单的登录表单并设置了可访问性属性,例如内容描述和焦点等我打开回复并检查它。
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>
in my MainActivity.java在我的 MainActivity.java
public class MainActivity extends AppCompatActivity {
EditText usr_nm;
TextView log_succ;
Button logs;
EditText pass_edit;
int counter=5;
String log_msg="login successful";
Button log_btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
log_succ=(TextView) findViewById(R.id.log_succ);
usr_nm=(EditText) findViewById(R.id.usr_nm);
pass_edit=(EditText)findViewById(R.id.pass_edit);
}
public void log(View view) {
if (usr_nm.getText().toString().equals("admin") &&
pass_edit.getText().toString().equals("admin")) {
log_succ.setText(log_msg);
log_succ.setContentDescription("Login successful");
// log_succ.isFocusable();
// Toast.makeText(MainActivity.this, "password is correct", Toast.LENGTH_LONG).show();
// Intent in = new Intent("com.example.samir.login_form.user_page");
// startActivity(in);
} else {
Toast.makeText(MainActivity.this, "password is incorrect", Toast.LENGTH_SHORT).show();
counter--;
if (counter == 0)
logs.setEnabled(false);
}
}
login successful textview prompt by talkback when touch it.触摸它时通过对讲登录成功的textview提示。 i want that when i click on login button then textview "Login successful" should be prompt by talkback immediately.
我希望当我点击登录按钮时,应该立即通过对讲提示 textview“登录成功”。 I set AccessibilityliveRegion to "polite".
我将 AccessibilityliveRegion 设置为“礼貌”。 what else should i do??
我还应该做什么??
From what i understood, you want the system to speak up "Login Successful" after the user logs in.据我了解,您希望系统在用户登录后说出“登录成功”。
You can achieve this using TextToSpeech
class.您可以使用
TextToSpeech
类来实现这一点。
First declare an object of TextToSpeech
(a Global/Class variable):首先声明一个
TextToSpeech
对象(一个全局/类变量):
TextToSpeech tts;
Then set it to instantiate & speak up when your login process is successful:然后将其设置为在登录过程成功时实例化并发言:
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);
}
}
});
Also, don't forget to release the resources after you are done:另外,不要忘记在完成后释放资源:
@Override
protected void onPause() {
if(tts!=null){
tts.stop();
tts.shutdown();
}
super.onPause();
}
Hope this helps.希望这可以帮助。
如果我们为 textview 设置 android:accessibilityLiveRegion="polite" ,这是可能的..谢谢您的回复。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.