因為秉持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)

沒有留言:
張貼留言