Android-語音識別

package com.cn.control;

import java.util.ArrayList;
import java.util.List;

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

public class MainActivity extends Activity implements android.view.View.OnClickListener{
    /** Called when the activity is first created. */
	private ListView mListView;
	private static int request_code = 1234;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        Button button = (Button) findViewById(R.id.button0);
        mListView = (ListView) findViewById(R.id.listview0);
        
        PackageManager pManager = getPackageManager();
        List<ResolveInfo> list = pManager.queryIntentActivities(
        		new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);
        /*if(list.size()!=0){
        	button.setOnClickListener(this);
        }
        else {
        	button.setEnabled(false);
        	button.setText("wrong");
		}*/
        
        button.setOnClickListener(this);
    }

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		if(v.getId() == R.id.button0)
		{
			Log.v("message","Start");
			startvoicerecognitionactivity();
		}
	}
	
	private void startvoicerecognitionactivity()
	{
		Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
		Log.v("message","First");
		intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
		Log.v("message","Second");
		intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "speech recognition demo");
		Log.v("message","Third");
		
		/*
		 * 此處Log出現跳轉不了的情況
		 * 可能是因爲模擬器的原因
		 */
		
		startActivityForResult(intent, request_code);
		Log.v("message","End");
	}
	
	
	//Activity的回調方法
	public void onActivityResult(int requestcode,int resultcode,Intent data)
	{
		if(requestcode == request_code && resultcode == RESULT_OK)
		{
			ArrayList<String>	matchArrayList = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
	        mListView.setAdapter(
	        		new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,matchArrayList));
		}
		
		super.onActivityResult(requestcode, resultcode, data);
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章