2014-04-22 7 views
0

다음 코드를 사용하여 텍스트를 인식하고 있습니다. 처음에는 인식을위한 언어를 선택하는 대화 상자를 호출합니다. 그 인수를 RecognizerIntent에 전달합니다. 불행히도 "en-US"만이 내 전화기에서 인식됩니다 ("fr-FR"및 "ru-RU"도 시도 함). 이미 완료되지 않은 작업이 있거나 작업 언어로 목록을 좁힐 수 있습니까?Android SpeechRecognizer는 영어 만 인식 할 수 있습니까?

코드

public void recognize(View v) { 
      Intent detailsIntent = new Intent(
        RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS); 
      sendOrderedBroadcast(detailsIntent, null, new LanguageDetailsChecker(
        context), null, Activity.RESULT_OK, null, null); 

     } 
private class LanguageDetailsChecker extends BroadcastReceiver { 
     Context contextApp; 

     public LanguageDetailsChecker(Context context) { 
      this.contextApp = context; 
     } 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      Bundle results = getResultExtras(true); 
      ArrayList<String> languages = new ArrayList<String>(); 
      if (results.containsKey(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE)) { 
       languagePreference = results 
         .getString(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE); 
      } 
      if (results.containsKey(RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES)) { 
       languages = results 
         .getStringArrayList(RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES); 
      } 

      supportedLanguages = new String[languages.size()]; 
      supportedLanguages = languages.toArray(supportedLanguages); 
      AlertDialog.Builder b = new Builder(contextApp); 
      for (String s : supportedLanguages) { 
       Log.d("Supported languages", s); 
      } 
      b.setTitle("Choose your language"); 
      b.setItems(supportedLanguages, new OnClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int which) { 

        dialog.dismiss(); 
        chooseLanguage(which); 

       } 

      }); 

      b.show(); 
     } 

     private void chooseLanguage(int i) { 
      int which = i; 
      Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 

      intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, 
        supportedLanguages[which]); 
      intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, 
        supportedLanguages[which]); 
      intent.putExtra(
        RecognizerIntent.EXTRA_ONLY_RETURN_LANGUAGE_PREFERENCE, 
        supportedLanguages[which]); 
      Log.d("Languages choosen", supportedLanguages[which]); 
      startActivityForResult(intent, 300); 
     } 
    } 

답변

0

Proble 잘못 엑스트라에 의해 원인이었다. 바꾸기 방법

private void chooseLanguage(int i) { 
      int which = i; 
      Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 

      intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, 
        supportedLanguages[which]); 
      intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, 
        supportedLanguages[which]); 
      Log.d("Languages choosen", supportedLanguages[which]); 
      startActivityForResult(intent, 300); 
     }