Tải bản đầy đủ (.docx) (31 trang)

Báo cáo Java Android Eclipse Lập trình ứng dụng học tiếng anh trên Android

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (533.14 KB, 31 trang )

LỜI CẢM ƠN
Đồ án môn học với những môn lập trình là khá phổ biến với sinh viên khoa Tin để
tự thống kê kiến thức và lên ý tưởng cho những chương trình của mình. Đó là yêu cầu và
cũng là thách thức đối với sinh viên khi làm quen với thực hành từ những kiến thức lý
thuyết sách vở.
Để cho chúng em có thể nắm chắc kiến thức và tiếp cận thực tế với một sản phẩm
phần mềm, chúng em đã nhận được sự giúp đỡ tận tình từ thầy Vũ Đức Minh giáo viên
hướng dẫn chúng em trong đồ án này, cùng với sự góp ý của một số thành viên trong lớp
để đố án của chúng em được hoàn thành.
Nhưng do có những hạn chế về kiến thức và kinh ngiệm tìm hiểu thực tế chưa có
nên đồ án của em còn nhiều sai sót. Chúng em rất mong nhận được sự chỉ bảo, giúp đỡ
của các thầy cô giáo và các bạn để bài của chúng em được hoàn thiện hơn. Điều quan
trọng là những ý kiến của thầy cô giáo sẽ giúp chúng em có thêm hiểu biết và kinh
nghiệm để phục vụ cho những đồ án sau này.
Cuối cùng chúng em xin gửi lời cảm ơn đến thầy hướng dẫn Vũ Đức Minh đã giúp
chúng em trong quá trình làm đồ án vừa qua.
Chúng em xin chân thành cảm ơn!
Hà Nội, Ngày 28 tháng 12 năm 2014
Sinh viên thực hiện
MỤC LỤC
DANH MỤC HÌNH ẢNH
DANH MỤC BẢNG
LỜI MỞ ĐẦU
Hiện nay tiếng Anh được coi là ngôn ngữ quốc tế số một trên thế giới. Hàng triệu
người từ các nền văn hóa khác nhau đều nỗ lực học tiếng anh mỗi ngày. Ở Việt Nam,
tiếng anh cũng đã chiếm đưuọc vị trí quan trọng kể từ khi đất nước mở cửa hội nhập ra
khu vực và thế giới. Ở nhiều lĩnh vực khác nhau như kinh tế, chính trị, khoa học, du lịch
vv… đều rất cần những người có trình độ tiếng Anh giỏi. Cùng với đó, sự phát triển của
công nghệ di động đã bùng nổ trong vài năm qua. Các thiết bị cầm tay đã trở nên mạnh
mẽ và rất phổ biến. Trong vài năm trở lại đây, hệ điều hành Android ra đời và trở thành
nền tảng điện thoại thong minh phổ biến nhất trên thế giới, với sự kế thừa những ưu việt


của các hệ điều hành ra đời trước và sự kết hợp của nhiều công nghệ tiên tiến nhất hiện
nay. Đồng thời Android có mã nguồn mở cho phép các nhà phát triển thiết bị, mạng di
động và các lập trình viên được điều chỉnh và phân phối Android một cách tự do.
Trước nhu cầu và lợi thế, chúng em quyến định chọn đề tài “Lập trình Ứng dụng
học Tiếng Anh trên Android” nhằm tìm hiểu sâu hơn về ngôn ngữ android, từ đó viết
một ứng dụng cụ thể thử nghiệm làm cơ sở củng cố kiến thức và định hướng, kế hoạch
xây dựng những ứng dụng game cụ thể, phát triển theo dịch vụ trong tương lai.
Trong quá trình giảng dạy, nhờ có sự hướng dẫn tận tình của thầy giáo Vũ Đức
Minh chúng em đã hoàn thành được đề tài Lập trình Ứng dụng học Tiếng Anh trên
Android.
Trong quá trình làm đề tài, dù đã rất cố gắng tìm hiểu nhưng vẫn không tránh khỏi
sai sót và chưa hoàn thiện hết các chức năng. Chính vì vậy chúng em mong được sự đóng
góp ý kiến của các thầy cô.
Chúng em xin chân thành cảm ơn
CHƯƠNG 1: GIỚI THIỆU VỀ NGÔN NGỮ JAVA VÀ ANDROID
1.1 NGÔN NGỮ JAVA
1.1.1. Khái niệm Java.
Java là ngôn ngữ lập trình hướng đối tượng (tựa C++) do Sun Microsystem đưa ra
vào giữa thập niên 90. Chương trình viết bằng ngôn ngữ lập trình java có thể chạy trên
bất kỳ hệ thống nào có cài máy ảo java (Java Virtual Machine).
Java (đọc như "Gia-va") là một ngôn ngữ lập trình dạng lập trình hướng đối tượng
(OOP). Khác với phần lớn ngôn ngữ lập trình thông thường, thay vì biên dịch mã
nguồnthành mã máy hoặc thông dịch mã nguồn khi chạy, Java được thiết kế để biên
dịch mã nguồn thành bytecode, bytecode sau đó sẽ được môi trường thực thi (runtime
environment) chạy. Bằng cách này, Java thường chạy chậm hơn những ngôn ngữ lập
trình thông dịch khác như C++, Python, Perl, PHP, C#
Cú pháp Java được vay mượn nhiều từ C & C++ nhưng có cú pháp hướng đối
tượng đơn giản hơn và ít tính năng xử lý cấp thấp hơn. Do đó việc viết một chương
trình bằng Java dễ hơn, đơn giản hơn, đỡ tốn công sửa lỗi hơn. Dùng bộ thư viện
chuẩn KFC, nhiều đoạn code Java chỉ mất vài dòng trong khi C phải mất cả trang giấy.

