2012-05-16 26 views
3

我很难让这个工作。我只是想找出语音识别支持的所有可用语言,以及使用它的代码。语音识别 - 获取所有语言 - Android

​​

这应该汇报G上的讲话识别测试服务器上的所有可用语言作为一个数组。不幸的是,我甚至无法把它吐出来。我主要是遇到了我认为的BroadcastReceiver问题。

package com.thatll.ddo; 

import java.util.ArrayList; 
import java.util.logging.Logger; 

import android.app.Activity; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.speech.RecognizerIntent; 
import android.util.Log; 
import android.widget.Toast; 

public class RecogtestActivity extends Activity { 
    private static final int VOICE_RECOGNITION_REQUEST_CODE = 1234; 



/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Log.i("Log", "startVoiceRecognitionActivity"); 
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
    intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "speech recognition demo"); 

    startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE); 
} 


@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) { 

    Intent intent = new Intent(RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS); 
    LangBroadcastReceiver myBroadcastReceiver = new LangBroadcastReceiver(this, data.getStringArrayListExtra(RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES)); 
    sendOrderedBroadcast(intent, null, myBroadcastReceiver, null, Activity.RESULT_OK, null, null); 

    } else { 
    Toast.makeText(getApplicationContext(), "Voice recognition failed.", Toast.LENGTH_LONG).show(); 
    } 
    super.onActivityResult(requestCode, resultCode, data); 
} 



/** 
* After a voice recognition is performed, need to sent a broadcast to 
* request the language used. This BroadcastReceiver gets the response and 
* then processes the original recognisedText from the 
* ACTION_RECOGNIZE_SPEECH Intent. 
* 
*/ 
public class LangBroadcastReceiver extends BroadcastReceiver { 
    ArrayList<String> recognisedText; 
    Activity parentActivity; 

    /** 
    * Store these for later use... 
    * @param activity 
    * @param arrayList 
    */ 
    LangBroadcastReceiver(Activity activity, ArrayList<String> arrayList) { 
    recognisedText = arrayList; 
    parentActivity = activity; 
    } 

    @Override 
    public void onReceive(Context context, Intent intent) { 
    Bundle results = getResultExtras(true); 
    String lang = results.getString(RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES); 
    Log.d("log", "MyBroadcastReceiver: Got 'EXTRA_LANGUAGE_PREFERENCE' = " + lang); 
    // now handle the recognisedText with the known language. 

    ArrayList<CharSequence> hints = getResultExtras(true) 
      .getCharSequenceArrayList(
        RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES); 

    Log.d("log", "MyBroadcastReceiver: Got 'EXTRA_LANGUAGE_PREFERENCE' = " + hints); 

    } 

}} 

我想知道这是为什么不工作,但在这一点上我是一样高兴,如果我得到了目前支持的语言的完整列表。尝试了各种不同的方法,现在开始困扰着我。

感谢所有帮助

+0

你有什么错误? – gregm

回答