2013-04-15 18 views
2

我試圖讓TalkBack閱讀進度條上的進度,但沒有多少運氣。關於如何獲取該信息以便TalkBack可以這樣說的任何想法。如何獲取TalkBack以閱讀Android progressBar進度?

THX

公共類MainActivity延伸活動{

Button btnStartProgress; 
ProgressDialog progressBar; 
private int progressBarStatus = 0; 
private Handler progressBarHandler = new Handler(); 

private long fileSize = 0; 

private String msgProgress =""; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    addListenerOnButton(); 

} 

public void addListenerOnButton() { 

    btnStartProgress = (Button) findViewById(R.id.btnStartProgress); 
    btnStartProgress.setOnClickListener(
      new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

     // prepare for a progress bar dialog 
     progressBar = new ProgressDialog(v.getContext()); 
     progressBar.setCancelable(true); 
     progressBar.setMessage("File downloading ..."); 
     progressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
     progressBar.setProgress(0); 
     progressBar.setMax(100); 
     progressBar.show(); 

     //reset progress bar status 
     progressBarStatus = 0; 

     //reset filesize 
     fileSize = 0; 

     new Thread(new Runnable() { 
      public void run() { 
      while (progressBarStatus < 100) { 

       // process some tasks 
       progressBarStatus = doSomeTasks(); 


       // your computer is too fast, sleep 1 second 
       try { 
       Thread.sleep(1000); 
       } catch (InterruptedException e) { 
       e.printStackTrace(); 
       } 

       // Update the progress bar 
       progressBarHandler.post(new Runnable() { 
       public void run() { 
        progressBar.setProgress(progressBarStatus); 
        //progressBar.setMessage(msgProgress); 

       } 
       }); 
      } 

      // ok, file is downloaded, 
      if (progressBarStatus >= 100) { 

       // sleep 2 seconds, so that you can see the 100% 
       try { 
        Thread.sleep(2000); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 

       // close the progress bar dialog 
       progressBar.dismiss(); 
      } 
      } 
      }).start(); 

      } 

      }); 

    } 

// file download simulator... a really simple 
public int doSomeTasks() { 

    while (fileSize <= 1000000) { 

     fileSize++; 

     if (fileSize == 250000) { 
      //msgProgress = "25 Percent"; 
      return 25; 
     } else if (fileSize == 500000) { 
      //msgProgress = "50 Percent"; 
      return 50; 
     } else if (fileSize == 750000) { 
      //msgProgress = "75 Percent"; 
      return 75; 
     } else if (fileSize == 900000) { 
      //msgProgress = "90 Percent"; 
      return 90; 
     } 
     // ...add your own 

    } 

    return 100; 

} 

}

回答

1

如前所述here可以創建一個TTS的Singleton並添加檢查是否可訪問被使能的方法。每次顯示進度條時調用方法say(消息)。

這是我是如何實現它

public class AccessibilityUtil implements OnInitListener { 

private static final String TAG = AccessibilityUtil.class.getSimpleName(); 

private static final AccessibilityUtil instance = new AccessibilityUtil(); 
private String message; 
private static TextToSpeech tts=null; 

private static boolean isAccesibilityEnabled() { 

    return ((AccessibilityManager) TmcPlusApplication.getInstance() 
    .getSystemService(
    TmcPlusApplication.getInstance().ACCESSIBILITY_SERVICE)) 
    .isEnabled(); 


} 

public static AccessibilityUtil getInstance() { 

    return instance; 
} 

public void say(String message) { 

    if (isAccesibilityEnabled()) { 
     if (tts == null) { 
      this.message = message; 
      tts = new TextToSpeech(<Your Application object>.getInstance(), (AccessibilityUtil) instance); 
     } else { 
      speakOut(); 
     } 
    } 
} 

@Override 
public void onInit(int status) { 
    if (status == TextToSpeech.SUCCESS) { 
     Log.v(TAG, "Text to speech enabled"); 
     speakOut(); 
    } 

} 

/* 
* utters the message String 
*/ 
private void speakOut() { 
    Log.v(TAG, "Text to speech the word "+message); 
    tts.speak(message, TextToSpeech.QUEUE_FLUSH, null); 
} 

public void stopTTS() { 
    if (tts != null) { 
     tts.shutdown(); 
     tts.stop(); 
     tts = null; 
    } 
} 

}

當U調用說()方法,它看起來像這樣

AccessibilityUtil.getInstance().say("Loading. Please wait"); 

希望它可以幫助