1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình Android: Tạo từ điển [FULL] pdf

11 690 13

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 311 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

PHẦ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 3

android: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 4

Khi 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 5

Cuố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 6

public 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 8

import 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 9

langShortNames =

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 10

Log.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 11

Và 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.

Ngày đăng: 08/08/2014, 08:22

TỪ KHÓA LIÊN QUAN

w