Với ưu thế nhỏ gọn, tiện dụng và đa nhiệm, điện thoại thông minh trở thành một công cụ đắc lực trong việc học tập và giải trí, đặc biệt là các điện thoại dùng hệ điều hành Android – hệ đ
Trang 1LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC
Tìm hiểu HĐH Android và xây dựng ứng dụng
minh họa phần mềm Học Tiếng Anh
Trang 2LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC
Tìm hiểu HĐH Android và xây dựng ứng dụng
minh họa phần mềm Học Tiếng Anh
Sinh viên thực hiện Cán bộ hướng dẫn Nguyễn Phúc Vinh Ths Nguyễn Minh Trung MSSV:1111560
Trang 3LỜI CẢM ƠN
Tôi xin chân thành cảm ơn Quý thầy cô Khoa Công nghệ thông tin và Truyền thông, trường Đại học Cần Thơ đã tận tình dạy bảo và truyền thụ những kiến thức quý báu trong suốt thời gian tôi học tập tại trường, cũng như tạo điều kiện để tôi có thể hoàn thành tốt đề tài luận văn
Tôi xin chân thành cảm ơn thầy Nguyễn Minh Trung đã tận tình hướng dẫn, giúp đỡ tôi trong suốt quá trình thực hiện đề tài, tôi có thể hoàn thành đề tài này cũng nhờ sự giúp đỡ nhiệt tình của thầy
Tôi xin cảm ơn tất cả bạn bè, các bạn sinh viên ngành Tin học ứng dụng khóa
37 đã giúp đỡ, đóng góp nhiều ý kiến quý báu để tôi có thể chỉnh sửa và khắc phục kịp thời
Mặc dù đã cố gắng khắc phục và hoàn thiện đề tài được tốt hơn nhưng chắc chắn tôi cũng mắc những sai lầm trong quá trình thực hiện Rất mong nhận được sự thông cảm, phê bình và những ý kiến quý báu của thầy cô
Tôi xin chân thành cảm ơn
Cần Thơ, ngày 15 tháng 06 năm 2015
Người thực hiện
Nguyễn Phúc Vinh
Trang 4MỤC LỤC
LỜI CẢM ƠN 1
MỤC LỤC ii
DANH MỤC HÌNH iv
DANH MỤC BẢNG vi
TÓM TẮT vii
ABSTRACT viii
Chương 1 GIỚI THIỆU 1
1.1 ĐẶT VẤN ĐỀ 1
1.2 PHẠM VI ĐỀ TÀI 1
1.3 PHƯƠNG PHÁP NGHIÊN CỨU 1
Chương 2 CƠ SỞ LÝ THUYẾT 2
2.1 HỆ ĐIỀU HÀNH ANDROID [6,8] 2
2.1.1 Tổng quan về hệ điều hành Android 2
2.1.2 Các phiên bản Android 2
2.1.3 Kiến trúc HĐH Android 3
2.1.3.1 Phần cứng 3
2.1.3.2 Hệ điều hành Android 4
2.1.3.3 Kết nối mạng 6
2.1.3.4 Bảo mật 7
2.1.4 Cấu trúc của một ứng dụng Android 7
2.1.4.1 Các thành phần của một ứng dụng Android 7
2.1.4.2 Cấu trúc lưu trữ dự án trong Android 9
Thư mục mã nguồn (SRC): 9
2.2 TEXT TO SPEECH TRONG ANDROID 11
2.2.1 Giới thiệu về Text to Speech 11
2.2.2 Cách sử dụng Text to Speech 11
2.3 SQLITE 12
2.3.1 Giới thiệu SQLite 12
2.3.2 Chi tiết về các đặc tính SQLite 13
2.4 GIỚI THIỆU VỀ LINQ 14
Trang 52.4.1 LinQ là gì ? 14
2.4.2 Tại sao nên dùng LinQ ? 14
2.4.3 Cách dùng LinQ 14
2.5 DỊCH VỤ WEB (WEB SERVICES) [1,3,5] 16
2.5.1 Kiến trúc dịch vụ Web 16
2.5.2 Xây dựng ứng dụng Web 17
2.5.3 Cách đưa CSDL và ứng dụng Web lên Web Service trên mạng 20
2.5.4 Giao tiếp giữa Android và Web Service dựa trên SOAP [1] 27
2.5.5 Sử dụng dịch vụ Web trong Android 29
2.5.6 Thư viện kSoap trong Android [1,3] 30
Chương 3 NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU 38
3.1 PHÂN TÍCH CHƯƠNG TRÌNH 38
3.1.1 Giới thiệu 38
3.1.2 Luật chơi và cách tính điểm 38
3.1.3 Lưu trữ thông tin người dùng 38
3.2 THUẬT TOÁN VÀ THIẾT KẾ CHƯƠNG TRÌNH 39
3.2.1 Thuật toán trong chương trình 39
3.2.2 Mô hình CSDL 39
3.2.3 Tập Thực Thể 41
3.2.4 Mô Hình Use Case 42
3.3 KẾT QUẢ ĐẠT ĐƯỢC 43
3.3.1 Giao Diện Trên Web 43
3.3.2 Giao Diện Trên Android 44
Chương 4 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 49
4.1 KẾT LUẬN 49
4.1.1 Ưu điểm 49
4.1.2 Hạn chế 49
4.2 HƯỚNG PHÁT TRIỂN 49
TÀI LIỆU THAM KHẢO 50
Trang 6DANH MỤC HÌNH
Những yêu cầu về phần cứng của hđh Android 4
Các tầng của hệ điều hành Android 6
Biều đồ miêu tả Activity State 8
Cài đặt Text to Speech 12
Cài đặt thêm ngôn ngữ khác 12
Tạo mới file Data Classes 15
Thêm các table vào Data Classes 15
Tạo ứng dụng Web 17
Ứng dụng Web 17
Tạo mới một Web Service chạy trên localhost 18
Nội dung trong Web Service vừa tạo 18
Phương thức Web 19
Các phương thức trong dịch vụ Web được định nghĩa 20
Nhập giá trị cần tính trong phương thức ktUser 20
Kết quả thực thi 20
Chọn Server miễn phí 21
Tạo một tài khoản mới 21
Tạo website mới 22
Tạo mới CSDL 22
Cấu hình CSDL 23
Chuỗi kết nối đến Web Service 23
Đưa CSDL lên web bước 1 24
Đưa CSDL lên web bước 2 24
Đưa CSDL lên web bước 3 25
Đưa CSDL lên web bước 4 25
Đưa ứng dụng lên web bước 1 26
Đưa ứng dụng lên web bước 2 26
Đưa ứng dụng lên web bước 3 27
HTML frontend 27
Direct Web service invocation 28
Web service gateway 29
Gửi yêu cầu và nhận kết quả từ dịch vụ Web sử dụng HttpTransport 30
Mô hình class đợn giản của kSoap2 31
Sơ đồ biểu diễn việc xử lý dữ liệu của chương trình từ SQLite và Web Service 32
Hàm trả về câu trả lời 33
Cách config giữa Android và Web Service 33
Cách lưu dữ liệu từ Web vào SQLite 35
Dữ liệu trong SQLite 35
Trang 7Kết quả khi chạy hàm 37
Sơ đồ thuật toán làm bài học 39
Mô hình CSDL 40
Mô hình use case người quản trị 42
Mô hình use case người dùng 43
Form đăng nhập 44
Màn hình chỉnh sửa câu hỏi 44
Giao diện đăng nhập 45
Giao diện chính 46
Danh mục mức độ 46
Hiển thị đáp án câu hỏi 47
Màn hình Báo lỗi và Thoát 48
Màn hình hiển thị kết quả 48
Trang 8DANH MỤC BẢNG
Bảng 2.1 Các phiên bản của hệ điều hành Android 3
Bảng 2.2 Cấu trúc lưu trữ dự án trong Android 10
Bảng 2.3 Cấu trúc lưu trữ trong thư mục res 11
Bảng 3.1 Mô tả tập thực thể Nguoi_Dung 41
Bảng 3.2 Mô tả tập thực thể Mức Độ 41
Bảng 3.3 Mô tả tập thực thể Bài Học 41
Bảng 3.4 Mô tả tập thực thể Báo Lỗi 41
Bảng 3.5 Mô tả tập thực thể Câu hỏi 42
Bảng 3.6 Mô tả tập thực thể Trả Lời 42
Trang 9TÓM TẮT
Ngày nay đối với mọi ngành nghề, Tiếng Anh là một phần không thể thiếu trong các yêu cầu tuyển dụng Đặc biệt là đối với các sinh viên Công nghệ thông tin, điều này trở thành một nhu cầu tất yếu
Cùng với sự phát triển vượt bậc của công nghệ thông tin, các điện thoại thông minh
đã trở nên gần gũi hơn đối với mọi người Với ưu thế nhỏ gọn, tiện dụng và đa nhiệm, điện thoại thông minh trở thành một công cụ đắc lực trong việc học tập và giải trí, đặc biệt là các điện thoại dùng hệ điều hành Android – hệ điều hành chiếm hơn 75% thị phần điện thoại thế giới
Vì lẽ đó, đề tài luận văn “Tìm hiểu HĐH Android và xây dựng ứng dụng minh họa phần mềm Học Tiếng Anh” được ra đời nhằm đáp ứng nhu cầu người dùng cần học Tiếng Anh
Phần mềm được viết trên hệ điều hành Android sử dụng ngôn ngữ Java kết hợp với Webservice để lưu trữ dữ liệu
Từ khóa: phần mềm học tiếng anh, ksoap, android, webservices, sqlite
Trang 10ABSTRACT
Today, for all professions, English is an integral part of the recruitment requirements
Especially for students of Information Technology, which became an essential
With the boom of information technology, the smart phone has become closer to the
people With the advantage of compact, handy and multitasking, the smartphone
becomes a powerful tool for learning and entertainment, especially the phone using
the Android operating system - OS accounted for over 75% world phone market
Therefore, the thesis "Learn Android and build software applications illustrated Learn
English" was created to meet the needs of users who need to learn English
Software written for the operating system Android uses the Java language associated
with Webservice to store data
Key words: English learning software, kSOAP, android, webservices, sqlite
Trang 11Chương 1 GIỚI THIỆU 1.1 ĐẶT VẤN ĐỀ
Ngày nay, hầu như tất cả các ngành nghề hiện đại đều có sự xuất hiện của Công nghệ thông tin, đặc biệt là kinh tế xã hội ngày càng phát triển nên việc sử dụng những sản phẩm của Công nghệ thông tin với kích thước nhỏ gọn, tiện lợi không còn gì là
xa lạ đối với mọi người Trong đó, công nghệ di động và những ứng dụng của nó được mọi người quan tâm và sử dụng phổ biến hơn
Trong những năm gần đây, việc học tiếng anh trở thành một như cầu thiết yếu trong cuộc sống, nhất là đối với những sinh viên ra trường tìm việc, tiếng anh trở thành một trong những yêu cầu hàng đầu của các nhà tuyển dụng Tuy nhiên, việc học tiếng anh trên giấy theo cách truyền thống mang lại nhiều khó khăn cho người học: khó lưu trữ, tốn kém tiền bạc, tốn nhiều thời gian tìm kiếm, … làm cho nhiều người học tuy tốn nhiều thời gian nhưng vẫn không thể học tốt
Nhận thấy nhu cầu thiết yếu trên nên em quyết định chọn đề tài: “Tìm hiểu HĐH Android và xây dựng ứng dụng minh họa phần mềm Học Tiếng Anh” Ứng dụng có thể giúp người dùng học tiếng anh miễn phí với nhiều câu hỏi trong nhiều lĩnh vực khác nhau và nghe cách phát âm các câu nói đơn giản Tuy còn khiêm tốn nhưng ứng dụng cũng đã giải quyết phần nào nhu cầu về việc học tiếng anh
1.2 PHẠM VI ĐỀ TÀI
Ứng dụng học tiếng anh giúp mọi người có thể làm trắc nghiệm trên nền tảng Android với các chức năng xem lại bài làm, chọn mức độ, nghe cách phát âm chuẩn,…
Lưu trữ câu hỏi trên mạng giúp người dùng có thể làm bài mọi lúc, mọi nơi với nhiều lĩnh vực và mức độ khác nhau
Tạo trang web đơn giản giúp admin tiếp nhận báo lỗi từ người dùng và chỉnh sửa, thêm mới các câu hỏi
1.3 PHƯƠNG PHÁP NGHIÊN CỨU
Đề tài được nghiên cứu và thực hiện tuần tự theo các bước sau:
Tìm hiểu hệ điều hành Android, Web Service, SQLite
Cách tạo và đưa CSDL lên Web Service
Cách cấu hình, đọc và ghi dữ liệu Web Service với SQLite
Phân tích và thiết kế chương trình
Cài đặt và kiểm thử
Nhận xét và đánh giá kết quả đạt được
Trang 12Chương 2 CƠ SỞ LÝ THUYẾT 2.1 HỆ ĐIỀU HÀNH ANDROID [6,8]
2.1.1 Tổng quan về hệ điều hành Android
Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng Ban đầu, Android được phát triển bởi Tổng công ty Android, với sự hỗ trợ tài chính từ Google và sau này được chính Google mua lại vào năm 2005 Android ra mắt vào năm 2007 cùng với tuyên bố thành lập Liên minh thiết bị cầm tay mở: một hiệp hội gồm các công ty phần cứng, phần mềm, và viễn thông với mục tiêu đẩy mạnh các tiêu chuẩn mở cho các thiết bị di động Chiếc điện thoại đầu tiên chạy Android được bán vào tháng 10 năm 2008
Android có mã nguồn mở và Google phát hành mã nguồn theo Giấy phép Apache Chính mã nguồn mở cùng với một giấy phép không có nhiều ràng buộc đã 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 nhiệt huyết được điều chỉnh và phân phối Android một cách tự do Ngoài ra, Android còn có một cộng đồng lập trình viên đông đảo chuyên viết các ứng dụng để mở rộng chức năng của thiết bị, bằng một loại ngôn ngữ lập trình Java có sửa đổi Vào tháng 10 năm
2012, có khoảng 700.000 ứng dụng trên Android, và số lượt tải ứng dụng từ Google Play, cửa hàng ứng dụng chính của Android, ước tính khoảng 25 tỷ lượt
Những yếu tố này đã giúp Android trở thành nền tảng điện thoại thông minh phổ biến nhất thế giới, vượt qua Symbian vào quý 4 năm 2010 và được các công ty công nghệ lựa chọn khi họ cần một hệ điều hành không nặng nề, có khả năng tinh chỉnh, và giá rẻ chạy trên các thiết bị công nghệ cao thay vì tạo dựng từ đầu Kết quả
là mặc dù được thiết kế để chạy trên điện thoại và máy tính bảng, Android đã xuất hiện trên TV, máy chơi game và các thiết bị điện tử khác Bản chất mở của Android cũng khích lệ một đội ngũ đông đảo lập trình viên và những người đam mê sử dụng
mã nguồn mở để tạo ra những dự án do cộng đồng quản lý Những dự án này bổ sung các tính năng cao cấp cho những người dùng thích tìm tòi hoặc đưa Android vào các thiết bị ban đầu chạy hệ điều hành khác
Android chiếm 75% thị phần điện thoại thông minh trên toàn thế giới vào thời điểm quý 3 năm 2012, với tổng cộng 500 triệu thiết bị đã được kích hoạt và 1,3 triệu lượt kích hoạt mỗi ngày Sự thành công của hệ điều hành cũng khiến nó trở thành mục tiêu trong các vụ kiện liên quan đến bằng phát minh, góp mặt trong "cuộc chiến điện thoại thông minh" giữa các công ty công nghệ
2.1.2 Các phiên bản Android
Trong khi các số phiên bản của Android phiên bản hệ điều hành tuần tự là: 1.6, 2.1, 4.2, Các bản phát hành cũng được đặt tên tương tự như các mặt hàng khác nhau
Trang 13trong một thực đơn tráng miệng hảo hạng: Donut, Eclair, và Jelly Bean Khi mọi người ám chỉ Jelly Bean có nghĩa là phiên bản Android 4.2 Phiên bản Android cũng được mô tả ở cấp độ API, bởi số nguyên tăng dần theo trình tự Vì vậy, Android API
ở mức 17 đề cập đến Android phiên bản 4.2, còn được gọi là Jelly Bean
Bảng 2.1 Các phiên bản của hệ điều hành Android
Phiên bản Tên mã Ngày phát hành API Phân bố
5.0 Lollipop 07/2014 20 Dành cho người
phát hành 4.4 KitKat 10/2013 19 17,9%
Trang 14Phần Cứng Những yêu cầu tối thiểu
Chipset ARM-based
RAM 128MB RAM,258MB Flash External
Ổ cứng Mini hoặc Micro SD
Màn hình chính QVGA TFT LCD hoặc lớn hơn,16 bit color hoặc tốt hơn
Navigation Key 2MP CMOS
USB Standard mini-B USB interface
Bluetooth 1.2 hoặc hơn
Những yêu cầu về phần cứng của hđh Android
Những yêu cầu về phần cứng có thể khác nhau tuỳ theo phiên bản Android
2.1.3.2 Hệ điều hành Android
Có 5 tầng phân biệt trong hệ thống android
Tầng lõi ARM Linux (Linux Kernel):
Là tầng thấp nhất được xây dựng từ hai thành phần chính là Linux Kernel và bộ
vi xử lý ARM (Acorn RISC Machine) Bộ vi xử lý ARM hoạt động với hiệu suất cao nhưng tiêu thụ năng lượng rất ít
Android dựa trên Linux phiên bản 2.6, từ Android 4.0 trở về sau là phiên bản 3.x Linux kernel phiên bản 2.6 là phiên bản có tính ổn định cao Sự kết hợp giữa hai thành phần này nhằm giải quyết phần nào giới hạn nguồn năng lượng sử dụng và tối ưu việc sử dụng các tài nguyên trong thiết bị
Nền tảng Linux Kernel 2.6 chứa những drivers để điều khiển phần cứng như keypad, wifi, camera, audio, màn hình,v.v Đây là trung tâm điều khiển của Android.Các giải thuật quản lý tài nguyên, chuyển đổi qua lại giữa các tác vụ phân chia quyền, giải quyết tranh chấp được cài đặt trong kernel Tuy nhiên lập trình viên sẽ không lập trình trực tiếp trên tầng này
Tầng thư viện (Libraries):
Chứa mã nguồn mở cấp thấp cho những chức năng cơ bản như: mã hoá và giải
mã âm thanh, hình ảnh kĩ thuật số, trình bày các giao diện đồ hoạ, bảo mật lưu lượng TCP/IP cũng như các thành phần cho trình duyệt web, hỗ trợ truy xuất cơ
sở dữ liệu (SQLite),v.v
Đây là tầng chứa các thư viện C/C++ được gọi thông qua giao diện java Tầng này gồm thư viện surface (tạo các cửa sổ giao diện), OpenGL (hỗ trợ xây dựng ứng dụng 2D và 3D), Media Framework (hỗ trợ xây dựng các ứng dụng về âm thanh hình ảnh), SSL (cung cấp các chức năng bảo mật thiết bị), SQLite (cơ sở dữ liệu mã nguồn mở được nhúng trong thiết bị), webkit (hỗ trợ hiển thị nội dung website),v.v
Trang 15
Tầng máy ảo Android (Android Runtime):
Đây là một phần mềm dùng để chạy các ứng dụng trên thiết bị Android, bao gồm một tập các thư viện lõi (core libraries) cung cấp hầu hết các chức năng trong thư viện lõi của ngôn ngữ lập trình Java và máy ảo Dalvik Mỗi ứng dụng android sẽ chạy trên một tiến trình dành riêng cho nó, với một máy ảo Dalvik riêng cũng được thiết lập dành riêng cho mỗi ứng dụng Dalvik được viết để một thiết bị có thể chạy nhiều máy ảo cùng lúc hiệu quả Máy ảo Dalvik thực thi các tập tin dex,
là loại tập tin được đóng gói từ các file class giúp tối ưu bộ nhớ, quản lý tiến trình
và quản lý bộ nhớ hiệu quả, máy ảo này cũng sử dụng các chức năng do Linux kernel cung cấp
Tầng khung ứng dụng Android (Android Application Framework):
Tầng này định nghĩa Android API, cung cấp bộ công cụ ở mức cao để các lập trình viên nhanh chóng xây dựng ứng dụng
Chứa các thư viện java hỗ trợ người dùng giao tiếp với tầng thư viện và tầng máy
ảo Một phần của tầng này do Google cung cấp sẵn, một phần do lập trình viên tạo ra Trong tầng này thì thành phần quan trọng nhất là Activity Manager vì nó quản lý chu kì sống của Activity
Activity Manager: quản lý chu trình sống của các Activity trong ứng dụng
Android
Telephony Manager: cung cấp thư viện để truy xuất đến các dịch vụ điện
thoại cũng như là thông tin thuê bao
View System: xử lý giao diện trong ứng dụng android
Location Manager: cung cấp thư viện hỗ trợ người dùng định vị vị trí của
thiết bị
Tầng ứng dụng lõi Android (Applications):
Đây là tầng cao nhất và ứng dụng của lập trình viên sẽ nằm ở tầng này Google đã viết sẵn một số thư viện tiện ích trong tầng này để việc truy xuất thông tin ở các tầng dưới thuận tiện,linh hoạt và hiệu quả nhất
Bao gồm các những ứng dụng cơ bản hỗ trợ thêm cho người lập trình như: Webkit browser, Google Calendar, Gmail, Map Application, SMS Messenger, Email Client ,v.v
Trang 16Các tầng của hệ điều hành Android
2.1.3.3 Kết nối mạng
Android hỗ trợ giao tiếp không dây bằng cách sử dụng:
Mạng wifi 802.11: Là hệ thống mạng không dây sử dụng sóng vô tuyến giống
như điện thoại di động, truyền hình và radio với băng tầng 2,4 3,6 và 5 Ghz
Công nghệ GSM (The Global System Mobile Communication): là hệ thống
mạng tế bào sử dụng kỹ thuật TDMA (Time Division Multi Access) – đa truy cập theo thời gian Mỗi cuộc gọi được phát triển trên tầng số chung nhưng theo các khoảng thời gian khác nhau Khoảng thời gian này đủ bé để người sử dụng không nhận thấy sự rời rạc khi nghe người khác nói Công nghệ dành cho mạng 2G và hoạt động ở băng tầng 900MHz hay 1800MHz
EDGE (Enhanced Data Ratesn for GSM Evolution): Còn được gọi là EGPGS,
là một công nghệ được phát triển từ GPRS, cho phép truyền dữ liệu với tốc độ
384 kbit/s cho người dùng cố định hoặc di chuyển chậm và 144 kbit/s cho người dùng di chuyển với tốc độ cao EDGE được biết đến như một công nghệ 2,75G
3G: là công nghệ truyền thông thứ ba, cho phép truyền dữ liệu thoại và dữ liệu
ngoài thoại (tải dữ liệu, gửi email,tin nhắn nhanh, hình ảnh) Công nghệ này tăng băng thông và hỗ trợ đa dạng ứng dụng hơn trong đó có dịch vụ video call
4G LTE: Là công nghệ thứ tư của công nghệ không dây 4G được thiết kế nhằm
tăng tốc độ cho người dùng điện thoại thông minh và máy tính bảng với 100Mbps dowload và 50Mbps upload Hầu hết điện thoại thông minh hỗ trợ 4G đều chạy
hệ điều hành Android
Trang 172.1.3.4 Bảo mật
Android là một hệ thống đa tiến trình, trong đó mỗi ứng dụng chạy riêng biệt trong một tiến trình riêng biệt dành cho nó Bảo mật giữa ứng dụng và hệ thống được thực thi ở mức tiến trình thông qua những tiêu chuẩn của Linux Mỗi ứng dụng trong Android được gán một ID và mặc định khi ứng dụng chạy sẽ không có bất cứ tiến trình hay hệ thống khác can thiệp vào nó
Việc cho phép trao đổi thông tin và tương tác qua lại giữa các tiến trình phải được định nghĩa trước trong ứng dụng đó để khi cài đặt, hệ điều hành sẽ nhận diện được thông tin này
2.1.4 Cấu trúc của một ứng dụng Android
2.1.4.1 Các thành phần của một ứng dụng Android
Các thành phần tạo nên ứng dụng Android được chia làm 6 loại bao gồm:
Activity: là nền của 1 ứng dụng Khi khởi động một ứ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
Service: thành phần chạy ẩn trong Android 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
Content Provider: kho dữ liệu chia sẻ Content Provider được sử dụng để
quản lý và chia sẻ dữ liệu giữa các ứng dụng
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 một Activity hay Service để thực hiện công việc mong muốn
Broadcast Receiver: thành phần thu nhận các Intent bên ngoài gửi tới
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
Activity, Service, Broadcast Receiver và Content Provider mới là những thành
phần chính cấu thành nên ứng dụng Android, bắt buộc phải khai báo trong AndroidManifest
Actitvity là thành phần quan trọng nhất và đóng vai trò chính trong xây dựng ứng dụng Android Hệ điều hành Android quản lý Activity theo dạng stack: khi một Activity mới được khởi tạo, nó sẽ được xếp lên đầu của stack và trở thành running activity, các Activity trước đó sẽ bị tạm dừng và chỉ hoạt động trở lại khi Activity mới được giải phóng
Activity bao gồm 4 state:
- active (running): Activity đang hiển thị trên màn hình (foreground)
Trang 18- paused: Activity vẫn hiển thị (visible) nhưng không thể tương tác (lost focus)
- stop: Activity bị thay thế hoàn toàn bởi Activity mới sẽ tiến đến trạng thái stop
- killed: Khi hệ thống bị thiếu bộ nhớ, nó sẽ giải phóng các tiến trình theo nguyên tắc
ưu tiên
Các Activity ở trạng thái stop hoặc paused cũng có thể bị giải phóng và khi nó được hiển thị lại thì các Activity này phải khởi động lại hoàn toàn và phục hồi lại trạng thái trước đó
Biều đồ miêu tả Activity State
Vòng đời của Activity:
- Entire lifetime: Từ phương thức onCreate() cho tới onDestroy()
- Visible liftetime: Từ phương thức onVisible() cho tới onInvisible()
- Foreground lifetime: Từ phương thức onBegin() cho tới onPause()
Trang 19Khi xây dựng Actitvity cho ứng dụng cần phải viết lại phương thức onCreate() để thực hiện quá trình khởi tạo Các phương thức khác có cần viết lại hay không tùy vào yêu cầu lập trình
Android có cơ chế quản lý các process theo chế độ ưu tiên Các process có priority thấp sẽ bị Android giải phóng mà không hề cảnh báo nhằm đảm bảo tài nguyên
Foreground process: là process của ứng dụng hiện thời đang được người dùng tương
tác
Visible process: là process của ứng dụng mà activity đang hiển thị đối với người
dùng (onPaused() của activity được gọi)
Service process: là Service đang running
Background process: là process của ứng dụng mà các activity của nó không hiển thị
với người dùng (onStoped() của activity được gọi)
Empty process: process không có bất cứ 1 thành phần nào active Theo chế độ ưu
tiên thì khi cần tài nguyên, Android sẽ tự động kill process, trước tiên là các empty process
2.1.4.2 Cấu trúc lưu trữ dự án trong Android
Thư mục assets Thư mục này dùng để lưu trữ dữ liệu do lập trình viên tự định
nghĩa như tập tin HTTP, tập tin XML, tập tin văn bản, tập tin CSDL,.v.v
Các tập tin này sẽ được ứng dụng truy xuất thông qua đối tượng Asset Manager của Android
Việc truy xuất tài nguyên trong Assets thông qua việc đọc và lưu trữ các bit và byte
Thư mục RES Cũng giống như thư mục assets, đây là thư mục để lưu trữ các
tài nguyên của ứng dụng
Thư mục này có thể lưu trữ bất cứ loại tài nguyên nào từ chuỗi cho tới hình ảnh và âm thanh
Việc truy xuất tài nguyên trong RES thông qua IDs.Khi thêm tài vào thư mục RES, Android sẽ phát sinh một ID và lưu trữ
ID này vào tập tin R.java và chỉ cần gọi ID này để truy xuất
Trang 20là thư viện của JDK hay Android SDK mà là một thư viện bên ngoài
Thư mục Referenced Libraries được tạo khi thêm thư viện vào thư mục Libs
Thư mục GEN Thư mục này được tạo trong lần biên dịch đầu tiên của ứng
dụng
Thư mục GEN chứa tập tin R.java dùng để lưu trữ các giá trị
ID Khi muốn truy xuất tài nguyên nào chỉ cần chỉ định giá trị
ID tương ứng của tài nguyên đó
Tập tin
Android
Manifest.xml
Đặt tên cho Java package của ứng dụng
- Mô tả các thành phần (component) của ứng dụng: activity, service, broadcast receiver hoặc content provider
- Thông báo những permission mà ứng dụng cần có để truy nhập các protected API và tương tác với các ứng dụng khác
- Thông báo những permission mà các ứng dụng khác cần có để tương tác với ứng dụng hiện thời
- Thông báo level thấp nhất của Android API mà ứng dụng cần
để chạy
- Khai báo các thư viện mà ứng dụng sử dụng
- Khai báo quyền hạn của ứng dụng
Bảng 2.2 Cấu trúc lưu trữ dự án trong Android
Cách tổ chức tài nguyên trong thư mục RES:
Thư mục con Loại tài nguyên lưu trữ
anim/ Các tập tin XML định nghĩa loạt ảnh (animation)
color/ Các tập tin XML định nghĩa danh sách màu
drawable/ Các tập tin hình ảnh hoặc các tập tin XML có thể được
biên dịch thành các tài nguyên hình ảnh
Drawable-hdpi/ Các tập tin hình ảnh với độ phân giải cao
Drawable-ldpi/ Các tập tin hình ảnh với độ phân giải thấp
Drawable-mdpi/ Các tập tin hình ảnh với độ phân giải trung bình
layout/ Các tập tin XML định nghĩa các giao diện trong dự án
menu/ Các tập tin XML định nghĩa menu trong ứng dụng
raw/ Các tập tin dữ liệu thô dùng trong ứng dụng
values/ Các tập tin XML định nghĩa các giá trị đơn giản:
Trang 21 Array.xml: chứa các tài nguyên mảng
Color.xml: chứa các định nghĩa màu sắc
Dimens.xml: định nghĩa các giá trị kích thước
String.xml định nghĩa các giá trị kiểu chuỗi
Style.xml: Định nghĩa tài nguyên về phong cách
Bảng 2.3 Cấu trúc lưu trữ trong thư mục res
2.2 TEXT TO SPEECH TRONG ANDROID
2.2.1 Giới thiệu về Text to Speech
Tính năng chuyển văn bản thành giọng nói (Text-to-speech hay TTS)
được Google trang bị sẵn cho hệ điều hành Android từ phiên bản 1.6 Donut Tính năng rất hữu ích trong nhiều trường hợp, đặc biệt đối với các phần mềm từ điển, giúp cho bạn có thể nghe phát âm của từ một cách đơn giản, ngoài ra một số phần mềm khác có thể đọc giúp bạn nội dung đang hiển thị trên màn hình, đọc tin nhắn hay số điện thoại đang gọi, hướng dẫn chỉ đường bằng giọng nói Chỉ có một vài phần mềm trên Android tự xây dựng cơ sở dữ liệu phát âm và giải thuật riêng của mình, còn phần lớn đều dựa vào dịch vụ có sẵn của Google để chuyển văn bản thành giọng nói
Vào Settings -> Accessibility -> Text-to-speech output:
Trang 22Cài đặt Text to Speech
Mặc định thì voice data (giọng eng) đã được cài sẵn, vì thế lựa chọn Install voice data chỉ hữu ích khi bạn muốn cài thêm giọng khác như Đức, Tây Ban Nha, Pháp hay Ý Như đã nói ở trên, tất cả dữ liệu đều được Goolge xử lý trên server nên voice data của họ có dung lượng khá nhỏ, chỉ khoảng vài MB:
Cài đặt thêm ngôn ngữ khác
2.3 SQLITE
2.3.1 Giới thiệu SQLite
SQLite là một thư viện thực thi các chức năng của một database engine với đặc điểm giống như một phần mềm portable, không cần cài đặt, không cần cấu hình, không cần
Trang 23server, những điểm này rất khác so với việc sử dụng SQL Server hoặc Oracle, nhưng
nó vẫn có transaction để đảm bảo tính toàn vẹn và an toàn trong quá trình thao tác dữ liệu Có thể so sánh nó có một vài điểm giống với Access, nhưng nhìn chung vẫn có nhiều sự khác biệt
Đặc điểm của SQLite là gọn, nhẹ, đơn giản Chương trình gồm 1 file duy nhất vỏn vẹn chưa đến 500kb, không cần cài đặt, không cần cấu hình hay khởi động mà có thể
sử dụng ngay Dữ liệu database cũng được lưu ở một file duy nhất Không có khái
SQLite không thích hợp với những hệ thống lớn nhưng ở quy mô vừa và nhỏ thì SQLite phát huy uy lực và không hề yếu kém về mặt chức năng hay tốc độ Với các đặc điểm trên SQLite được sử dụng nhiều trong việc phát triển, thử nghiệm v.v và
là sự lựa chọn phù hợp cho những người bắt đầu học database
2.3.2 Chi tiết về các đặc tính SQLite
Không cần phải thiết lập bất kỳ một cấu hình nào để có thể sử dụng SQLite
Các HQTCSDL như SQL Server, Oracle, Postgre thường cần một server riêng để triển khai ứng dụng, cài đặt database engine, các máy khách sẽ kết nối đến server để
xử lý dữ liệu một cách tập trung Tuy nhiên SQLite không làm việc theo cách này mà ứng dụng sẽ truy xuất trực tiếp vào file database, các máy khách cũng có thể truy xuất một file database SQLite để trên một server thông qua cơ chế chia sẻ và bảo mật file của hệ điều hành,người dùng nào truy cập được vào thư mục và có quyền đọc - ghi thì sẽ có thể đọc ghi vào file database SQLite Tuy nhiên sẽ có những hạn chế nhất định
Database do SQLite tạo ra là một file dữ liệu duy nhất
Có thể copy file database SQLite từ hệ thống này sang hệ thống khác, từ hệ thống 32 hay 64 bit, từ phiên bản SQLite này sang phiên bản khác mà không cần chuyển đổi , nâng cấp hệ điều hành, cấu trúc hệ thống hay phải làm lại file database
Cực kỳ nhỏ gọn và dễ sử dụng
Số lượng kiểu dữ liệu của SQlite rất ít, điều này là một đặc trưng của nó, bởi trong SQLite, kiểu dữ liệu là một thuộc tính của chính giá trị được lưu chứ không phải là thuộc tính của cột lưu giá trị đó Tuy vậy, cũng có một vài ràng buộc, là với cột khóa chính kiểu integer thì phải lưu giá trị phải chính xác là kiểu int, ngoài ra SQLite cũng
cố gắng chuyển đổi kiểu của giá trị sang kiểu của cột lưu nó khi có thể Mục đích của việc thiết kế kiểu dữ liệu như vậy nhằm làm cho nó tin cậy và đơn giản hóa việc sử dụng, và cũng để dễ tương thích hơn khi sử dụng với các ngôn ngữ như Tcl hoặc Python
Dữ liệu lưu bao nhiêu thì hệ thống cấp phát cho bấy nhiêu không gian bộ nhớ cho từng dòng dữ liệu, không cấp phát thừa hoặc thiếu không gian lưu trữ cho dữ liệu, nhờ đó mà file database trở nên nhỏ gọn và tốc độ xử lý dữ liệu cũng nhanh hơn SQLite là một hệ quản trị CSDL mã nguồn mở, hoàn toàn miễn phí
Trang 242.4 GIỚI THIỆU VỀ LINQ
LINQ là một tập hợp các thành phần mở rộng cho phép viết các câu truy vấn dữ liệu ngay trong một ngôn ngữ lập trình, như C# hoặc VB.NET Khi tạo một đối tượng LINQ thì Visual Studio sẽ tự động sinh ra các lớp có các thành phần tương ứng với CSDL của chúng ta Khi muốn truy vấn, làm việc với CSDL ta chỉ việc gọi và truy xuất các hàm, thủ tục tương ứng của LINQ mà không cần quan tâm đến các câu lệnh SQL thông thường
2.4.2 Tại sao nên dùng LinQ ?
- Trước đây, cách phổ biến nhất để ứng dụng lấy dữ liệu từ các hệ cơ sở dữ liệu (CSDL) là sử dụng SQL (Structure Query Language - ngôn ngữ truy vấn cấu trúc) SQL có cú pháp rất khác với những ngôn ngữ lập trình phổ dụng như C# và VB.NET, do vậy bạn phải nhọc công "hàn gắn" hai thực thể khác biệt này với nhau trong mỗi dự án phần mềm LINQ ra đời để giảm gánh nặng thao tác "hàn gắn" trên nhiều ngôn ngữ khác nhau
- Hơn nữa để sử dụng trong ứng dụng C# lại thêm 1 tầng phức tạp nữa với các câu lệnh: dùng ConnectionString khởi tạo kết nối tới DataBase, tự khai báo các biến để chạy 1 lệnh - command, rồi còn phải tính toán đầu ra của câu lệnh Điều này rất phức tạp và hay gặp phải lỗi
- LinQ có khả năng hỗ trợ trên nhiều nền tảng khác: XML, SQLite, Excel
2.4.3 Cách dùng LinQ
Vào Project, Add new items rồi chọn như hình dưới đây:
Trang 25Tạo mới file Data Classes
Sau đó, ta kéo các bảng trong CSDL cần tương tác vào khung:
Thêm các table vào Data Classes
Khai báo biến để tương tác với LinQ:
DB.DBDataContext db = new DB.DBDataContext ();
Sử dụng LinQ để viết hàm kiểm tra người dùng:
Trang 26public bool ktUser( String acc, String pass)
{
int count = db.Nguoi_Dungs
Where(c => c.Ten_hien_thi == acc && c.Mat_Khau == pass) .Count();
Câu lệnh được thực hiện tương ứng trong SQL:
SELECT COUNT (*) AS [value]
FROM [dbo] [Nguoi_Dung] AS [t0]
WHERE ( [t0] [Ten_hien_thi] = @p0 ) AND [t0] [Mat_Khau] = @p1 )
2.5 DỊCH VỤ WEB (WEB SERVICES) [1,3,5]
Web Serivce là một công nghệ cho phép client truy xuất để thực hiện mọi tác
vụ như một ứng dụng Web (Web application) thông qua các phương thức Web (Web method) được cung cấp từ dịch vụ Web (Web services) Về bản chất, dịch vụ Web dựa trên XML và HTTP, trong đó XML làm nhiệm vụ mã hóa, giải mã dữ liệu và dùng SOAP để truyền tải dữ liệu Dịch vụ web không phụ thuộc vào nền tảng, vì vậy người dùng có thể sử dụng chúng trên bất cứ hệ điều hành nào
2.5.1 Kiến trúc dịch vụ Web
- Dịch vụ Web cơ bản
- SOAP (Simple Object Access Protocol): cho phép tạo ra các ứng dụng trong
đó một kết quả được chuyển qua nhiều thành phần trung gian trước khi đến được điểm cuối cùng
- WSDL (Web Service Description Language): ngôn ngữ mô tả các dịch vụ Web được trình bày theo tiêu chuẩn một dịch vụ Web dựa trên SOAP WSDL khi được kết hợp với những công cụ thích hợp, cho phép bạn gọi một dịch vụ Web trong chương trình mà không cần biết thực sự dịch vụ Web đang làm gì, truy xuất những chi tiết từ tập tin trả về WSDL và sử dụng chúng trong giao diện chương trình
- UDDI (Universal Description, Discovery, and Integration): tích hợp, khám phá và mô tả đa năng
- Dịch vụ Web mở rộng
- Web - Security: xử lý mã hóa và chữ ký số, cho phép tạo một ứng dụng có tính bảo mật và không bị người khác nghe trộm thông tin
Trang 27- Web - Policy: cho phép mô tả chi tiết hơn một dịch vụ Web cung cấp cho ai
sử dụng và sử dụng nó như thế nào
- Web - I: cung cấp các bộ tiêu chuẩn để giải quyết vấn đề tương thích
- WS-BPEL: xác định các tương tác như là phân nhánh và xử lý đồng quy
- WS-ReliableMessaging: đảm bảo đã nhận được một và chỉ một bản sao
2.5.2 Xây dựng ứng dụng Web
- Từ menu File/ chọn New/ chọn Website (hoặc nhấn tổ hợp phím Shift
+ATL+ N) để tạo một website trong Visual Studio:
Trang 28Web Service này chỉ chạy trên localhost, mục đích của chúng ta là tương tác với Android nên cần sử dụng một Web Service thực sự):
Tạo mới một Web Service chạy trên localhost
- Sau khi tạo xong, ta có kết quả như hình:
Nội dung trong Web Service vừa tạo
Trang 29 Các phương thức (web method) phải đặt ở chế độ public nếu không sẽ không
hiển thị trên web service
Tất cả các phương thức Web phải là một hàm có kết quả trả về
- Dựa theo kết quả trả về, phương thức Web chia hai loại:
Trả về một giá trị duy nhất: int, string, boolean, double,
Trả về một giá trị chứa nhiều giá trị, danh sách các điểm: Datatable, DataSet,
- Phương thức Web có thể có hoặc không có tham số truyền vào Nếu phương thức Web có tham số truyền vào là một đối tượng, thì khi sử dụng dịch vụ Web, cần phải khai báo các ánh xạ của đối tượng đó
- Ví dụ: tạo phương thức kiểm tra người dùng:
Phương thức được viết bằng LinQ, dùng để kiểm tra đăng nhập của người dùng:
Phương thức Web
Chạy ứng dụng để kiểm tra kết quả Chọn phương thức cần kiểm tra (ktUser)
Trang 30Các phương thức trong dịch vụ Web được định nghĩa
Nhập giá trị và chọn Invoke để chạy phương thức Web
Nhập giá trị cần tính trong phương thức ktUser
Kết quả trả về ở dạng XML
Kết quả thực thi
2.5.3 Cách đưa CSDL và ứng dụng Web lên Web Service trên mạng
- Tạo một website