2015-11-05 59 views
1

我是android開發中的新手。我開始爲android可訪問性工作,使盲人應用程序可以訪問android應用程序。我做了簡單的登錄表單,並設置了可訪問性屬性,如內容描述和焦點等,我打開回話並檢查它。通過對講textview上的可訪問性

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> 

在我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); 

     } 
    } 

登錄成功TextView的提示時,觸摸它。 我希望當我點擊登錄按鈕,然後textview「登錄成功」應立即通過對講提示。 我將AccessibilityliveRegion設置爲「禮貌」。 我還應該做什麼?

+0

它需要添加無障礙服務,以便它可以提供反饋登錄成功。 –

回答

-1

如果我們爲textview設置android:accessibilityLiveRegion =「禮讓」,這是可能的。感謝您的回覆。

0

從我的理解,你希望系統在說話了「登錄成功」的用戶登錄後。

你可以做到這一點使用TextToSpeech類。

首先聲明TextToSpeech(全球/類變量)的對象:

TextToSpeech tts; 

然後將其設置爲實例&說話,當你的登錄過程是成功的:

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(); 
} 

希望這有助於。