因為秉持Open Source的精神 , 所以Google 發佈了許多有趣的API給開發者拿來發揮創意 , 今天在網路上找到了Google Translate API 想先簡單的搭配 Spinner 做一個翻譯機出來試試 , 由於這個API不是存在Android 的jar檔內 , 所以我們必須先下載Google Translate 的jar檔 , 接著透過Eclipse就可以import jar檔到我們的程式當中了 , 首先到這裡去下載jar檔 , 接著在Eclipse中的 Package Explorer 中選取開發的專案 > Propertires > Java Build Path > 右邊的 Libabries > Add External JARs , 成功之後就可以發現多出一個圖示: Referenced Libabries , 裡面有剛剛加入的jar檔 , 接著試程式碼的部分
package com.android; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.Spinner; import android.widget.Button; import com.google.api.translate.Language; import com.google.api.translate.Translate; public class GoogleTranslateSpinner extends Activity implements OnItemSelectedListener , Button.OnClickListener { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); AAdapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item,LanguageNameArray); AAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //ArrayAdapter設定下拉式清單內容的layout格式 //android. 開頭的範本是由Android提供的 SpinnerFrom = (Spinner) findViewById(R.id.SpinnerFrom); SpinnerFrom.setAdapter(AAdapter); SpinnerFrom.setOnItemSelectedListener(this); SpinnerTo = (Spinner) findViewById(R.id.SpinnerTo); SpinnerTo.setAdapter(AAdapter); SpinnerTo.setOnItemSelectedListener(this); EditTextFrom = (EditText) findViewById(R.id.EditTextFrom); EditTextTo = (EditText) findViewById(R.id.EditTextTo); Button = (Button) findViewById(R.id.Button); Button.setOnClickListener(this); Translate.setHttpReferrer("http://shung007.blogspot.com/"); //Translate.setHttpReferrer(" Enter the URL of your site here"); //必要!!! 否則程式會出現Exception } Spinner SpinnerFrom , SpinnerTo; EditText EditTextFrom , EditTextTo; Button Button; int positionFrom , positionTo; ArrayAdapter AAdapter; public String[] LanguageNameArray = new String[]{ "繁體中文", "CHINESE_SIMPLIFIED", "GERMAN", "ENGLISH", "JAPANESE", "FRENCH" }; //作為顯示在Spinner裡的清單內容 public Language[] LanguageCode = new Language[]{ Language.CHINESE_TRADITIONAL, Language.CHINESE_SIMPLIFIED, Language.GERMAN, Language.ENGLISH, Language.JAPANESE, Language.FRENCH }; //相對應的LanguageCode , 作為之後傳遞的引數用 @Override public void onItemSelected(AdapterView parent, View view, int position, long arg) { if(parent.equals(SpinnerFrom)) positionFrom = position; else positionTo = position; //判斷並記錄使用者選擇了哪個語言翻譯 } @Override public void onNothingSelected(AdapterView arg0) { // TODO Auto-generated method stub } @Override public void onClick(View ButtonView) { //按下Translate按鈕之後 , 執行翻譯的動作 try { EditTextTo.setText(Translate.execute(EditTextFrom.getText().toString(), LanguageCode[positionFrom], LanguageCode[positionTo])); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
值得一提的是他支持翻譯的語言相當多 , 不只我程式中列出的六個 , 從他的Language.java可以看得出來還支持哪些語言 , 另外 , 其實這個api需要透過網路把你輸入的內容傳送到資料庫進行翻譯 , 所以別忘了設定網路權限!!!!
<uses-permission android:name="android.permission.INTERNET"/>
最後是Layout的部分
整個程式很精簡但是很容易就達到我們的要求 , 因為最複雜的部分google都幫我們解決了 , 真好!
相關文章
[Android] 如何使用 TextToSpeech (TTS)
沒有留言:
張貼留言