PHẦN MỀM TỪ ĐIỂNBây giờ chắc các bạn không còn xa lạ với việc sử dụng từ điển trên điện thoại di động.. Và sau đây mình sẽ dựa vào thư viện của Apache để xây dựng từ điển trên Android c
Trang 1PHẦN MỀM TỪ ĐIỂN
Bây giờ chắc các bạn không còn xa lạ với việc sử dụng từ điển trên điện thoại di động Các phần mềm từ điển trên điện thoại di động đã nhanh chóng được người dùng chú ý
và sử dụng vì sự tiện lợi của nó so với kim từ điển hay từ điển giấy Và sau đây mình
sẽ dựa vào thư viện của Apache để xây dựng từ điển trên Android cho 6 ngôn ngữ phổ biến nhất (Anh,Pháp,Đức,Trung,Nhật,Tây Ban Nha ) Bộ thư viện này không có hỗ trợ tiếng Việt nên cũng hơi đáng tiếc Nhưng bạn có thể hoàn toàn tìm và thay thế bằng bộ thư viện có chứa Tiếng Việt để sữ dụng trên chính điện thoại của mình Và các bạn làm như sau:
1/ Tạo 1 Project :
Project name: TranslateDemo
Build Target: Android 2.3.3
Application name: TranslateDemo
Package name: com.dac.translation
Create Activity: MainActivity
2/ Tạo các tài nguyên hỗ trợ ứng dụng, bắt đầu với file strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<! This file is /res/values/strings.xml >
<resources>
</resources>
Tiếp theo tạo thêm 1 file arrays.xml cũng trong folder values/:
<?xml version="1.0" encoding="utf-8"?>
<! This file is /res/values/arrays.xml >
<resources>
<string-array name="languages">
<item>Chinese</item>
<item>English</item>
<item>French</item>
<item>German</item>
<item>Japanese</item>
<item>Spanish</item>
</string-array>
<string-array name="language_values">
Trang 2<item>zh</item>
<item>en</item>
<item>fr</item>
<item>de</item>
<item>ja</item>
<item>es</item>
</string-array>
</resources>
3/ Các bạn thiết kế giao diện trong file main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_height="fill_parent"
android:layout_width="fill_parent">
<EditText android:id="@+id/input"
android:hint="@string/input"
android:layout_height="wrap_content"
android:layout_width="fill_parent" />
Trang 3android:layout_below="@id/from" />
</RelativeLayout>
4/ Khai báo trong file AndroidManifest.xml để hỗ trợ truy cap Internet và các services:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
<intent-filter>
</intent-filter>
</activity>
<intent-filter>
</intent-filter>
</service>
</application>
</manifest>
5/ Tiếp theo là phần quan trọng nhất là tải về và sữ dụng thư viện của Apache, và sau này khi muốn dùng các thư viện bên ngoài các bạn cũng làm tương tự cách sau:
+ Truy cập trang web: http://commons.apache.org/lang/download_lang.cgi để down bộ Commons-lang (hiện tại thì mình đang tải bộ “commons-lang3-3.0.1-bin.zip”).
Trang 4Khi down xong các bạn giải nén sẽ đc 1 folder chứa 2 file JAR Các bạn vào lại
Eclipse bấm chuột phải vào Project chọn Build Path >> Configure Build Path Khi cửa
sổ Java Build Path mở ra các bạn chọn thẻ Libraries và chọn Add External Jars… kế tiếp các bạn chỉ việc chọn file JAR vừa giải nén(file ko có chữ Test ) và bấm Open sẽ được như sau:
Khi đã add vào 1 thư viện thì các bạn chuyển qua thẻ Orderand Exprort để sử dụng thư viện:
Trang 5Cuối cùng các bạn kiểm tra để chắc chắn rằng thư viện đã add vào Project:
Khi đã thêm thư viện vào thì các bạn chuyển qua bước tiếp theo.
6/ Trogn Package chính các bạn tạo thêm 3 file: TranslateService.java, Translator.java Itranslate.aidl Và có code lần lượt như sau:
+ Translator.java:
package com.androidbook.translation;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import org.apache.commons.lang3.StringEscapeUtils;
import org.json.JSONObject;
import android.util.Log;
Trang 6public class Translator {
"http://ajax.googleapis.com/ajax/services/language/translate?
v=1.0&langpair=";
private static final String MY_SITE = "http://my.website.com";
private static final String TAG = "Translator";
public static String translate(String text, String from, String to)
throws Exception {
try { StringBuilder url = new StringBuilder();
ENCODING));
HttpURLConnection conn = (HttpURLConnection) new URL(url.toString()).openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
try { InputStream is= conn.getInputStream();
String rawResult = makeResult(is);
JSONObject json = new JSONObject(rawResult);
String result = ((JSONObject)json.get("responseData")).getString("translatedText"); return (StringEscapeUtils.unescapeXml(result));
} finally { conn.getInputStream().close();
if(conn.getErrorStream() != null)
} } catch (Exception ex) { throw ex;
} } private static String makeResult(InputStream inputStream) throws Exception {
StringBuilder outputString = new StringBuilder();
try { String string;
if (inputStream != null) { BufferedReader reader = new BufferedReader(new
while (null != (string = reader.readLine())) { outputString.append(string).append('\n');
}
Trang 7} } catch (Exception ex) {
} return outputString.toString();
} } + TranslateService.java :
package com.androidbook.translation;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
public class TranslateService extends Service {
private final ITranslate.Stub mBinder = new ITranslate.Stub() { public String translate(String text, String from, String to) { try {
return Translator.translate(text, from, to);
} catch (Exception e) {
return null;
} } };
@Override public IBinder onBind(Intent intent) { return mBinder;
} }
+ Itranslate.aidl :
package com.androidbook.translation;
interface ITranslate { String translate(in String text, in String from, in String to); }
+ MainActivity.java :
package com.androidbook.translation;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
Trang 8import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
public class MainActivity extends Activity implements OnClickListener {
private EditText inputText = null;
private TextView outputText = null;
private Spinner fromLang = null;
private Spinner toLang = null;
private Button translateBtn = null;
private String[] langShortNames = null;
private Handler mHandler = new Handler();
private ITranslate mTranslateService;
private ServiceConnection mTranslateConn = new ServiceConnection() { public void onServiceConnected(ComponentName name, IBinder service) { mTranslateService = ITranslate.Stub.asInterface(service);
if (mTranslateService != null) {
translateBtn.setEnabled(true);
} else {
translateBtn.setEnabled(false);
}
}
public void onServiceDisconnected(ComponentName name) {
translateBtn.setEnabled(false);
mTranslateService = null;
}
};
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
Trang 9langShortNames =
translateBtn.setOnClickListener(this);
ArrayAdapter<?> fromAdapter = ArrayAdapter.createFromResource(this,
e);
fromLang.setAdapter(fromAdapter);
ArrayAdapter<?> toAdapter = ArrayAdapter.createFromResource(this,
;
toLang.setAdapter(toAdapter);
inputText.selectAll();
}
@Override
protected void onDestroy() {
super.onDestroy();
unbindService(mTranslateConn);
}
public void onClick(View v) {
if (inputText.getText().length() > 0) {
doTranslate();
}
}
private void doTranslate() {
mHandler.post(new Runnable() {
public void run() {
String result = "";
try {
String input = inputText.getText().toString();
if(input.length() > 5000)
Trang 10Log.v( TAG,"Translating from " +
langShortNames[fromPosition] + " to " + langShortNames[toPosition]);
result = mTranslateService.translate(input,
langShortNames[fromPosition], langShortNames[toPosition]);
if (result == null) {
throw new Exception("Failed to get a translation"); }
outputText.setText(result);
inputText.selectAll();
} catch (Exception e) {
}
}
});
}
}
Cuối cùng các bạn chỉ còn debug ứng dụng và nhận được nhu sau:
Bấm vào chọn ngôn ngữ:
Trang 11Và khi ta dịch:
Mọi ý kiến đóng góp các bạn vui lòng gữi bài viết về forum trang web www.laptrinhdidong.vn Rất mong nhận được phản hồi từ các bạn.