2011-09-27 62 views
19

我正在使用android中的語音輸入。我用的樣品從語音輸入在android中填充編輯文本?

http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/VoiceRecognition.html

而且在測試上Xperia X10的,我得到了「現在講」對話框,但我輸入了一些聲音,然後纔會慢慢關閉。我正在嘗試執行語音搜索,例如如果語音輸入是詹姆斯邦德,那麼我想要填寫詹姆斯的名字編輯文本和邦德在姓氏編輯文本。它將在數據庫中搜索名稱。但在嘗試使用API​​ Demo示例時,它不起作用。可能是我錯過了一些東西。任何人都會發布任何聲音輸入樣本,而不是ApiDemos樣本。

在此先感謝。

回答

17

您可以使用以下代碼進行語音識別。有關語音識別的完整教程,請致電Click Here

import android.app.Activity; 
import android.os.Bundle; 
import android.content.Intent; 
import android.content.pm.PackageManager; 
import android.content.pm.ResolveInfo; 
import android.speech.RecognizerIntent; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 
import java.util.ArrayList; 
import java.util.List; 

/** 
* A very simple application to handle Voice Recognition intents 
* and display the results 
*/ 
public class VoiceRecognitionDemo extends Activity 
{ 

private static final int REQUEST_CODE = 1234; 
private ListView wordsList; 

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

    Button speakButton = (Button) findViewById(R.id.speakButton); 

    wordsList = (ListView) findViewById(R.id.list); 

    // Disable button if no recognition service is present 
    PackageManager pm = getPackageManager(); 
    List<ResolveInfo> activities = pm.queryIntentActivities(
      new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0); 
    if (activities.size() == 0) 
    { 
     speakButton.setEnabled(false); 
     speakButton.setText("Recognizer not present"); 
    } 
} 

/** 
* Handle the action of the button being clicked 
*/ 
public void speakButtonClicked(View v) 
{ 
    startVoiceRecognitionActivity(); 
} 

/** 
* Fire an intent to start the voice recognition activity. 
*/ 
private void startVoiceRecognitionActivity() 
{ 
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, 
      RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
    intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Voice recognition Demo..."); 
    startActivityForResult(intent, REQUEST_CODE); 
} 

/** 
* Handle the results from the voice recognition activity. 
*/ 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) 
    { 
     // Populate the wordsList with the String values the recognition engine thought it heard 
     ArrayList<String> matches = data.getStringArrayListExtra(
       RecognizerIntent.EXTRA_RESULTS); 
     wordsList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, 
       matches)); 
    } 
    super.onActivityResult(requestCode, resultCode, data); 
} 
}