2014-07-14 56 views
0

我使用的RecognizerIntent工作得很好(請參閱下面的函數)。我想要的是在離線模式下運行。如果RecognizerIntent不是一個好的解決方案,那麼替代方案是什麼?此外,如果它是另一種解決方案,我將要設置語言...感謝RecognizerIntent在離線模式下

public void speak(View view) { 
     Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
     // Specify the calling package to identify your application 
     intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass() 
       .getPackage().getName()); 

     // Display an hint to the user about what he should say. 
     intent.putExtra(RecognizerIntent.EXTRA_PROMPT, metTextHint.getText() 
       .toString()); 

     // Given an hint to the recognizer about what the user is going to say 
     intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, 
       RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH); 

     // If number of Matches is not selected then return show toast message 
     if (msTextMatches.getSelectedItemPosition() == AdapterView.INVALID_POSITION) { 
      Toast.makeText(this, "Please select No. of Matches from spinner", 
        Toast.LENGTH_SHORT).show(); 
      return; 
     } 

     int noOfMatches = Integer.parseInt(msTextMatches.getSelectedItem() 
       .toString()); 
     // Specify how many results you want to receive. The results will be 
     // sorted where the first result is the one with higher confidence. 

     intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, noOfMatches); 

     startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE); 
    } 
+0

你不能特別要求脫機模式脫機工作。看到這個答案http://stackoverflow.com/a/17674655/1256219 – brandall

回答

1

您需要定義語言英語US.-

recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US"); 

現在把手機的「飛行模式」和測試。

注意 -它只會在API-16 +