Lập trình C rất hay xảy ra lỗi và khó sửa. Trong Java, hiện tượng dò rỉ bộ nhớ hoàn
toàn có thể tránh bằng cách định nghĩa vài preprocessor directives như #define .
1.1.2. Lịch sử.
Java được khởi đầu bởi James Gosling và bạn đồng nghiệp ở Sun
Microsystems năm1991. Ban đầu ngôn ngữ này được gọi là Oak (có nghĩa là cây sồi; do
bên ngoài cơ quan của ông Gosling có trồng nhiều loại cây này), họ dự định ngôn ngữ
đó thay choC++, nhưng các tính năng giống Objective C. Không nên lẫn lộn Java
với JavaScript, hai ngôn ngữ đó chỉ giống tên và loại cú pháp như C. Công ty Sun
Microsystems đang giữ bản quyền và phát triển Java thường xuyên. Tháng 04/2011,
công ti Sun Microsystems tiếp tục cho ra bản JDK 1.6.24.
Java được tạo ra với tiêu chí "Viết (code) một lần, thực thi khắp nơi" ("Write Once,
Run Anywhere" (WORA)). Chương trình phần mềm viết bằng Java có thể chạy trên
mọi nền tảng (platform) khác nhau thông qua một môi trường thực thi với điều kiện có
môi trường thực thi thích hợp hỗ trợ nền tảng đó. Môi trường thực thi của Sun
Microsystems hiện hỗ trợ Sun Solaris, Linux, Mac OS, FreeBSD & Windows. Ngoài ra, một
số công ty, tổ chức cũng như cá nhân khác cũng phát triển môi trường thực thi Java
cho những hệ điều hành khác như BEA, IBM, HP . Trong đó đáng nói đến nhất là
IBM Java Platform hỗ trợ Windows, Linux, AIX & z/OS.
Những chi tiết về ngôn ngữ, máy ảo và API của Java được giữ bởi Cộng đồng
Java (doSun quản lý). Java được tạo ra vào năm 1991 do một số kỹ sư ở Sun, bao gồm
5 | P a g e
ông James Gosling, một phần của Dự án Xanh (Green Project). Java được phát hành
vào năm 1994, rồi nó trở nên nổi tiếng khi Netscape tuyên bố tại hội thảo SunWorld
năm1995 là trình duyệt Navigator của họ sẽ hỗ trợ Java. Về sau Java được được hỗ trợ
trên hầu hết các trình duyệt như Internet Explorer (Microsoft), Firefox (Mozilla),
Safari (Apple)…
Java được sử dụng chủ yếu trên môi trường NetBeans và Oracle. Sau
khi Oracle mua lại công ty Sun Microsystems năm 2009-2010, Oracle đã mô tả họ là
"người quản lý công nghệ Java với cam kết không ngừng để bồi dưỡng một cộng đồng
tham gia và minh bạch".

1.1.3 Một số đặc điểm nổi bật của ngôn ngữ lập trình Java
 Máy ảo Java (JVM-Java Virtual Machine)
Tất cả các chương trình muốn thực thi được thì phải biên dịch ra mã máy. Mã máy
của từng kiến trúc CPU của mỗi máy tính là khác nhau (tập lệnh mã máy của CPU
Intel, CPU Solarix, CPU Macintosh… là khác nhau), vì vậy trước đây một chương
trình sau khi được biên dịch xong chỉ có thể chạy được trên một kiến trúc CPU cụ thể
nào đó. Đối với CPU Intel chúng ta có thể chạy các hệ điều hành như Microsoft
Windows, Unix, Linux, OS/2,… Chương trình thực thi được trên Windows được biên
dịch dưới dạng file có đuôi .EXE, còn trên Linux thì được biên dịch dưới dạng file có
đuôi .ELF, vì vậy trước đây một chương trình chạy được trên Windows muốn chạy
được trên hệ điều hành khác như Linux chẳng hạn thì phải chỉnh sửa và biên dịch lại.
Ngôn ngữ lập trình Java ra đới, nhờ vào máy ảo Java mà khó khăn trên đã được khắc
phục. Một chương trình viết bằng ngôn ngữ Java sẽ được biên dịch sang mã của máy
ảo java (mã java bytecode). Sau đó máy ảo Java chịu trách nhiệm chuyển mã java
bytecode thành mã máy tương ứng. Sun Microsystem chịu trách nhiệm phát triển các
máy ảo Java chạy trên các hệ điều hành kiến trúc CPU khác nhau.
 Thông dịch
Java là một ngôn ngữ lập trình vừa biên dịch vừa thông dịch. Chương trình nguồn
viết bằng ngôn ngữ Java có đuôi *.java đầu tiên được biên dịch thành tập tin có đuôi
*.class và sau đó sẽ được trình thông dịch thông dịch thành mã máy.
 Độc lập nền:
Một chương trình viết bằng ngôn ngữ Java có thể chạy trên nhiều máy tính có hệ
điều hành khác nhau (Windows, Unix, Linux,…) miễn sao ở đó có cài đặt máy ảo java
(Java Virtual Machine). Viết một lần chạy mọi nơi (Write once run anywhere).
 Hướng đối tượng:
Hướng đối tượng trong Java tương tự như C++ nhưng Java là một ngôn ngữ lập
trình hướng đối tượng hoàn toàn. Tất cả mọi thứ đề cập đến trong Java đều liên quan
đến các đối tượng được định nghĩa trước, thậm chí hàm chính của một chương trình
6 | P a g e
viết bằng Java (đó là hàm main) cũng phải đặt bên trong một lớp. Hướng đối tượng

trong Java không có tính đa kế thừa (multi inheritance) như trong C++ mà thay vào đó
Java đưa ra khái niệm interface để hỗ trợ tính đa kế thừa.
 Đa nhiệm – đa luồng (MultiTasking - Multithreading):
Java hỗ trợ lập trình đa nhiệm, đa luồng cho phép nhiều tiến trình, tiểu trình có thể
chạy song song cùng một thời điểm và tương tác với nhau.
 Khả chuyển (portable):
Chương trình ứng dụng viết bằng ngôn ngữ Java chỉ cần chạy được trên máy ảo
Java là có thể chạy được trên bất kỳ máy tính, hệ điều hành nào có máy ảo Java.
 Hỗ trợ mạnh cho việc phát triển ứng dụng:
Công nghệ Java phát triển mạnh mẽ nhờ vào “đại gia Sun Microsystem” cung cấp
nhiều công cụ, thư viện lập trình phong phú hõ trợ cho việc phát triển nhiều loại hình
ứng dụng khác nhau cụ thể như: J2SE (Java 2 Standard Editition) hỗ trợ phát triển
những ứng dụng đơn, ứng dụng client-server; J2EE (Java 2 Enterprise Editition) hỗ trợ
phát triển các ứng dụng thương mại, J2ME (Java 2 Micro Editition) hỗ trợ phát triển
các ứng dụng trên các thiết bị di động, không dây, …
1.2 Dịch và thực thi một chương trình viết bằng Java
Việc xây dựng, dịch và thực thi một chương trình viết bằng ngôn ngữ lập trình java có
thể tóm tắt qua các bước sau:
 Viết mã nguồn: dùng một chương trình soạn thảo nào đấy (NotePad hay Jcreator
chẳng hạn) để viết mã nguồn và lưu lại với tên có đuôi “.java”
 Biên dịch ra mã máy ảo: dùng trình biên dịch javac để biên dịch mã nguồn “.java”
thành mã của máy ảo (javabytecode) có đuôi “.class” và lưu lên đĩa.
 Thông dịch và thực thi: ứng dụng được load vào bộ nhớ, thông dịch và thực thi
dùng trình thông dịch Java thông qua lệnh “java”.
o Đưa mã java byte code vào bộ nhớ: đây là bước“loading”. Chương trình
phải được đặt vào trong bộ nhớ trước khi thực thi. “Loader” sẽ lấy các files
chứa mã java bytecode có đuôi “.class” và nạp chúng vào bộ nhớ.
o Kiểm tra mã java bytecode: trước khi trình thông dịch chuyển mã
bytecode thành mã máy tương ứng để thực thi thì các mã bytecode phải được
kiểm tra tính hợp lệ.

o Thông dịch & thực thi: cuối cùng dưới sự điều khiển của CPU và trình
thông dịch tại mỗi thời điểm sẽ có một mã bytecode được chuyển sang mã
máy và thực thi.
1.1.4 Công cụ lập trình và chương trình dịch
- J2SDK
Download J2SE phiên bản mới nhất tương ứng với hệ điều hành đang sử
dụng từ địa chỉ và cài đặt lên máy tính (phiên bản được chúng
7 | P a g e
tôi sử dụng khi viết giáo trình này là J2SE 1.4). Sau khi cài xong, chúng ta cần cập
nhật đường dẫn PATH hệ thống chỉ đến thư mục chứa chương trình dịch của ngôn
ngữ java.
- Công cụ soạn thảo mã nguồn Java
Để viết mã nguồn java chúng ta có thể sử dụng trình soạn thảo NotePad,
Netbean, Eclipse hoặc một số môi trường phát triển hỗ trợ ngôn ngữ java như:
Jbuilder của hãng Borland, Visual Cafécủa hãng Symantec, JDevel opercủa hãng
Oracle, Visual J++ của Microsoft, …
1.2 KHÁI QUÁT VỀ ANDROID :
1.2.1 Giới thiệu khái quát về android :
Thiết bị Android được phân phối đang có tốc độ tăng trưởng nhanh hơn bất kỳ
nền tảng di động khác, điều đó giúp Android trở thành một sự lựa chọn tuyệt vời
trong hành trình phát triển ứng dụng trên điện thoại di động, đặc biệt là nếu bạn là
một nhà phát triển Java. Một nhược điểm lớn của ứng dụng Android là sự phân
mảnh, trong đó trình bày những thách thức đáng kể cho các ứng dụng thử nghiệm.
Thực tế cho thấy là hầu hết các nhà phát triển ứng dụng gần như không thể kiểm tra
một ứng dụng cho mọi thiết bị Android cho đến các phiên bản hệ điều hành. (Trong
thực tế, làm như vậy theo một cách hiệu quả kinh tế chính là sự phát triển của
ngành công nghiệp dịch vụ.) Phần sau của bài viết sẽ nhìn vào các vấn đề kỹ thuật
liên quan đến việc xuất ra nhiều phiên bản Android, cộng với các công cụ dựa trên
Java để thử nghiệm các ứng dụng Android trên điện thoại di động. Bây giờ, chúng
ta hãy cùng khảo sát qua các phiên bản Android để bạn có thể hiểu và phát triển

ứng dụng trên nền tảng này.
1.2.2 Kiến trúc của android :
Đôi khi không cần phải hiểu rõ kiến trúc của Android ta vẫn có thể viết được
ứng dụng chạy trên hệ điều hành này. Đây cũng chính là điều mà nhà sản xuất
muốn khi họ phát hành bộ SDK đi kèm với framework của họ. Và điều này có cả
mặt tốt lẫn xấu. Framework nằm ở tầng cao cấp dành cho lập trình viên, giúp họ tạo
ra các ứng dụng phổ biến nhưng rất khó dùng nó để tạo ra các ứng dụng đi sâu vào
hệ thống của hệ điều hành. Vì thế chúng ta nên tìm hiểu về cấu trúc của android để
có cái nhìn toàn diện hơn về hệ điều hành này.
1.2.3 Máy ảo Dalvik
Một trong những thành phần quan trọng của Android là máy ảo Dalvik. Thay vì
sử dụng máy ảo Java như trước kia Android sử dùng máy ảo của riêng nó được thiết
kế để bảo đảm rằng đa ứng dụng có thể chạy mượt mà trên một thiết bị di động.
8 | P a g e
Máy ảo Dalvik sử dụng lõi Linux để xử lý các chức năng ở mức thấp bao gồm
bảo mật, các tiến trình, các luồng và quản lý vùng nhớ. Nó cũng có thể viết bằng
ứng dụng C/C++ để chạy trực tiếp lên lõi Linux bên dưới. Giữa phần cứng và các
dịch vụ hệ thống được quản lý bởi máy ảo Dalvik, nó là một thành phần ở giữa.
Bằng cách sử dụng máy ảo này để chạy ứng dụng, các nhà phát triển hoàn toàn
không phải bận tâm gì về các phần cứng bên dưới. Khi máy ảo này chạy nó sẽ tạo ra
tập tin có đuôi là .dex, tập tin này được SDK tạo ra bởi sự chuyển đổi từ các lớp
biên dịch ngôn ngữ Java.
1.2.4 Các thành phần cơ bản để tạo nên một ứng dụng Android
o Activity:hiểu một cách đơn giản thì Activity là nền của 1 ứng dụng. Khi khởi
động 1 ứng dụng Android nào đó thì bao giờ cũng có 1 main Activity được gọi,
hiển thị màn hình giao diện của ứng dụng cho phép người dùng tương tác.
o Service: thành phần chạy ẩn trong Android từ lúc chạy đến khi thiết bị cầm tay
tắt đi. Service sử dụng để update dữ liệu, đưa ra các cảnh báo (Notification) và
không bao giờ hiển thị cho người dùng thấy.
o Content Provider: được tạo ra để quản lý và chia sẻ dữ liệu với các hoạt động,

dịch vụ khác.
o Intent: nền tảng để truyền tải các thông báo. Intent được sử dụng để gửi các
thông báo đi nhằm khởi tạo 1 Activity hay Service để thực hiện công việc bạn
mong muốn.
o Broastcast Receiver: thành phần thu nhận các Intent bên ngoài gửi tới.
o Notification: đưa ra các cảnh báo mà không làm cho các Activity phải ngừng
hoạt động.
 Vòng đời của một Activity
o onCreate( ): hàm này được gọi khi lớp Activity được khởi tạo, dùng để thiết
lập giao diện ứng dụng và thực thi những thao tác cơ bản.
o onStart(): hàm này được gọi khi lớp ứng dụng xuất hiện trên màn hình.
o onResume(): hàm được gọi ngay sau OnStart hoặc khi người dùng focus ứng
dụng, hàm này sẽ đưa ứng dụng lên top màn hình.
o onPause(): hàm được gọi khi hệ thống đang focus đến 1 activity trước đó.
o onStop(): hàm được gọi khi một activity khác được khởi động và focus.
o onRestart(): đưọc gọi khi ứng dụng chuyển sang onStop(), nhưng muốn khởi
động lại bằng onStart().
1.3 SƠ LƯỢC VỀ GOOGLE PLAY SERVICES VÀ SỬ DỤNG GOOGLE SPEECH
RECOGNITION API ĐỂ XÂY DỰNG ỨNG DỤNG.
9 | P a g e
1.3.1 Google Play services
Google Play services được dùng để cập nhật ứng dụng Google và ứng dụng từ
Google Play. Ứng dụng này cung cấp chức năng cốt lõi như xác nhận với dịch vụ
Google, đồng bộ danh bạ, truy cập vào tất cả các cài đặt riêng tư mới nhất và các
dịch vụ dựa trên địa điểm chất lượng cao hơn.
Google Play services cho Android cũng sẽ cải thiện trải nghiệm ứng dụng của
bạn. Nó sẽ tăng tốc khả năng tìm kiếm ngoại tuyến, cung cấp thêm bản đồ cá nhân
hóa hơn và cải thiện trải nghiệm chơi game. Các ứng dụng sẽ không hoạt động nếu
bạn gỡ Google Play services khỏi máy.
Lưu ý: Ứng dụng có thể không hoạt động nếu bạn gỡ cài đặt các dịch vụ của

Google Play Google Play services mang lại thêm các tính năng cho ứng dụng của
bạn để thu hút người dùng trên nhiều thiết bị khác nhau. Với Google Play services,
ứng dụng của bạn có thể tận dụng những tính năng mới nhất do Google cung cấp
như Maps, Google+, với khả năng tự động cập nhật theo dạng APK trên Google
Play store. Điều này sẽ giúp người dùng của bạn nhận cập nhật và dễ dàng tích hợp
vớ những gì mới nhất của Google.
Google Play services mang lại cho người dùng cách đơn giản để truy cập vào
các dịch vụ của Google và được tích hợp chặt chẽ với nền tảng Android. Thư viện
ứng dụng rất dễ sử dụng được cung cấp cho từng dịch vụ, cho phép người dùng
triển khai chức năng mình muốn đơn giản và nhanh chóng hơn.
Tất cả các sản phẩm của Google Play services chia sẻ cùng một API cấp quyền
giúp nâng tầm tài khoản Google đang dùng trên thiết bị. Bạn và người dùng sẽ có
một cách an toàn và ổn định để trao và nhận token truy cập OAuth2 vào dịch vụ
Google.
Những thiết bị chạy Android 2.2 trở lên và ứng dụng Google Play Store sẽ tự
động nhận các bản cập nhật cho Google Play services. Cải thiện ứng dụng của bạn
với phiên bản gần nhất của Google Play services mà không phải lo ngại về phiên
bản Android mình đang sử dụng.
1.3.2 Thư viện ứng dụng Google Play Services
Thư viện ứng dụng này bao gồm giao diện tới từng dịch vụ của Google và cho
phép bạn nắm giữ quyền xác nhận từ người dùng để chiếm quyền truy cập vào
những dịch vụ này bằng thông tin của họ. Nó cũng bao gồm API cho phép bạn giải
quyết những vấn đề phát sinh khi chạy, ví như Google Play services APK bị mất,
10 | P a g e
disable hoặc lỗi thời. Thư viện này sẽ chỉ ảnh hưởng chút ít nếu người dùng sử
dụng ProGuard trong quá trình xây dựng, vậy nên nó sẽ không ảnh hưởng nhiều tới
kích thước file của ứng dụng.
Nếu người dùng muốn truy cập vào những tính năng hoặc ứng dụng mới thêm,
chỉ việc nâng cấp lên phiên bản mới của thư viện. Tuy nhiên, việc nâng cấp sẽ
không cần thiết nếu bạn không quan tâm tới tính năng mới hay vá lỗi.

1.3.3 Lợi ích nhận được
Google Play services sẽ giúp người dùng thoải mái sử dụng API mới nhất cho
các dịch vụ phổ biến của Google mà không phải lo ngại về vấn đề thiết bị của mình
có hỗ trợ hay không. Nâng cấp lên Google Play services được cung cấp tự động bởi
Google Play Store và phiên bản mới của thư viện ứng dụng sẽ được cung cấp thông
qua Android SDK Manager. Điều này giúp người dùng dễ dàng tập trung vào
những gì quan trọng hơn.
- Cải thiện giao diện người dùng đăng nhập của Google+.
- Hỗ trợ Google Wallet Instant Buy APIs và Wallet Object.
- AdMob APIs và cập nhật cài đặt quảng cáo trong ứng dụng Google Settings.
- Hiệu ứng hình ảnh Google Maps API mới và cải thiện Location API geofencing.
1.3.4 Tìm hiểu về Google Speech Recognition API
1.3.4.1 Google Speech Recognition API
Google Speech Recognition API là ứng dụng nhận dạng giọng nói thường
dùng để ra lệnh cho các thiết bị điện thoại và nhập văn bản không cần bàn phím.
Google mới đây đã chính thức hỗ trợ chức năng tìm kiếm giọng nói bằng
tiếng Việt trên Android. Tuy nhiên, ngoài việc tìm kiếm, người dùng Android
còn có thể nhập văn bản hay soạn tin nhắn hoàn toàn bằng giọng nói tiếng Việt,
với độ chính xác cao. Với việc hỗ trợ chức năng giọng nói bằng tiếng Việt trên
Android, người dùng không chỉ sử dụng chức năng này để có thể tìm kiếm bằng
tiếng Việt, mà còn có thể nói trực tiếp với thiết bị Android để có thể soạn thảo
tin nhắn, soạn thảo văn bản hay lưu lại những ghi chú… hoàn toàn bằng tiếng
Việt, thậm chí Android còn tự động bỏ dấu chữ cho phù hợp và chính xác.
Trong đề tài này, chúng em đã sử dụng Google Speech Recognition API, đây
là một service của Google cho phép nhận dạng tiếng nói của người dùng.
11 | P a g e
1.3.4.2 Cách sử dụng Google Speech Recognition API của bạn trên Android
Bạn có thể nói vào điện thoại hoặc máy tính bảng Android để làm những việc
như tìm kiếm, nhận chỉ đường và gửi tin nhắn. Nếu thiết bị của bạn đang chạy
Android 4.1 trở lên, chỉ cần mở ứng dụng Google Tìm kiếm và nói "Ok

Google". (Tính năng này hiện có sẵn bằng tiếng Anh, Pháp và Đức)
Nếu bạn có phiên bản Android cũ hơn, hãy chạm vào biểu tượng Micrô
trên màn hình chính hoặc trong ứng dụng Google Tìm kiếm.
Hầu hết các ứng dụng này được hỗ trợ bằng tiếng Anh, Pháp, Đức, Ý, Nhật,
Hàn, Nga, Tây Ban Nha và Bồ Đào Nha (Braxin), tuy nhiên một số lệnh có thể
không khả dụng ở từng ngôn ngữ.
Để xem ứng dụng trên màn hình Google Hiện hành, hãy nói "Ok Google" rồi
nói "Help" (Trợ giúp).
Bạn có thể sử dụng nó để giữ liên lạc như: Gọi điện cho bạn bè, nhắn tin cho
bạn bè, gửi email, nghe thư thoại,….
Bên cạnh đó là việc thực hiện các công việc: đặt lời nhắc, đặt báo thức, truy
cập trang web, mở ứng dụng, chụp ảnh hoặc quay video….
CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
2.1. PHÂN TÍCH
2.1.1 Phân tích yêu cầu người dùng
Trong thời kỳ hội nhập và phát triển mạnh mẽ, ngoại ngữ, đặc biệt là tiếng Anh,
luôn là một kỹ năng rất quan trọng đối với mỗi chúng ta. Biết ngoại ngữ giúp chúng ta
tiếp cận tốt hơn với kiến thức rộng lớn của nhân loại, qua đó nâng cao trình độ cho bản
thân. Tiếng Anh chính là ngông ngữ phổ biến nhất thế giới. Nói tiếng Anh tốt giúp
chúng ta tự tin khi giao tiếp với người ngoại quốc, là công cụ để chúng ta có cơ hội
làm việc ở những công ty có chất lượng, những công ty liên kết với nước ngoài.
12 | P a g e
Ứng dụng Talk2Me là một ứng dụng cho phép người dùng luyện nói tiếng Anh
trên chính chiếc điện thoại Android của mình. Ứng dụng bao gồm một bộ các câu tiếng
Anh, yêu cầu người dùng nói lại câu đó, và đưa ra đánh giá về độ chính xác của câu
nói. Qua đó giúp người dùng dần dần sửa được cách phát âm của mình cho đúng.
Ứng dụng sử dụng hệ thống nhận dạng tiếng nói của Google, vì vậy độ chính
xác của việc nhận dạng là khá tốt.
Trong quá trình xây dựng ứng dụng cần phải có các phương pháp để xác định yêu
cầu người dùng.

- Nghiên cứu các phần mềm đã có: đọc tài liệu, xem ứng dụng . . .
- Thực hiện khảo sát/phỏng vấn: đi khảo sát, đặt câu hỏi . . .
2.1.2 Mô tả quá trình nghiệp vụ
Quá trình luyện nói tiếng anh được chia ra làm 3 bước:
STT Tên Mô tả
1 Chọn cấp độ học.
Từ menu chính chọn cấp độ học, sau khi chọn cấp
độ học thì chọn các bài học trong cấp độ học đó.
2 Thực hiện bài học.
Người dùng thực hiện bài học của mình bằng cách
nói lại các câu theo các cấp độ và hình thức khác nhau,
nội dung bài học được gủi lên Google Speech
Recognition API.
3 Tình kết quả đọc.
Khi người dùng đọc xong, ứng dụng sẽ gủi bài học
lên Google Speech Recognition API, và Google Speech
Recognition API xử lý trả về kết quả.
Bảng 2.1.2 Bảng mô tả quá trình nghiệp vụ
13 | P a g e
2.1.3 Biểu đồ phân cấp chức năng
Hình 2.1.3 Biểu đồ phân cấp chức năng
Mô tả các chức năng.
• Nói theo các bài cơ bản: Tại các bài học chính sẽ có 2 hình thức học.
o Một là nói to và rõ các câu theo các chủ đề.
o Hai là nói thêm một số câu theo hình ảnh cho trực quan sinh động.
• Nói theo chủ đề: Tại nói theo chủ đề có 2 chủ để, trong các chủ để có các mức độ
tăng dần theo độ khó.
• Nói theo các bài nâng cao: Tại các bài thử thách sẽ tạo cho bạn khả năng phản xạ
tốt hơn gồm 2 hình thức học sau.
o Một là đọc câu hỏi và chọn câu trả lời đúng.

o Hai là kiểm tra tốc độ nói.
14 | P a g e
2.1.3 Biểu đồ Usecase
2.1.3.1 Biểu đồ Usecase tổng quát
Noi to ro theo hinh anh
Noi to ro theo chu de 2
Noi to ro theo chu de 1
Noi theo chu de
User
Kiem tra toc do noi
Chon cau tra loi dung
Noi theo cac bai nang cao
Noi to ro mot so cau cho truoc
Noi theo cac bai co ban
<<include>>
<<incl ude>>
<<include>>
<<incl ude>>
<<incl ude>>
<<include>>
Hình 2.1.3 Biểu đồ usecase tổng quát
- Tác nhân: người dùng
- Mô tả ngắn gọn:
+ Người dùng chọn các chức năng trên giao diện của hệ thống.
+ Khi người dùng chọn chức năng, màn hình sẽ hiển thị danh sách cấp độ
học. Khi chọn tiếp một trong các cấp độ học thì màn hình sẽ hiển thị danh sách các
bài học, khi chọn tiếp một trong các bài học thi hệ thống sẽ phản hồi lại bằng cách
hiển thị nội dung mà người dùng cừa chọn, người dùng thực hiện học và hệ thống
trả về kết quả cho người dùng.
15 | P a g e

2.1.4 Biểu đồ tuần tự
2.1.4.1 Biều đồ tuần tự nói to rõ một số câu cho trước
Hình 2.1.4.1 Biểu đồ tuần tự nói to rõ một số câu cho trước
- Mô tả: Một ca sử dụng bắt đầu khi người dùng chạm vào biểu tượng của ứng dụng.
Người dùng sẽ được cung cấp các chức năng để luyện nói. Sau khi chạm vào nút nói
theo các bài cơ bản thì ứng dụng sẽ hiển thị ra hai hình thức học trong các bài học cơ
bản là học theo các câu mẫu và học theo hình ảnh, khi người dùng chọn vào nút học
theo câu mẫu thì một danh sách các bài học hiện ra màn hình. Người dùng lựa chọn
bài học. Hệ thống hiển thị các chức năng ra màn hình học, người dùng tiến hành học
bằng cách chọn các chức năng của hệ thống như nói theo câu, đến câu tiếp theo, quay
lại câu trước, nghe lại câu.
2.1.4.2 Biểu đồ tuần tự nói rõ theo hình ảnh
16 | P a g e
Hình 2.1.4.2 Biểu đồ tuần tự nói rõ theo hình ảnh
- Mô tả: Một ca sử dụng bắt đầu khi người dùng chạm vào biểu tượng của ứng dụng.
Người dùng sẽ được cung cấp các chức năng để luyện nói. Sau khi chạm vào nút nói
theo các bài cơ bản thì ứng dụng sẽ hiển thị ra hai hình thức học trong các bài học cơ
bản là học theo các câu mẫu và học theo hình ảnh, khi người dùng chọn vào nút học
theo hình ảnh thì màn hình hiện ra hình thức học theo ảnh và hình thức học theo
tranh, khi người dùng chọn học theo hình ảnh hoặc theo tranh thì một danh sách các
bài học có hình ảnh hiện ra màn hình. Người dùng lựa chọn bài học. Hệ thống hiển
thị các chức năng ra màn hình học,người dùng tiến hành học bằng cách chọn các
chức năng của hệ thống như nói theo câu, đến câu tiếp theo, quay lại câu trước, nghe
lại câu.
2.1.4.3 Biểu đồ tuần tự nói theo chủ đề
Hình 2.1.4.3 Biểu đồ tuần tự nói theo chủ đề
- Mô tả: Một ca sử dụng bắt đầu khi người dùng chạm vào biểu tượng của ứng dụng.
Người dùng sẽ được cung cấp các chức năng để luyện nói. Sau khi chạm vào nút nói
theo chủ đề thì ứng dụng sẽ hiển thị ra hai chủ đề là chủ đề 1 và chủ để 2, khi người
dùng chọn vào nút học theo chủ để 1 hoạc học theo chủ để 2 thì danh sách các bài

học theo chủ đề hiện ra. Người dùng lựa chọn bài học. Hệ thống hiển thị các chức
năng ra màn hình học, người dùng tiến hành học bằng cách chọn các chức năng của
hệ thống như nói theo câu, đến câu tiếp theo, quay lại câu trước, xem đáp án.
17 | P a g e
2.2. THIẾT KẾ
STT Tên Mô tả
1 Xây dựng CSDL
Tìm kiếm các dữ liệu liên quan đến bài toán,
Tạo ra CSDL phù hợp với chương trình bài toán.
2
Xây dựng các chức
năng
Thiết kế giao diện, kết nối đến CSDL, hiển thị dữ
liệu lên màn hình, hiện thị kết quả trả về.
3
Cài đặt ứng dụng trong
thực tế
Cài đặt ứng dụng hoạt động trên máy điện thoại thật
cài hệ điều hành android
Bảng 2.2 Quá trình xây dựng ứng dụng
2.2.1 Thiết kế CSDL
2.2.1.1 Các dữ liệu cơ bản
 Các file layout .xml để tạo giao diện người dùng cho ứng dụng. Sử dụng các
View có sẵn do Android cung cấp như Button, TextView, EditText, ImageView…
để xây dựng giao diện.
 Các file animation .xml để xử lý animation cho các nút bấm.
 Các file raw âm thanh .mp3 chứa âm thanh gốc của các câu tiếng Anh có trong
ứng dụng, nhằm mục đích cho người dùng nghe làm mẫu, hoặc để so sánh độ chính
xác của âm thanh do người dùng nói vào.
 Các file ảnh .png, .jpg… để minh họa cho một số câu tiếng Anh cần hình ảnh.

2.2.1.2 Các dữ liệu từ Google Speech Recognition API.
Phần quan trọng nhất của ứng dụng, đó là sử dụng Google Speech Recognition
API. Đây là một API do Google cung cấp, cho phép ứng dụng tiếp nhận âm thanh
cho người dùng nói ra, sau đó gửi file âm thanh lên hệ thống nhận dạng âm thanh
của Google, và nhận kết quả trả về dưới dạng một file văn bản (speech-to-text).
Có thể hình dung quá trình xử lý dữ liệu âm thanh của ứng dụng như sau:
Hình 2.2.1.2 Quá trình xử lý dữ liệu âm thanh của ứng dụng
18 | P a g e
2.2.2 Thiết kế các lớp
Chương trình được phân thành các chức năng rõ ràng do vậy sẽ thiết kế theo các
lớp.
2.2.2.1 Package hoanhugiang.app.talk2me
STT Tên lớp Mô tả
1 WelComeActivity Hiển thị màn hính chào khi vào ứng dụng.
2 MainActivity Hiển thị 3 chức năng chính của chướng trình.
3 PractiseChooseLevel
Hiển thị 2 chức năng của phần các bài học
chính.
4 AdventureChooseLevel Hiển thị 2 chủ để của phần nói theo chủ để
5 ChallengeChooseMode
Hiển thị 2 chức năng của phần các bài thử
thách.
6 PratiseChooseEasyLevel
Hiển thị 7 cấp độ bài học trong phần các bài
học chính.
7 PractiseFreeStyle
Hiển thị 2 mục là nói theo hỉnh ảnh và nói theo
tranh.
8 PractiseWithMe
Hiển thị rá các câu trong bài học, người dùng

đọc theo câu đó rùi chờ kết quả trả về.
9 PractiseFreeStylePicture Hiển thị ra danh mục các hình ảnh.
10 PractiseFreeStylePra Hiển thị ra danh mục các bức tranh.
11 HelpChallengeII
Hiển thị ra các hình ảnh, người dùng đọc câu
tương ứng với hình ảnh rùi chờ kết quả trả về.
12 ConservationHello
Hiển thị ra các bức tranh xin chào, người dùng
đọc câu tương ứng với hình ảnh rùi chờ kết quả trả
về.
13 ConservationTaxi
Hiển thị ra các bức tranh về taxi, người dùng
đọc câu tương ứng với hình ảnh rùi chờ kết quả trả
về.
14 AdventureChooseEasyLevel
Hiển thị ra các cấp độ từ 1 đến 7 cho người
dùng chọn ở mức độ dẽ.
15
AdventureChooseHardLeve
l
Hiển thị ra các cấp độ từ 1 đến 7 cho người
dùng chọn ở mức độ khó.
16 AdventureEasy
Hiển thị ra các câu trong cấp độ dẽ, người dùng
đọc theo câu đó rùi chờ kết quả trả về.
19 | P a g e
17 AdventureHard
Hiển thị ra các câu trong cấp độ khó, người
dùng đọc theo câu đó rùi chờ kết quả trả về.
18 ChallengeChooseLevel

Hiển thị 2 chức năng trong phần các bài thử
thách.
19 Home
Hiển thị các cấp độ từ 1 đến 7 để người dùng
chọn trong phần chọn câu trả lời đúng.
20 Challenge Hiển thị 3 mức độ trong phần tốc độ nói.
21 HelpChallengeII
Hiển thị danh sách các câu hỏi và câu trả lời,
ngưới dùng đọc câu hỏi rùi chờ kết qua trả về.
22 PlayWithMe
Hiển thị danh sách các và thời gian bắt đầu
đếm, ngưới dùng đọc câu hỏi rùi chờ kết qua trả
về và xem cả thời gian học.
Bảng 2.2.2.1 Packege hoanhugiang.app.talk2me.
2.2.2.2 Package hoanhugiang.app.talk2me.adapter
STT Tên lớp Mô tả
1 ListViewAdapter Là cầu nối hiển thị danh sách các mục lên listview
2
NavDrawerListAdapte
r
Là cầu nối với Drawer
Bảng 2.2.2.2 Package hoanhugiang.app.talk2me.adapter
2.2.2.3 Package hoanhugiang.app.talk2me.util
STT Tên lớp Mô tả
1 AudioResource Xử lý các dữ liệu liên quan đến âm thanh.
2 DynamicPro Xử lý các dữ liệu động.
3 Rotate3dAnimation Xử lý các hiệu ứng.
4 SoundNotification Xứ lý các âm thanh thông báo.
Bảng 2.2.2.3 Package hoanhugiang.app.talk2me.util
20 | P a g e

CHƯƠNG 3 XÂY DỰNG VÀ CÀI ĐẶT ỨNG DỤNG
3.1 XÂY DỰNG GIAO DIÊN VÀ CHỨC NĂNG CHÍNH
Giao diện của ứng dụng là giao diện dạng menu đơn giản, thân thiện và dễ sử dụng
cho người dùng. Sẽ có menu các bài học để người dùng lựa chọn và luyện tập.
Dưới đây là các giao diện của ứng dụng.
• Wecome Activity: Đây là màn hình chính của hệ thống, ở màn hình này mở menu
và đi đến các màn hình khác.

Hình 3.1a Trang welcome và menu
21 | P a g e
• Main Activity: có 3 lựa chọn chính là Core Lessons (các bài học chính),
Speaking Topics (nói theo các chủ đề) và Challenge (các bài thử thách), ngoài ra
có lựa chọn Home đẻ về màn hình Wecome Activity.
Hình 3.1b Home, Core Lessons, Speaking Topics và Challenge Activity
22 | P a g e
• Core Lessons Activity: Có 2 lựa chọn Speaking out loud (nói to, nói rõ các câu
cho trước) và More to speak (nói thêm một số câu khác theo hình ảnh).
Hình 3.1c Core Lesson, Speak out loud và More to speak activity
23 | P a g e
• Speak out loudvới 7 cấp độ từ 1 – 7 tương ứng 7 bài học theo thứ tự từ dễ đến
khó.More to speack với 2 chủ đề Picture (tranh) và Photograph (ảnh) tương ứng
các câu tiếng Anh để người dùng luyện thêm.
Hình 3.1d Nội dung bên trong Speak out loud và More to speak
24 | P a g e
Hình 3.1e More to speak và 2 lựa chọn
25 | P a g e

×