2011-09-27 44 views
19

Tôi đang làm việc trên đầu vào bằng giọng nói trong Android. Tôi đã sử dụng mẫu từNhập bằng giọng nói để điền văn bản chỉnh sửa trong Android?

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

Và trong khi thử nghiệm trên Xperia X10, tôi đã "Nói ngay bây giờ" hộp thoại nhưng trước khi tôi nhập một số bằng giọng nói nó được đóng lại. Tôi đang cố triển khai tìm kiếm bằng giọng nói, ví dụ: Nếu giọng nói đầu vào là James Bond sau đó tôi muốn cư trú James trong tên đầu tiên Chỉnh sửa văn bản và trái phiếu trong Last Name Edit Text. Mà sẽ tìm kiếm trong cơ sở dữ liệu cho tên. Nhưng trong khi cố gắng sử dụng mẫu Bản trình diễn API, nó không hoạt động. Có thể tôi đang thiếu cái gì đó. Ai sẽ gửi bất kỳ mẫu nào cho nhập liệu bằng giọng nói chứ không phải mẫu ApiDemos.

Xin cảm ơn trước.

Trả lời

17

Bạn có thể sử dụng mã sau để nhận dạng giọng nói. Để biết hướng dẫn hoàn chỉnh về nhận dạng giọng nói, 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); 
} 
} 
Các vấn đề liên quan