2014年12月4日 星期四

一個.java檔 完成呼叫google語音辨識系統



只要一個.java完成呼叫google語音辨識系統

這不是很方便嗎?

接下來我們就來看一下程式碼囉!!


/***********************************************
MainActivity.java
***********************************************/


public class MainActivity extends ActionBarActivity {
private ImageButton btnspeak;  //在這裡我們就宣告一個 ImageButton 型態的 btnspeak變數
private static final String TAG = "SpeechRecognizerActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        llbtn();    //在這裡我們呼叫llbtn這麼function
     
    }
 
    //viewbtn    這裡就是我們所呼叫的llbtn的function,接下來看一下做了什麼事情
    public void llbtn() {
//這邊宣告ll 變數型態為LinearLayout
LinearLayout ll=(LinearLayout) findViewById(R.id.LinearLayout1);
//在這new ImageButton 出來
btnspeak =new ImageButton(this);
//設定ImageButton 的圖案為ic_btn_speak_now,如果要設定文字的話就要用Button型態宣告以及設定時使用setText()這個方法來作設定
btnspeak.setImageDrawable(getResources().getDrawable(drawable.ic_btn_speak_now));
//ll加入View出btnSpeak變數
ll.addView(btnspeak);
//設定 l 為btnspeak 呼叫的function
btnspeak.setOnClickListener(l);
    }
    //接下來就是呼叫語音辨識系統了
    private ImageButton.OnClickListener l=new ImageButton.OnClickListener(){

     @Override
     public void onClick(View v) {
     Intent it = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
     it.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
     RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
     it.putExtra(RecognizerIntent.EXTRA_PROMPT, "請說...");
//這裡要小心  在Android Recognizer文章中這裡是 "this.startActivityForResult(it,1);"這樣無法呼叫傳 (it ,1) 給onActivityResult這個function喔!!
     startActivityForResult(it, 1);
     }
   
   
    };
 
 
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent it) {
        if (requestCode != 1) {
            Log.d(TAG, "不是語音辨識");
            return;
        }
        if (resultCode != RESULT_OK) {
            Log.e(TAG, "語音辨識失敗");
            return;
        }
        List<String> list = it.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
        StringBuilder text = new StringBuilder();
        for (String s : list) {
            text.append(s + "\n");
        }

    }
 
 
     

   
 
/**************************************************************/

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}




這樣是不是簡單多了呢!!





沒有留言:

張貼留言