1. Trang chủ
  2. » Kinh Doanh - Tiếp Thị

Luận văn tốt nghiệp Kỹ sư Xây dựng hệ thống trợ giúp ẩm thực trên điện thoại di động

100 208 0

Đ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 100
Dung lượng 5,53 MB

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

Nội dung

Android có một cộng đồng những nhà phát triển rất lớn viết các ứng dụng cho hệ điều hành của mình, điều này khiến Android trở thành hệ điều hành di động có môi trường phát triển cực kì r

Trang 1

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN

Tel (84-511) 736 949, Fax (84-511) 842 771 Website: itf.ud.edu.vn, E-mail: cntt@edu.ud.vn

LUẬN VĂN TỐT NGHIỆP KỸ SƯ

NGÀNH CÔNG NGHỆ THÔNG TIN

MÃ NGÀNH : 05115

ĐỀ TÀI : XÂY DỰNG HỆ THỐNG TRỢ GIÚP ẨM THỰC

TRÊN ĐIỆN THOẠI DI ĐỘNG

Mã số : 09T3 - 121 Ngày bảo vệ : 18-20/06/2014

SINH VIÊN : NGUYỄN THỦY LỘC

ĐÀ NẴNG, 06/2014

Trang 2

LỜI CẢM ƠN

Em xin chân thành cám ơn thầy ThS Võ Đức Hoàng đã tận tình hướng dẫn và giúp đỡ em trong suốt quá trình thực hiện đồ án tốt nghiệp này Em cũng xin gởi lời cám ơn chân thành đến toàn thể quý thầy cô trường Đại học Bách khoa Đà Nẵng, đặc biệt là các thầy cô trong khoa Công nghệ Thông Tin trường Đại Học Bách Khoa – Đại Học Đà Nẵng đã tận tình giảng dạy, truyền đạt những kiến thức, kinh nghiệm quý báu trong suốt quá trình học tập vừa qua

Trong suốt quá trình làm đồ án tốt nghiệp chắc chắn không tránh khỏi những thiếu sót, em rất mong sự giúp đỡ và góp ý của quý thầy cô để em hoàn thiện hơn đề tài của mình

Một lần nữa, em xin chân thành cám ơn

Đà Nẵng, ngày 30 tháng 05 năm 2014

Sinh viên, Nguyễn Thủy Lộc – 09T3

Trang 3

LỜI CAM ĐOAN

Tôi xin cam đoan :

- Những nội dung trong luận văn này là do tôi thực hiện dưới sự

hướng dẫn trực tiếp của thầy ThS Võ Đức Hoàng

- Mọi tham khảo dùng trong luận văn đều được trích dẫn rõ ràng tên

tác giả, tên công trình, thời gian, địa điểm công bố

- Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, tôi

xin chịu hoàn toàn trách nhiệm

Sinh viên, Nguyễn Thủy Lộc – 09T3

Trang 4

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

……….………

……….………

……….………

……….………

……….………

……….………

……….………

Trang 5

NHẬN XÉT CỦA HỘI ĐỒNG PHẢN BIỆN

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

Trang 6

MỤC LỤC

MỞ ĐẦU 1

1.1 GIỚITHIỆU 1

1.1.1 Bối cảnh đề tài 1

1.1.2 Mục đích 1

1.1.3 Ý nghĩa 2

1.2 PHẠMVIĐỀTÀI 2

1.3 TRIỂNKHAIĐỀTÀI 2

1.3.1 Các bước thực hiện 2

1.3.2 Mục tiêu cần đạt được 3

1.4 KẾTQUẢDỰKIẾN 3

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 4

1.1 GIỚITHIỆUCÁCNỀNTẢNGDIĐỘNG 4

1.1.1 Ios 4

1.1.2 Android 5

1.1.3 Windowphone 5

1.1.4 BlackBerry 6

1.2 GIỚITHIỆUHỆĐIỀUHÀNHANDROID 6

1.2.1 Giới thiệu 6

1.2.2 Lịch sử phát triển 7

1.2.3 Kiến trúc của hệ điều hành Android 8

1.3 LẬPTRÌNHỨNGDỤNGTRONGANDROID 10

1.3.1 Công cụ hỗ trợ 10

1.3.2 Các thành phần chính trong android project 10

1.3.2.1 Các thành phần chính trong android 10

1.3.2.2 AndroidManifest 10

1.3.3 Activity 11

1.3.3.1 Các phương thức trong chu kỳ sống của một activity 12

1.3.4 Intent 13

1.3.4.1 Các thuộc tính của một đối tượng intent 14

1.3.4.2 Sử dụng Intent 14

1.3.5 Adapter trong andoid 15

1.3.6 Lưu trữ dữ liệu trong android 15

1.3.7 Giao diện trong android 15

1.3.7.1 View 15

1.3.7.2 ViewGroup 16

1.4 HỆQUẢNTRỊCƠSỞDỮLIỆUSQLITE 19

1.4.1 Giới thiệu 19

1.4.2 Đặc điểm 19

1.4.3 Phiên bản 20

1.5 WEB SERVICE 20

1.5.1 Giới thiệu 20

Trang 7

1.5.2 Đặc điểm webservice 20

1.5.2.1 Ưu điểm 21

1.5.2.2 Nhược điểm 22

1.6 RESTFULWEBSERVICE 22

1.6.1 Khái niệm 22

1.6.1.1 REST 22

1.6.1.2 Kiến trúc 22

1.6.1.3 RESTFul Web Service 23

1.6.1.4 Cơ chế hoạt động 23

1.6.1.5 Một số thành phần của RESTful Web Service 24

1.6.2 Json và Gson 25

1.6.2.1 Sơ lược về json 25

1.6.2.2 So sánh với XML 25

1.6.2.3 Sơ lược về Gson 27

1.7 JSPVÀSERVLET 28

1.7.1 JSP 28

1.7.2 SERVLET 28

1.7.3 MÔ HÌNH MVC TRONG JAVA WEB JSP SERVLET 29

1.7.3.1 Khái niệm cơ bản về mô hình MVC 29

1.7.3.2 Mô hình MVC trong ứng dụng web với JSP Servlet 29

CHƯƠNG 2 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 30

2.1 PHÂNTÍCHYÊUCẦU 30

2.1.1 Mô tả bài toán 30

2.1.2 Phân tích hiện trạng ẩm thực Việt Nam 31

2.1.2.1 Giới thiệu sơ lược về ẩm thực Việt Nam 31

2.1.2.2 Đặc điểm 31

2.1.3 Phân tích yêu cầu bài toán 32

2.1.3.1 Yêu cầu chức năng 32

2.1.3.2 Yêu cầu phi chức năng 33

2.1.4 Phân tích tính khả thi 33

2.1.5 Công nghệ 33

2.2 PHÂNTÍCHVÀTHIẾTKẾHỆTHỐNG 34

2.2.1 Phân tích và thiết kế ứng dụng di động Android 34

2.2.1.1 Usecase 34

2.2.1.2 Biểu đồ hoạt động 42

2.2.1.3 Biểu đồ tuần tự 49

2.2.1.4 Biểu đồ lớp 54

2.2.1.5 Thiết kế cơ sở dữ liệu 54

2.2.2 Phân tích và thiết kế Web Server 58

2.2.2.1 Web admin 58

2.2.2.2 Sơ đồ lớp 65

2.2.2.3 Thiết kế cơ sở dữ liệu 65

CHƯƠNG 3 TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ 67

3.1 KẾTQUẢ 67

3.1.1 Kết quả triển khai Web Service 67

Trang 8

3.1.2 Kết quả triển khai Web Admin 67

3.1.3 Kết quả triển khai ứng dụng trên di động 78

3.2 ĐÁNHGIÁ 85

3.2.1 Bảng đánh giá kết quả thực hiện 85

3.2.1.1 Ứng dụng trên điện thoại di động 85

3.2.1.2 Hệ thống Server 85

3.2.2 Những điều đạt được 85

3.2.2.1 Hệ thống Web server 86

3.2.2.2 Ứng dụng trên điện thoại di động 86

3.2.3 Những điều chưa đạt được 86

3.3 HƯỚNGPHÁTTRIỂN 86

TÀI LIỆU THAM KHẢO 87

TÓM TẮT LUẬN VĂN TỐT NGHIỆP 88

PHỤ LỤC 1

Trang 9

DANH SÁCH HÌNH VẼ

Hình 1: Giới thiệu mobile 4

Hình 2: Giới thiệu android 6

Hình 3: Kiến trúc hệ điều hành android 8

Hình 4: Sơ đồ hoạt động activity trong android 11

Hình 5: Sơ đồ Intent 13

Hình 6: Sơ đồ giao diện trong android 16

Hình 7: Framelayout android 17

Hình 8: Relativelayout android 18

Hình 9; Tablelayout android 18

Hình 10: Quản trị SQLite 19

Hình 11: Kiến trúc REST 22

Hình 12: Cơ chế hoạt động của REST 23

Hình 13: Use case của ứng dụng android 34

Hình 14: Biểu đồ hoạt động xem văn hóa ẩm thực 42

Hình 15: Biểu đồ hoạt động cập nhật dữ liệu 42

Hình 16: Biểu đồ hoạt động tìm kiếm món ăn 43

Hình 17: Biểu đồ hoạt động gửip hản hồi cho từng món ăn 43

Hình 18: Biểu đồ hoạt động tạo ghi chú cho từng món ăn 44

Hình 19: Biểu đồ hoạt động chỉnh sửa ghi chú cho từng món ăn 44

Hình 20: Biểu đồ hoạt động chia sẻ món ăn trên facebook 45

Hình 21: Biểu đồ hoạt động xem danh sách món ăn 45

Hình 22: Biểu đồ hoạt động thêm món ăn yêu thích 46

Hình 23: Biểu đồ hoạt động xóa món ăn yêu thích 46

Hình 24: Biểu đồ hoạt động chỉnh sửa hẹn giờ 47

Hình 25: Biểu đồ hoạt động đặt giờ 47

Hình 26: Biểu đồ hoạt động xóa hẹn giờ 48

Hình 27: Biểu đồ hoạt động gửi phản hồi cho ứng dụng 48

Hình 28: Biểu đồ tuần tự xem văn hóa ẩm thực 49

Hình 29: Biểu đồ tuần tự cập nhật dữ liệu 49

Hình 30: Biểu đồ tuần tự tìm kiếm món ăn 49

Hình 31: Biểu đồ tuần tự xem danh sách món ăn 50

Hình 32: Biểu đồ tuần tự gửi phản hồi cho từng món ăn 50

Hình 33: Biểu đồ tuần tự tạo ghi chú cho từng món ăn 50

Hình 34: Biểu đồ tuần tự chỉnh sửa chi chú cho từng món ăn 51

Hình 35: Biểu đồ tuần tự chia sẻ món ăn trên facebook 51

Hình 36: Biểu đồ tuần tự thêm món ăn yêu thích 51

Hình 37: Biểu đồ tuần tự xem món ăn yêu thích 52

Hình 38: Biểu đồ tuần tự chỉnh sửa hẹn giờ 52

Hình 39: Biểu đồ tuần tự thêm hẹn giờ 52

Hình 40: Biểu đồ tuần tự xóa hẹn giờ 53

Hình 41: Biểu đồ tuần tự gửi phản hồi cho ứng dụng 53

Hình 42: Biểu đồ lớp 54

Hình 43: Biểu đồ lớp chi tiết 54

Hình 44: Quan hệ giữa các bảng trong cơ sở dữ liệu 55

Hình 45: Sơ đồ usecase web admin 58

Trang 10

Hình 46: Biểu đồ hoạt động đăng nhập 61

Hình 47: Biểu đồ hoạt động xem dữ liệu 61

Hình 48: Biểu đồ hoạt động thêm dữ liệu 62

Hình 49: Biểu đồ hoạt động sửa dữ liệu 62

Hình 50: Biểu đồ hoạt động xóa dữ liệu 63

Hình 51: Biểu đồ tuần tự đăng nhập 63

Hình 52: Biểu đồ tuần tự xem dữ liệu 63

Hình 53: Biểu đồ tuần tự thêm dữ liệu 64

Hình 54: Biểu đồ tuần tự xóa dữ liệu 64

Hình 55: Biểu đồ tuần tự sửa dữ liệu 64

Hình 56: Sơ đồ lớp web admin 65

Hình 57: Sơ đồ lớp chi tiết web admin 65

Hình 58: Dữ liệu Json trả về từ Web Service 67

Hình 59: Đăng nhập 67

Hình 60: Quản lý món ăn 68

Hình 61: Thêm món ăn 68

Hình 62: Xem, sửa món ăn 69

Hình 63: Xóa món ăn 69

Hình 64: Quản lý loại món ăn 70

Hình 65: Thêm mới loại món ăn 70

Hình 66: Xem và sửa loại món ăn 71

Hình 67: Xóa loại món ăn 71

Hình 68: Quản lý vùng 72

Hình 69: Thêm mới vùng 72

Hình 70: Xem và sửa vùng 73

Hình 71: Quản lý xuất xứ 73

Hình 72: Thêm mới xuất xứ 74

Hình 73: Xem và sửa xuất xứ 74

Hình 74: Xóa xuất xứ 75

Hình 75: Quản lý nguyên liệu 75

Hình 76: Thêm mới nguyên liệu 76

Hình 77: Xem và sửa nguyên liệu 76

Hình 78: Xóa nguyên liệu 77

Hình 79: Quản lý bình luận 77

Hình 80: Màn hình main 78

Hình 81: Màn hình văn hóa ẩm thực 78

Hình 82: Màn hình dialog chọn vùng 79

Hình 83: Màn hình dialog chọn xuất xứ 79

Hình 84: Màn hình danh sách món ăn 80

Hình 85: Màn hình chi tiết món ăn 80

Hình 86: Màn hình chi tiết công thức món ăn 81

Hình 87: Màn hình ghi chú món ăn 81

Hình 88: Màn hình bình luận món ăn 82

Hình 89: Màn hình hẹn giờ nấu ăn 82

Hình 90: Màn hình danh sách yêu thích 83

Hình 91: Màn hình danh sách hẹn giờ 83

Trang 11

DANH SÁCH BẢNG BIỂU

Bảng 1: Các thuộc tính của đối tượng intent 14

Bảng 2: Các hàm thực thi Activity 14

Bảng 3: Các method của HTTP được hỗ trợ 24

Bảng 4: Đối tượng Json 26

Bảng 5: Mảng Json 26

Bảng 6: Ví dụ sử dụng Gson 27

Bảng 7: Mô tả usecase xem văn hóa ẩm thực 34

Bảng 8: Mô tả usecase cập nhật dữ liệu 35

Bảng 9: Mô tả usecase tìm kiếm món ăn 35

Bảng 10: Mô tả usecase xem chi tiết món ăn 36

Bảng 11: Mô tả usecase gửi phản hồi cho từng món ăn 36

Bảng 12: Mô tả usecase tạo ghi chú cho món ăn 37

Bảng 13: Mô tả usecase chỉnh sửa ghi chú món ăn 37

Bảng 14: Mô tả usecase chia sẻ món ăn trên facebook 38

Bảng 15: Mô tả usecase xem danh sách món ăn 38

Bảng 16: Mô tả usecase thêm món ăn yêu thích 39

Bảng 17: Mô tả usecase xóa món ăn yêu thích 39

Bảng 18: Mô tả usecase chỉnh sửa hẹn giờ 40

Bảng 19: Mô tả usecase xóa hẹn giờ 40

Bảng 20: Mô tả usecase đặt giờ 41

Bảng 21: Mô tả usecase gửi phản hồi cho ứng dụng 41

Bảng 22: Bảng định mức 55

Bảng 23: Loại món ăn 56

Bảng 24: Bảng Vùng 56

Bảng 25: Xuất xứ 56

Bảng 26: Nguyên liệu 56

Bảng 27: Món ăn 57

Bảng 28: Món ăn Nguyên liệu 57

Bảng 29: Hẹn giờ 57

Bảng 30: Mô tả usecase đăng nhập 58

Bảng 31: Mô tả usecase thêm dữ liệu 59

Bảng 32: Mô tả usecase sửa dữ liệu 59

Bảng 33: Mô tả usecase xóa dữ liệu 60

Bảng 34: Mô tả usecase xem dữ liệu 60

Bảng 35: user 66

Bảng 36: RateAndBinhLuan 66

Bảng 37: Bảng đánh giá kết quả thục hiện trên điện thoại di động 85

Bảng 38: Bảng đánh giá kết quả thực hiện trên hệ thống server 85

Trang 12

cụ như một cuốn sổ tay mini chỉ dẫn về nấu ăn, về nghệ thuật ẩm thực có thể mang theo mọi lúc, tiện lợi giúp chúng ta có thể tự mình nấu những món ăn ngon cho chính mình, cho bạn bè, người thân hay gia đình thưởng thức sau những giờ làm việc hút thể lực và chất xám

Đi kèm với đó, sự phát triển của khoa học công nghệ ngày càng nhanh chóng Điện thoại di động không còn đơn thuần là thiết bị liên lạc, mà trở thành một công cụ giải trí đa phương tiện và một vật không thể thiếu của mọi người Chính sự phát triển

và phổ biến mạnh mẽ của di động nên ngày càng có nhiều ứng dụng cho di động được phát triển Chính vì những ưu thế trên của điện thoại thông minh, ý tưởng kết hợp sổ tay nấu ăn truyền thống và điện thoại thông minh được nghĩ đến Một ứng dụng trên điện thoại thông minh có chức năng như một cuốn sổ tay mini hướng dẫn về ẩm thực, gọn nhẹ và dễ mang theo gần như mọi lúc mọi nơi giúp mọi người có thể dễ dàng chế biến các món ăn ngon, đa dạng mà không phải mất nhiều công sức, thì giờ tìm hiểu

Vì những lý do đó tôi quyết định đưa ra ý tưởng làm một cuốn sổ tay mini giới thiệu về ẩm thực Việt Nam trên thiết bị di động để nghiên cứu và triển khai

1.1.2 Mục đích

Tạo ra một ứng dụng giống như một cuốn sổ tay mini về ẩm thực trên điện thoại

di động, một ứng dụng tiện lợi, nhỏ gọn có thể bỏ túi mang theo, có thể đem ra dùng trong nhiều trường hợp Giúp bạn có thể chế biến được những món ăn ngon khi cần thiết hoặc nâng cao trình độ nấu ăn, hiểu biết về văn hóa ẩm thực mà không cần phải

bỏ ra nhiều công sức tìm kiếm bên đống sách vở dạy nấu ăn hay những chương trình dạy nấu ăn vốn tiêu tốn rất nhiều thời gian quý báu

Ứng dụng sẽ cung cấp cho người dùng các thông tin về văn hóa ẩm thực các vùng miền, cách chế biến các món ăn hay là nguồn gốc, lịch sử ra đời của các món ăn cùng nhiều tính năng hữu ích khác

Trang 13

Xây dựng một website quản lý dữ liệu về thông tin ẩm thực và một webservice cung cấp thông tin về ẩm thực cho ứng dụng di động

1.1.3 Ý nghĩa

- Cung cấp một ứng dụng hữu ích hỗ trợ người dùng về vấn đề ẩm thực, tiết kiệm thời gian, công sức và chi phí mà vẫn có thể dễ dàng chế biến được những món ăn ngon như ý

- Tạo được một website quản lý thông tin dữ liệu ẩm thực và một webservice cung cấp dữ liệu về ẩm thực

- Thông qua quá trình xây dựng ứng dụng, em có thể tổng hợp lại những kiến thức mà mình đã được tích lũy trong thời gian học tập tại trường

- Tích lũy thêm được nhiều kinh nghiệm thực tế, học thêm được nhiều công nghệ mới

1.2 PHẠM VI ĐỀ TÀI

Ứng dụng di động được xây dựng dựa trên nền tảng hệ điều hành di động Android Ứng dụng có thể cập nhật sữ liệu từ webservice và lưu về bộ nhớ cục bộ trên thiết bị Kho dữ liệu ẩm thực được xây dựng và phát triển trên mạng Internet, cung cấp web service và các phương thức để sử dụng và khai thác dữ liệu từ kho dữ liệu ẩm thực

1.3 TRIỂN KHAI ĐỀ TÀI

1.3.1 Các bước thực hiện

- Đọc hiểu đề tài, tìm kiếm các tài liệu liên quan

- Phân tích yêu cầu

- Phân tích và thiết kế hệ thống

- Xây dựng cơ sở dữ liệu

- Xây dựng Web admin quản lý cơ sỡ dữ liệu

- Xây dựng Web service cung cấp dữ liệu

- Xây dựng ứng dụng trên thiết bị di động Android

- Triển khai hoạt động cho kho dữ liệu và ứng dụng, đồng thời tiến hành kiểm thử đảm bảo chất lượng sản phẩm

- Viết báo cáo tổng kết đề tài và đề ra hướng phát triển

Trang 14

1.3.2 Mục tiêu cần đạt được

- Xây dựng thành công Web admin và Web service cho kho dữ liệu ẩm thực

- Xây dựng thành công ứng dụng trên điện thoại di động Android

- Triển khai ứng dụng, phối hợp trao đổi dữ liệu giữa ứng dụng di động và ứng dụng web thành công

1.4 KẾT QUẢ DỰ KIẾN

Với mục đích đề ra thì kết quả cần đạt được trong đề tài luận văn tốt nghiệp này:

- Tìm hiểu nền tảng di động Android

- Tìm hiểu Web service

- Phân tích yêu cầu người dùng và thiết kế hệ thống

- Xây dựng và triển khai hệ thống trong thực tế

Trang 15

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT

1.1 GIỚI THIỆU CÁC NỀN TẢNG DI ĐỘNG

Ngày này, thị trường di động đang phát triển mạnh mẽ chưa từng thấy với vô vàn các nhãn hiệu, kiểu dáng, tính năng Đã biến chiếc điện thoại thành một thiết bị giải trí đa phương tiện không thể thiếu Với lợi thế nhỏ gọn, được mọi người sử dụng đem theo mọi lúc mọi nơi, nhưng cũng vì nhỏ gọn như vậy cũng là một bất lợi về xử lý

và tốc độ Để đảm bảo một chiếc điện thoại thông minh hoạt động tốt thì nó cần có một

hệ điều hành quản lý thiết bị

Đi kèm với sự phát triển phần cứng trên thiết bị động thì cuộc chiến của các nhà phát triển các hệ điều hành trên điện thoại

di động cũng diễn ra hết sức khốc liệt Hiện nay, các nền tảng di động lớn được biết đến như sau

1.1.1 Ios

Nền tảng di động iOS với điện thoại di động thông minh iPhone, với thiết kế đẹp, thời trang, cảm ứng mượt mà, màn hình đẹp và sắc nét cùng với tài năng của "thánh"

Steve Jobs đã khiến cho iPhone trở thành hiện tượng trên mọi thị trường, đặc biệt là

ở Mỹ Doanh số bán ra của iPhone tăng dần qua các năm, và dần dần thống lĩnh thị trường của nhiều nước iPhone dù mỗi năm chỉ ra một phiên bản mới nhưng sức nóng

đủ lan tỏa khắp làng di động, do đó, iOS vẫn chưa bao giờ "già"

iOS là hệ điều hành "đóng" hoạt động trên iPhone, iPad, iPod iOS đã quyết định

rất nhiều đối với sự thành công của Apple, với giao diện bóng bẩy, đẹp mắt, và dễ sử dụng Tất cả chỉ là chạm và vuốt để thực thi Cùng với chính sách hợp lý để thu hút các lập trình viên viết ứng dụng, kho ứng dụng Appstore ngày càng lớn khiến cho người dùng càng thêm thích thú, mọi nhu cầu của từng người đều có thể được đáp ứng Cũng như việc Apple cũng tung ra cập nhật, vá các lỗi liên tục khi phát hiện, khiến cho iOS ngày càng trở nên "thông minh" hơn, an toàn hơn

Nhưng nếu gọi iOS là thống trị năm 2012 thì điều đó cũng là chưa thể Vì iOS chỉ được cài giới hạn trên thiết bị của Apple gồm những thiết bị như iPhone, iPad, iPod Thị phần của thiết bị Apple trên thế giới nói chung là không lớn, số liệu các bạn thấy trên các báo đa số chỉ thống kê tại Mỹ, nhưng đã gọi là thống trị thì phải là thống trị trên thị trường di động toàn thế giới

Hình 1: Giới thiệu mobile

Trang 16

1.1.2 Android

Mặc dù sinh sau đẻ muộn, nhưng Android đang có những bước tiến thần tốc, trong thời gian ngắn đã đạt được nhiều điều khiến mọi hệ điều hành di động mơ ước: khoảng 700.000 điện thoại Android được kích hoạt mỗi ngày

Khi mà iOS ngày càng bành trướng mà Symbian lại không đủ sức để cạnh tranh Các lập trình viên, các nhà sản xuất điện thoại chú ý đến Android Hệ điều hành di động mở được Google phát triển dựa trên nền tảng Linux

Android ngày càng lớn mạnh về số lượng và chất lượng bởi sự linh hoạt từ nền

tảng Google, phù hợp với cả smartphone tầm thấp lẫn giá cao Hàng loạt các nhà sản xuất điện thoại di động sử dụng Android làm hệ điều hành chính cho các sản phẩm của mình Như HTC, Samsung, LG, Motorola, Sony Ericsson Từ điện thoại, cho đến máy tính bảng của các hãng này đều dùng hệ điều hành Android Các nhà lập trình viết ứng dụng ngày càng nhiều trên Android Market Kho ứng dụng đang cạnh tranh trực tiếp với AppStore của Apple Chính vì điều này mà đã khiến Android ngày càng bành trướng trên thị trường khắp các châu lục, và dần dần Android sẽ là hệ điều hành thống trị

Nhưng các bạn có thể thấy, dường như Android đang ở trên đỉnh cao của mình Chính vì có quá nhiều thiết bị, mỗi thiết bị có cấu hình riêng, nhà sản xuất tùy biến riêng và việc có quá nhiều ứng dụng, nhưng lại không theo một chuẩn cụ thể nào Khiến Android ngày càng bị phân mảnh và rời rạc

Android được cập nhật quá thường xuyên, dẫn đến tình trạng trên thị trường có nhiều phiên bản cùng tồn tại, được phát hành song song với nhau Google đang dần muốn kiểm soát và hạn chế sự phân mảnh, nhưng đồng thời cũng làm mất dần tính

"mở" vốn là triết lý cơ bản của Android

1.1.3 Windowphone

Windows Phone là hệ điều hành của Microsoft dành cho smartphone kế tục nền tảng Windows Mobile, mặc dù chúng không tương thích với nhau Khác với Windows Mobile, Windows Phone tập trung vào sự phát triển của Marketplace - nơi các nhà phát triển có thể cung cấp sản phẩm (miễn phí hoặc có phí) tới người dùng Windows Phone được bán vào tháng 10 năm 2010 và đầu năm 2011 tại Châu Á Phiên bản mới nhất hiện tại là Windows Phone 8.1 (Tên mã Blue) tiếp nối Windows Phone 8 (Apollo), hiện vẫn ở phiên bản thử nghiệm cho nhà phát triển (Preview for Developers) Với Windows Phone, Microsoft đã phát triển giao diện người dùng mới mang tên Modern (trước đây tên là Metro) - tích hợp khả năng liên kết với các phần cứng và phần mềm của hãng thứ ba một cách dễ dàng

Trang 17

1.1.4 BlackBerry

Là dòng máy Smartphone cao cấp và nổi tiếng trên thế giới do hãng Research In Motion cung cấp Ngoài những tính năng thông thường, điểm tạo nên sự khác biệt của máy BlackBerry là kiểu thiết kế rất đặc trưng; pin tốt và hơn cả là dịch vụ Push Mail nổi tiếng và thương hiệu BlackBerry được xây dựng rất thành công

BlackBery OS 6 được RIM công bố tại sự kiện Wireless Enterprise Symposium (diễn ra từ 27 đến 29/4 tại Mỹ) RIM chưa đưa ra chi tiết về hệ điều hành mới, ngoài một đoạn video quảng cáo khá ấn tượng Theo những thông tin đầu tiên, nhiều cải tiến từ giao diện, màn hình Home mới, menu pop-up, khả năng chuyển dịch, trình duyệt web mới dựa trên nền tảng WebKit tương thích HTML5 Ngoài ra, BlackBerry

OS 6 hỗ trợ khả năng điều khiển trên màn hình cảm ứng đa điểm tốt hơn

1.2 GIỚI THIỆU HỆ ĐIỀU HÀNH ANDROID

1.2.1 Giới thiệu

Hình 2: Giới thiệu android

Android là hệ điều hành trên điện thoại di động phát triển bởi Google và dựa trên nền tảng Linux Trước đây, Android được phát triển bởi công ty liên hợp Android (sau đó được Google mua lại vào năm 2005) Theo nghiên cứu của công ty nghiên cứu thị trường NPD (National Purchase Diary), thiết bị di động sử dụng hệ điều hành android bán được tại Mỹ trong quý I năm 2012 xếp vị trí đầu tiên với 51%, thứ 2 là iOS ở vị trí với 30.7% Android có một cộng đồng những nhà phát triển rất lớn viết các ứng dụng cho hệ điều hành của mình, điều này khiến Android trở thành hệ điều hành di động có môi trường phát triển cực kì rộng lớn Các nhà phát triển viết ứng dụng cho Android dựa trên ngôn ngữ Java Sự ra mắt của Android vào ngày 5 tháng

11 năm 2007 gắn với sự thành lập của liên minh thiết bị cầm tay mã nguồn mở, bao gồm 78 công ty phần cứng, phần mềm và viễn thông nhằm mục đính tạo nên một chuẩn mở cho điện thoại di động trong tương lai Google công bố hầu hết các mã nguồn của Android theo bản cấp phép Apache

Trang 18

Android được xây dựng để cho phép các nhà phát triển tạo ra các ứng dụng di động hấp dẫn tận dụng tất cả chức năng một chiếc điện thoại đã cung cấp Nó được xây dựng để thực sự mở Ví dụ, một ứng dụng có thể kêu gọi bất kỳ chức năng lõi của điện thoại như thực hiện cuộc gọi, gửi tin nhắn văn bản hoặc bằng cách sử dụng máy ảnh, cho phép các nhà phát triển tạo ra nhiều phong cách khác nhau

Android được xây dựng trên hệ điều hành mở Linux Vì thế, nền tảng Android luôn được cộng đồng quan tâm và phát triển liên tục

Android không phân biệt giữa các ứng dụng lõi của điện thoại và các ứng dụng của bên thứ ba Tất cả các ứng dụng đều có thể giao tiếp được với nhau, và sử dụng một cách tối đa nhờ vào khả năng của nhà phát triển

Android đang dần phá bỏ rào cản để xây dựng các ứng dụng mới và sáng tạo Ví

dụ, một nhà phát triển có thể kết hợp thông tin từ các trang web với dữ liệu trên điện thoại di động của cá nhân, hoặc chỉ ra địa chỉ hiện tại của một người nào đó khi họ nằm trong một phạm vi cố định…

Android cung cấp một loạt các thư viện công cụ hữu ích và có thể được sử dụng xây dựng các ứng dụng phong phú

1.2.2 Lịch sử phát triển

- Tháng 10-2003: Android, inc được thành lập tại Palo Alto, California bởi Andy Rubin, Rich Miners, Nick Sears và Chris White

- Tháng 8-2005: Google mua lại Android inc

- Tháng 11-2007: Phát hành Android beta SDK (Software Development Kit)

- Tháng 9-2008: Chiếc điện thoại chạy trên hệ điều hành Android lần đầu tiên được giới thiệu, chiếc HTC Dream(G1) chạy Android 1.0

- Tháng 2-2009: Phát hành bản cập nhật Android 1.1 dành riêng cho T-Mobile G1

- Tháng 4-2009: Phát hành bản cập nhật Android 1.5(Cupcake) dựa trên nhân linux 2.6.27

- Tháng 9-2009: Phát hành bộ SDK dành cho Android 1.6 (Donut) dựa trên nhân Linux 2.6.29

- Tháng 10-2009: Phát hành bộ SDK dành cho Android 2.0(Eclair) dựa trên nhân Linux 2.6.29

- Tháng 12-2009: Phát hành bộ SDK 2.0.1

- Tháng 1-2010: Phát hành bộ SDK 2.1

- Tháng 5-2010: Phát hành bộ SDK Android 2.2 (Froyo)

Trang 19

- Tháng 12-2010: Phát hành bộ SDK Android 2.3 (Gingerbread)

- Tháng 2-2011: Phát hành Android 2.3.3 dựa trên nhân Linux 2.6.35

- Tháng 2-2011: Phát hành SDK Android 3.0 dành cho tablet được phát hành dựa trên nhân linux 2.6.36

- Tháng 5-2011: Phát hành bộ SDK Android 3.1

- Tháng 7-2011: Phát hành bộ SDK Android 3.2

- Tháng 12-2011: Phát hành bộ SDK Android 4.0 (Ice Cream Sandwich)

- Tháng 7-2012: Phát hành bộ SDK Android 4.1 (Jelly Bean)

- Tháng 12-2012: Phát hành bộ SDK Android 4.2 (Vẫn là Jelly Bean)

- Tháng 6-2013: Phát hành bộ SDK Android 4.3 (Vẫn là Jelly Bean)

- Tháng 10-2013: Phát hành bộ SDK Android 4.4 (KitKat)

1.2.3 Kiến trúc của hệ điều hành Android

Hình 3: Kiến trúc hệ điều hành android

Có 5 tầng cơ bản trong hệ điều hành Android: Application, Framework, Android Runtime, Native Libraries, Linux Kernel Mỗi tầng làm việc đều nhờ sự giúp đỡ của tầng dưới

Trang 20

Tầng Application: bao gồm tất cả các ứng dụng có trong thiết bị chạy Android

như: phone, contact, game, browser,… và một số ứng dụng chạy ngầm.Người dùng

có quyền gỡ bỏ hay cài đặt các ứng dụng tùy thích ở tầng này Tất cả các ứng dụng được viết bằng cách sử dụng ngôn ngữ lập trình Java

Tầng Application Framework: tầng Google xây dựng cho các nhà phát triển xây

dựng ứng dụng của họ trên Android,bằng cách gọi các API có sẵn mà Google đã viết

để sử dụng các tính năng của phần cứng mà không cần hiểu cấu trúc bên dưới

Tầng Native Libraries: Android bao gồm một bộ thư viện C/C++, được sử dụng

bởi các thành phần khác nhau của hệ thống Android Những khả năng tiếp xúc với các nhà phát triển thông qua các khuôn khổ ứng dụng Android Một số các thư viện lõi được liệt kê dưới đây:

System C library: thực hiện các hệ thống thư viện chuẩn C (LIBC – Library C), điều chỉnh cho nhúng dựa trên Linux các thiết bị

Media Libraries: dựa trên OpenCORE PacketVideo's; sự hỗ trợ các thư viện phát lại và ghi âm của âm thanh và phổ biến nhiều định dạng video, cũng như các tập tin hình ảnh tĩnh, bao gồm MPEG4, H.264, MP3, AAC, AMR, JPG, và PNG

Surface Manager: quản lý quyền truy cập vào hệ thống con hiển thị và hoàn toàn phù hợp chất 2D và 3D lớp từ nhiều ứng dụng đồ họa

LibWebCore: một trình duyệt web hiện đại, động cơ có quyền hạn cả hai trình duyệt web của Android và một xem nhúng

SGL: các công cụ đồ họa 2D tiềm ẩn 3D libraries:một việc thực hiện dựa trên OpenGL ES 1,0 API; các thư viện, hoặc

sử dụng phần cứng tăng tốc 3D (nếu có) hoặc bao gồm, cao tối ưu rasterizer phần mềm 3D

SQLite: một quan hệ cơ sở dữ liệu mạnh mẽ và nhẹ có sẵn cho tất cả các ứng dụng

Tầng Runtime: Android bao gồm một tập hợp các thư viện cơ bản mà cung cấp

hầu hết các chức năng có sẵn trong các thư viện lõi của ngôn ngữ lập trình Java Tất

cả các ứng dụng Android đều chạy trong tiến trình riêng Máy ảo Dalvik đã được viết

để cho một thiết bị có thể chạy nhiều máy ảo hiệu quả Các VM Dalvik thực thi các tập tin thực thi Dalvik (dex) Định dạng được tối ưu hóa cho bộ nhớ tối thiểu VM là dựa trên register-based, và chạy các lớp đã được biên dịch bởi một trình biên dịch Java để chuyển đổi thành các định dạng dex Các VM Dalvik dựa vào nhân Linux cho các chức năng cơ bản như luồng và quản lý bộ nhớ thấp

Tầng Linux Kernel: đây là nhân của hệ điều hành Android, mọi xử lý hệ thống

đều phải thông qua tầng này Linux Kernel cung cấp các trình điều khiển thiết bị phần cứng như: camera, USB, bluetooth… Kernel hoạt động như một lớp trừu tượng giữa phần cứng và phần mềm còn lại của hệ thống

Trang 21

1.3 LẬP TRÌNH ỨNG DỤNG TRONG ANDROID

1.3.1 Công cụ hỗ trợ

- Bộ Android SDK của Google

- Bộ JDK 5 trở lên

- IDE: eclipse hoặc netBean…

1.3.2 Các thành phần chính trong android project

1.3.2.1 Các thành phần chính trong android

Một ứng dụng android được xây dựng từ các thành phần cơ bản sau:

- 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

- 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 1 Activity hay Service để thực hiện công việc bạn 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

1.3.2.2 AndroidManifest

Trong bất kì một project Android nào khi tạo ra đều có một file AndroidManifest.xml, file này được dùng để định nghĩa các screen sử dụng, các permission cũng như các theme cho ứng dụng Đồng thời nó cũng chứa thông tin về phiên bản SDK cũng như main activity sẽ chạy đầu tiên File này được tự động sinh ra khi tạo một Android project Trong file manifest bao giờ cũng có 3 thành phần chính đó là: application, permission và version

Trang 22

- Application: bên trong thẻ này chứa các thuộc tính được định nghĩa cho ứng

Ngoài ra còn nhiều thuộc tính khác…

- Permission: Bao gồm các thuộc tính chỉ định quyền truy xuất và sử

dụng tài nguyên của ứng dụng Đây là cơ chế bảo mật của android, mặc định ứng dụng android không được cấp quyền nào, để cấp quyền cho ứng dụng ta sử dụng thuộc tính <user-permission>, định dạng như sau: <uses-permission android:name="string" /> Trong đó: android:name dùng xác định tên quyền hạn

- SDK version: chỉ ra phiên bản SDK nhỏ nhất và chuẩn nhất mà ứng dụng hiện

Hình 4: Sơ đồ hoạt động activity trong android

Trang 23

Các trạng thái trong Activity:

- Running: Activity đang hiển thị trên màn hình (foreground)

- 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 đó

Vòng đời của một activity bao gồm 3 vòng chính:

- Entire lifetime: từ phương thức onCreate() đến onDestroy()

- Visible lifetime: từ phương thức onStart() đến onStop()

- Foreground lifetime: từ phương thức onResume() đến onPause()

1.3.3.1 Các phương thức trong chu kỳ sống của một activity

- onCreate() Được gọi khi activity lần đầu tiên được tạo Đây là nơi ta nên thực hiện khởi tạo tĩnh thông thường — tạo giao diện người dùng (các view), nối dữ liệu với các danh sách, v.v

Tham số được truyền một đối tượng Bundle chứa trạng thái cũ của activity, nếu như trạng thái đã được ghi lại

onStart() luôn được gọi sau đó

- onRestart() Được gọi ngay trước khi activity được khởi động lại sau khi đã bị dừng (stopped) onStart() luôn được gọi sau đó

- onResume() Được gọi ngay trước khi activity bắt đầu tương tác với người dùng

Tại thời điểm này, activity nằm trên đỉnh activity stack và nhận input của người dùng

Tiếp theo bao giờ cùng là onPause()

- onPause() Được gọi khi hệ thống chuẩn bị chuyển sang một activity khác

Trang 24

Phương thức này thường dùng để ghi các thay đổi chưa được lưu, dừng hoạt hình

và những công việc tốn CPU khác, v.v

Nó nên làm công việc của mình thật nhanh vì activity tiếp theo phải đợi nó kết thúc thì mới resume được

Tiếp theo là onResume() nếu activity quay lại, hoặc onStop() nếu nó không còn được hiển thị đối với người dùng

Activity trong trạng thái này có thể bị hệ thống kill

- onStop() Được gọi khi activity không còn hiển thị đối với người dùng

Việc này có thể xảy ra khi nó bị hủy (destroyed), hoặc do một activity khác (cũ hoặc mới) đã được resume và che nó

Tiếp theo là onRestart() nếu activity tương tác trở lại với người dùng, hoặc onDestroy() nếu nó không quay lại

Hệ thống có thể kill activity trong trạng thái này

- onDestroy() Được gọi trước khi activity bị hủy

Đây là lời gọi hàm cuối cùng mà activity nhận được

Nó có thể được gọi vì activity đang kết thúc (hàm finish() của activity được gọi), hoặc vì hệ thống đang tạm thời hủy thực thể hiện tại của activity để tiết kiệm không gian bộ nhớ

Ta có thể phân biệt hai tình huống trên bằng cách dùng phương thức isFinishing()

Hệ thống có thể kill activity trong trạng thái này

1.3.4 Intent

Intent là một cấu trúc dữ liệu mô tả cách thức, đối tượng thực hiện một Activity Intent là cầu nối giữa các Activity trong ứng dụng Intent chính là người đưa thư, giúp chúng ta triệu gọi cũng như truyền dữ liệu cần thiết để thực hiện một Activity từ một Activity khác

Hình 5: Sơ đồ Intent

Trang 25

Intent là một khái niệm then chốt và đặc trưng của Android Platform Có thể nói lập trình Android chính là lập trình intent-base

Intent về cơ bản là một cấu trúc dữ liệu, được mô tả trong lớp android.content.Intent

1.3.4.1 Các thuộc tính của một đối tượng intent

Bảng 1: Các thuộc tính của đối tượng intent

Action: tên(string) của action mà Intent sẽ yêu cầu thực hiện, có thể là các action được định nghĩa sẵn hoặc do người lập trình tự định nghĩa

Data: là dữ liệu mà Activity sẽ gọi xử lý, định dạng Uri( thông qua hàm

Uri.parse(data))

Category:thông tin về nhóm các action Type:định nghĩa kiểu dữ liệu Thường được tự động xác định

Component: chỉ định cụ thể lớp sẽ thực thi activity

Extras:chứa tất cả các cặp (key, value) do ứng dụng thêm vào để truyền qua Intent( chứa cấu trúc Bundle)

1.3.4.2 Sử dụng Intent

Các hàm thực thi Activity

Bảng 2: Các hàm thực thi Activity

startActivity(intent) Thực thi activity như mô tả trong intent

nhưng không lấy kết quả trả về

startActivityResult Thực thi activity như mô tả trong intent,

có kết quả trả về

bindService(intent.ServiceConnection,int) Bind service

Intent tường minh: Intent có thể dùng các thuộc tính phụ component để chỉ định đích danh tên lớp sẽ thực thi Activity Để thực hiện điều này, lớp Intent cung cấp các hàm đó là setComponent(ComponentName) và setClass(Context, Class) và setClassName (Context, String) setClassName(String, String) Là intent được dùng

để gọi các Activity trong cùng một app

Intent không tương minh: Intent không chỉ định một lớp cụ thể mà thay vào đó dùng các dữ liệu khác (action, data, type ) để hệ thống tự quyết định xem lớp nào sẽ thích hợp để đáp ứng intent đó Thông tin action và category của activity trong một app đáp ứng intent đó phải được khai báo trong Manifest của app dưới dạng Intent-filter Truyền nhận thông tin giữa các Activity sử dụng intent

Trang 26

1.3.5 Adapter trong andoid

Adapter là cầu nối để liên kết dữ liệu với giao diện người dùng

Một số Adapter cơ bản :

- ArrayAdapter: là một lớp chung để gắn các Adapter Views vào một mảng

đối tượng, theo mặc định thì ArrayAdapter liên kết cá giá trị toString của từng đối tượng ra TextView trong layout, chúng ta có thể thay thế TextView bằng các điều khiển khác phức tạp hơn bằng cách sử dụng kỹ thuật Overriding phương thức getView()

- SimpleCursorAdapter: dùng để liên kết các View với con trỏ để trả về câu

truy vấn cho Content Provider, nó được định nghĩa trong file XML layout và liên kết các giá trị ràng buộc bên trong mỗi cột kết quả với View trong layout

1.3.6 Lưu trữ dữ liệu trong android

Các kỹ thuật duy trì dữ liệu trong Android nhanh chóng, gọn nhẹ, hiệu quả và mạnh mẽ:

- Shared Preferences: Khi muốn lưu trữ UI state ,user preferences hay

application setting, chúng ta muốn có một cơ chế gọn nhẹ để lưu trữ một tập hợp các giá trị được biết đến, Shared Preferences cho phép chúng ta lưu trữ nhóm của key/value của dữ liệu gốc

Files: Android cho phép tạo và tải các tập tin trên thiết bị di động

- SQLite Databases: quản lý cấu trúc dữ liệu là cách tốt nhất Android cung

cấp thư viện quan hệ cơ sở dữ liệu SQLite, mỗi ứng dụng có thể tạo ra một cơ sở

dữ liệu của mình để nó kiểm soát hoàn toàn trên đó

- Content Providers: Thay vì theo cơ chế lưu trữ riêng ,Content Providers cung

cấp nội dung cho phép đưa ra một giao diện để sử dụng và chia sẻ dữ liệu cá nhân Chúng ta có thể truy cập Content Providers để sử dụng hệ thống được phép

1.3.7 Giao diện trong android

1.3.7.1 View

Trong một ứng dụng Android, giao diện người dùng được xây dựng từ các đối tượng View và ViewGroup Có nhiều kiểu View và ViewGroup Mỗi một kiểu là một hậu duệ của class View và tất cả các kiểu đó được gọi là các Widget Tất cả mọi widget đều có chung các thuộc tính cơ bản như là cách trình bày vị trí, background,

Trang 27

kích thước, lề,… Tất cả những thuộc tính chung này được thể hiện hết ở trong đối tượng View

Trong Android Platform, các screen luôn được bố trí theo một kiểu cấu trúc phân cấp như hình dưới Một screen là một tập hợp các Layout và các widget được bố trí

có thứ tự Để thể hiện một screen thì trong hàm onCreate của mỗi Activity cần phải được gọi một hàm là setContentView(R.layout.main); hàm này sẽ load giao diện từ file XML lên để phân tích thành mã bytecode

Hình 6: Sơ đồ giao diện trong android

1.3.7.2 ViewGroup

ViewGroup thực ra chính là View hay nói đúng hơn thì ViewGroup chính là các widget Layout được dùng để bố trí các đối tượng khác trong một screen Có một số loại ViewGroup như sau:

- LinearLayout: với LinearLayout, các view bên trong nó được đặt cạnh nhau

theo hàng ngang hoặc hàng dọc LinearLayout làm cho các thành phần trong nó không bị phụ thuộc vào kích thước của màn hình Các thành phần trong LinearLayout được dàn theo những tỷ lệ cân xứng dựa vào các ràng buộc giữa các thành phần

- FrameLayout: FrameLayout được dùng để bố trí các đối tượng theo kiểu

giống như là các Layer trong Photoshop Những đối tượng nào thuộc Layer bên dưới thì sẽ bị che khuất bởi các đối tượng thuộc Layer nằm trên FrameLayer thường được sử dụng khi muốn tạo ra các đối tượng có khung hình bên ngoài chẳng hạn như contact image button

Trang 28

Hình 7: Framelayout android

- AbsoluteLayout: Layout này được sử dụng để bố trí các widget vào một vị trí

bất kì trong layout dựa vào 2 thuộc tính toạ độ x, y Tuy nhiên, kiểu layout này rất

ít khi được dùng bởi vì toạ độ của các đối tượng luôn cố định và sẽ không tự điều chỉnh được tỷ lệ khoảng cách giữa các đối tượng Khi chuyển ứng dụng sang một màn hình có kích thước với màn hình thiết kế ban đầu thì vị trí của các đối tượng

sẽ không còn được chính xác như ban đầu

- RetaliveLayout: Layout này cho phép bố trí các widget theo một trục đối

xứng ngang hoặc dọc Để đặt được đúng vị trí thì các widget cần được xác định một mối ràng buộc nào đó với các widget khác Các ràng buộc này là các ràng buộc trái, phải, trên, dưới so với một widget hoặc so với layout parent Dựa vào những mối ràng buộc đó mà RetaliveLayout cũng không phụ thuộc vào kích thước của screen thiết bị Ngoài ra, nó còn có ưu điểm là giúp tiết kiệm layout sử dụng nhằm mục đích giảm lượng tài nguyên sử dụng khi load đồng thời đẩy nhanh quá trình xử lý

Trang 29

Hình 8: Relativelayout android

- TableLayout: Layout này được sử dụng khi cần thiết kế một table chứa dữ

liệu hoặc cần bố trí các widget theo các row và column Chẳng hạn như, giao diện của một chiếc máy tính đơn giản hoặc một danh sách dữ liệu

Hình 9; Tablelayout android

Trang 30

1.4 HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU SQLITE

1.4.1 Giới thiệu

SQLite là phần mềm quản lý cơ sở dữ liệu (DBMS) tương tự như Mysql, PostgreSQL Đặ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 niệm người sử dụng, password hay quyền hạn trong SQLite database

Hình 10: Quản trị SQLite

SQLite không thích hợp với những hệ thống lớn nhưng ở quy mô vừa tầm 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à là sự lưa chọn phù hợp cho những người bắt đầu học database

1.4.2 Đặc điểm

- Cơ sở dữ liệu dạng quan hệ (RDBMS), hỗ trợ chuẩn SQL-92

- Sử dụng dưới dạng thư viện nhúng, không chạy ở theo kiểu server độc lập

- Hỗ trợ các ngôn ngữ phổ biến: C, C++, C#, Basic, Python, PHP, Java

- Không cần chỉ định kiểu dữ liệu (SQLite is typeless)

- Hỗ trợ mã UTF-8

- Hỗ trợ hiển thị

- Hỗ trợ C extensions

- Có các công cụ quản lý bằng đồ hoạ

- Download & sử dụng miễn phí

Trang 31

1.4.3 Phiên bản

Hiện tại SQLite có 2 nhánh khác nhau là version 2.x và version 3.x, do cấu tạo dữ liệu nội bộ khác nhau nên tên lệnh và tên thư viện của từng nhánh khác nhau Lệnh sqlite là của version 2.x, sqlite3 là lệnh của version 3.x Địa chỉ trang chủ http://sqlite.org

1.5 Web service

1.5.1 Giới thiệu

Web Services là một cách chuẩn để tích hợp các ứng dụng trên nền web

(Web-based applications) Các ứng dụng có thể sử dụng các thành phần khác nhau để tạo thành một dịch vụ, ví dụ như máy chủ chạy một trang web thương mại điện tử kết nối với cổng thanh toán điện tử qua một API - Application Programming Interface ( tạo bởi công nghệ NET thì web service chính là nền máy chủ (IIS - Internet Information Services), và các thành phần thanh toán, các thành phần NET được coi là component (các thành phần bên ngoài) Các thành phần này được gọi bởi phương thức SOAP (Khác phương thức POST, GET) nên không bị gặp phải firewall khi truy xuất các thành phần bên ngoài máy chủ Và toàn bộ các thành phần đó gọi là một Web Services

Các Web Services cho phép các tổ chức thực hiện truyền thông dữ liệu mà không cần phải có kiến thức về hệ thống IT phía sau tường lửa Một số Web Services hiện nay có sẵn miễn phí và càng ngày càng hướng dần vào các doanh nghiệp

Một ví dụ về Web Service sẵn có là dịch vụ được cung cấp bởi PayPal cho phép những người có tài khoản có thể thanh toán hoặc trả một phần hoặc thực hiện các giao dịch tìm kiếm, và lấy lại các thông tin của từng giao dịch cụ thể

Ngày này, web service được phát triển trên hầu hết các nên tảng web server hiện tại, như là :

- Apache với PHP

- Tomcat với JSP, Java

- IIS với Net, ASP

Trang 32

- Khả năng tự mô tả: giao diện của dịch vụ web được xuất bản thông qua tài liệu WSDL Tài liệu này định nghĩa cấu trúc thông điệp trao đổi và cấu trúc dữ liệu sử dụng trong thông điệp đó

- Tách biệt giữa mô tả và nội dung: đây là một trong những đặc tính then chốt làm nên thành công cho Web Services

- Web service không đòi hỏi phía client phải cài đặt bất cứ một thành phần mới nào Còn ở phía server, để triển khai Web service thì chỉ cần có Servlet engine, Apache hoặc NET Runtime,… Khi đã được triển khai thì client có thể sử dụng ngay các dịch vụ Điều này khác với các công nghệ khác như DCOM hay RMI, khi mà client phải cài đặt Client stub để có thể truy cập dịch vụ

- Dựa trên các chuẩn mở: XML, SOAP, WSDL, UDDI

- Truy cập thông qua môi trường Web: web services được phát hành, xác định

và gọi đều thông qua môi trường Web Trong đó các mô tả về dịch vụ được xuất bản sử dụng WSDL, người dùng tìm kiếm và xác định dịch vụ nhờ sự trợ giúp của UDDI và yêu cầu dịch vụ bằng SOAP Tất cả các giao thức này đều dựa trên Web

- Nâng cao khả năng tái sử dụng

- Thúc đẩy đầu tư các hệ thống phần mềm đã tồn tại bằng cách cho phép các tiến trình/chức năng nghiệp vụ đóng gói trong giao diện Web service

- Tạo mối quan hệ tương tác lẫn nhau và mềm dẻo giữa các thành phần trong hệ thống, dễ dàng cho việc phát triển các ứng dụng phân tán

- Thúc đẩy hệ thống tích hợp, giảm sự phức tạp của hệ thống, hạ giá thành hoạt động, phát triển hệ thống nhanh và tương tác hiệu quả với hệ thống của các doanh nghiệp khác

Trang 33

1.5.2.2 Nhược điểm

- Những thiệt hại lớn sẽ xảy ra vào khoảng thời gian chết của Web service, giao diện không thay đổi, có thể lỗi nếu một máy khách không được nâng cấp, thiếu các giao thức cho việc vận hành

- Có quá nhiều chuẩn cho Web service khiến người dùng khó nắm bắt

- Phải quan tâm nhiều hơn đến vấn đề an toàn và bảo mật

1.6 RESTFUL WEB SERVICE

1.6.1 Khái niệm

1.6.1.1 REST

REST viết tắt của chữ Representational State Transfer – theo nghĩa cho phép người dùng truy cập tài nguyên – resources (có thể là dữ liệu trước và sau xử lý hay chức năng của ứng dụng) - của ứng dụng trên web services thông qua uri

Thực hiện cơ chế nói chuyện giữa server và client là điểm điểm – point to point

Dữ liệu được truyền trực tiếp trên HTTP và được truy cập thông qua HTTP theo đúng định dạng MIME mà không cần thông qua dạng SOAP – giảm bớt sự phức tạp – vì đơn giản chúng ta sẽ coi dữ liệu và chức năng như là tham số truyền hay dữ liệu đính kèm trong HTTP

Cho phép thao tác dữ liệu dưới 4/7 phương thức được định nghĩa trong HTTP đó

là GET, POST, PUT, DELETE để qui định rõ cách thao tác dữ liệu trên server, cái nào được truy cập, các nào được sửa đổi, cái nào được hiển thị và dấu ẩn …

1.6.1.2 Kiến trúc

Hình 11: Kiến trúc REST

Trang 34

- Client-Server:

Phân tách giao diện của client ra khỏi dữ liệu

Cho phép mỗi thành phần phát triển độc lập

Hỗ trợ đa nền

- Stateless:

Mỗi yêu cầu của client phải đầy đủ thông tin cần thiết để server có thể hiểu được

mà không cần phải lưu trữ thêm thông tin nào trước đó

1.6.1.3 RESTFul Web Service

Là một web service đơn giản dùng HTTP và tính chất của REST

Là một tập tài nguyên giữa các thành phần được định nghĩa:

- URI gốc cho web service

- MIME type hỗ trợ bởi web service

- Tập hỗ trợ hành động sử dụng HTTP method (GET,PUT,POST,DELETE)

1.6.1.4 Cơ chế hoạt động

Hình 12: Cơ chế hoạt động của REST

Trang 35

Client gửi request yêu cầu resources thông qua HTTP Web services dựa trên request để đáp ứng yêu cầu và response kết quả trả về Response được trả về theo đúng định dạng yêu cầu của client

Client xử lý kết quả từ response để đáp ứng yêu cầu của mình

1.6.1.5 Một số thành phần của RESTful Web Service

- Resources: có thể là chuỗi, hình ảnh, xml, tập tin …

- JAX-RS: Cung cấp chức năng và API cho việc xây dựng ứng dụng với RESTful Web Services

- JAX-RS API:

o Một API của JavaEE

o Sử dụng tạo web service với các hàm API với annotations

o Định nghĩa Java class như là một Resource class

o Định nghĩa 02 loại resources: root resource và sub resource thông qua

@Path

Trong đó, sub resource được truy cập thông qua root

o Root resource thông thường là được khai báo ở đầu class

o Sub resource được khai báo trên các method, nghĩa là các method được truy cập thông qua root theo đường dẫn trên server

o Cú pháp của @Path: @Path(“resourcePath/{param1}/…/{paramN}”)

o Package chứa các thành phần là javax.ws.rs

o Các method của HTTP được hỗ trợ thông qua các khai báo annotations

Bảng 3: Các method của HTTP được hỗ trợ

Trang 36

1.6.2 Json và Gson

1.6.2.1 Sơ lược về json

JSON là cú pháp để lưu trữ và trao đổi thông tin văn bản Cũng giống như XML JSON là nhỏ hơn so với XML, và nhanh hơn và dễ dàng hơn để phân tích (parse) JSON sử dụng cú pháp JavaScript để mô tả đối tượng dữ liệu, nhưng JSON là ngôn ngữ và nền tảng độc lập Trình phân tích cú pháp(parsers) JSON và các thư viện JSON tồn tại cho nhiều ngôn ngữ lập trình khác nhau

- JSON là viết tắt của JavaScript Object Notation

- JSON là định dạng trao đổi dữ liệu văn bản dung lượng nhẹ

- JSON là ngôn ngữ độc lập

- JSON được "tự mô tả" và dễ hiểu

1.6.2.2 So sánh với XML

- Giống nhau :

o JSON là văn bản trơn (không có định dạng(màu sắc, cỡ chữ,…))

o JSON là "tự mô tả" (người dùng có thể hiểu được)

o JSON là phân cấp (có cấu trúc cây)

o JSON có thể được phân tích cú pháp (parse) bởi JavaScript

o Dữ liệu JSON có thể được truyền đi bằng AJAX

đối tượng JavaScript

- Dữ liệu là các cặp tên/giá trị (name/values)

- Dữ liệu được phân cách bằng dấu phẩy

- Đối tượng nằm trong cặp ngoặc nhọn ‘{}’

- Dấu ngoặc vuông giữ mảng ‘[]’

Trang 37

- Cặp Tên/Giá trị của JSON : Một cặp Tên/Giá trị chứa tên 1 trường (trong dấu nháy đôi “”), theo sau là dấu phẩy, cuối cùng là giá trị:

"firstName" : "John"

- Các kiểu giá trị của JSON:

o Kiểu số nguyên (int) hay số thực (float)

o Kiểu chuỗi (String)

o Kiểu Boolean (true or false)

o Kiểu mảng (nằm trong dấu ngoặc vuông [])

o Kiểu đối tượng (được đặt trong dấu ngoặc nhọn {})

- Mảng của JSON : Mảng JSON nằm trong dấu ngoặc vuông []

- Mảng có thể chứa nhiều đối tượng:

Bảng 5: Mảng Json

{

"employees": [

{ "firstName":"John" , "lastName":"Doe" }, { "firstName":"Anna" , "lastName":"Smith" }, { "firstName":"Peter" , "lastName":"Jones" } ]

}

Trích xuất thông tin từ JSON : Trong Android hỗ trợ 2 kỹ thuật trích xuất thông tin và thấy thông tin về từ webservice lưu theo kiểu JSON

Trang 38

Cách 1 : Sử dụng đối tượng JSONObject

Thiết lập 1 kiểu key/value Key phải là duy nhất và không được null Value của JSONObject, JSONArray phải là 1 trong các kiểu cơ bản sau : String, Boolean, Integer, Long, Double, NULL

Cách 2 : Sử dụng đối tượng GSON Được cung cấp và sử dụng khi Android

Application làm việc với file JSON

1.6.2.3 Sơ lược về Gson

GSON là 1 thư viện được viết bằng ngôn ngữ Java được sử dụng để chuyển đổi đối tượng Java vào trong file JSON và chuyển đổi chuối JSON thành đối tượng Java JSON là mã nguồn mở được cung cấp tại địa chỉ : http://code.google.com/p/google-gson

Mục đính của GSON: Cung cấp dễ dàng sử dụng các phương thức như toString()

và các phương thức chuyển đổi giữa đối trượng trong Java và JSON và ngược lại Tạo đối tượng trong GSON : Có thể sử dụng câu lệnh sau :

Gson gson = new Gson();

Và dùng đối tượng gson vừa tạo ra gọi các phương thức của nó

Ví dụ đơn giản như sau :

Bảng 6: Ví dụ sử dụng Gson

Gson gson = new Gson();

// Chuyển giá trị sang chuỗi gson.toJson(1); ==> in ra 1 gson.toJson("abcd"); ==> in ra "abcd"

gson.toJson(new Long(10)); ==> in ra 10 int[] values = { 1 };

gson.toJson(values); ==> in ra [1]

// Chuyển chuỗi sang giá trị có kiểu tương ứng int one = gson.fromJson("1", int.class);

Integer one = gson.fromJson("1", Integer.class);

Long one = gson.fromJson("1", Long.class);

Boolean false = gson.fromJson("false", Boolean.class);

String str = gson.fromJson("\"abc\"", String.class);

String anotherStr = gson.fromJson("[\"abc\"]", String.class);

Trang 39

Lấy giá trị của lớp

class DemoJson { private int value1 = 1;

private String value2 = "abc";

DemoJson () { }

} DemoJson obj = new DemoJson ();

Gson gson = new Gson();

String json = gson.toJson(obj);

==> Chuỗi Json là {"value1":1,"value2":"abc"}

1.7 JSP VÀ SERVLET

1.7.1 JSP

JSP (viết tắt của tiếng Anh Java Server Pages) còn được biết đến với một cái tên khác là Java Scripting Preprocessor - tạm dịch là "Bộ tiền xử lý văn lệnh Java" - là một công nghệ Java cho phép các nhà phát triển tạo nội dung HTML, XML hay một

số định dạng khác của trang web một cách năng động, trong khi hồi âm yêu cầu của trình khách Công nghệ này cho phép người ta nhúng mã Java và một số hành động

xử lý đã được định trước (pre-defined actions) vào trong nội dung tĩnh của trang

Cú pháp của JSP cho thêm các thẻ XML mới, gọi là JSP actions - hành động JSP Những "hành động JSP" này được dùng để khởi động chức năng sẵn có, là những chức năng đã được xây dựng trước Cộng thêm vào đó, công nghệ còn cho phép chúng

ta tạo ra các thư viện thẻ JSP (JSP tag libraries), là những cái đóng vai trò vào việc

mở rộng các thẻ HTML hay XML tiêu chuẩn Thư viện thẻ (Tag libraries) là phương pháp mở rộng khả năng của một máy chủ web trong khi những mở rộng đó không phụ thuộc vào hệ nền (về cả cấu trúc máy cũng như hệ điều hành được dùng)

Trước khi hiển thị ra trình duyệt, tập tin JSP phải được biên dịch thành Servlet, dùng bộ biên dịch JSP (JSP compiler) Bộ biên dịch JSP có thể tạo servlet thành mã nguồn Java trước, rồi biên dịch mã nguồn ra tập tin class dùng bộ biên dịch Java, hoặc có thể trực tiếp tạo mã byte code cho servlet từ trang JSP

Trang 40

của máy chủ bằng việc sử dụng HTTP cookies, các giá trị session hoặc URL rewriting

Servlet API, được chứa trong gói Java kế thừa từ Bản mẫu:Javadoc, định nghĩa những tương tác cần thiết giữa một Web container và một servlet A Web container là một thành phần cơ bản và cần thiết của Web Server để tương tác với các Servlet The Web container chịu trách nhiệm quản lý vòng đời của các Servlet, ánh xạ đường dẫn đến một Servlet cụ thể và đảm bảo rằng có thể truy cập vào

1.7.3 MÔ HÌNH MVC TRONG JAVA WEB JSP SERVLET

1.7.3.1 Khái niệm cơ bản về mô hình MVC

Tên gọi Mô hình MVC xuất phát từ tên gọi của mô hình này Tên đầy đủ của mô hình này là: Mô hình (Model – View – Controller) Trong đó:

Model: Là thành phần hỗ trợ việc ánh xạ dữ liệu vật lý lên bộ nhớ, lưu trữ dữ liệu

tạm thời trên bộ nhớ, hỗ trợ cấc cách thức xử lý dữ liệu, hỗ trợ khả năng giao tiếp và trao đổi dữ liệu giữa các đối tượng khác trong bộ nhớ và cơ sở dữ liệu

View: Là thành phần hỗ trợ trình bày kết xuất ra màn hình, hỗ trợ thao tác vơi

người dùng

Controller: Là thành phần hỗ trợ kết nối người dùng, server, đón nhập yêu cầu

người dùng, thực hiện chuyển xử lý, lựa chọn và cập nhật model và view tương ứng

để view trình bày về phía người dùng

1.7.3.2 Mô hình MVC trong ứng dụng web với JSP Servlet

Trong lập trình Web với Java, với những dự án lớn hay Web site lớn người ta sử dụng mô hình MVC để việc phân chia module, phân chia công việc, thiết kế giao diện, chỉnh sửa và bảo trì nâng cấp được thuận tiện hơn Trong đó:

Model: Thành phần JavaBeans đảm nhiệm ( lớn hơn có Enterprise JavaBeans hay

Web Service)

View: các trang jsp Controller : sử dụng servlet

Ngày đăng: 19/05/2017, 08:48

HÌNH ẢNH LIÊN QUAN

Hình  2: Giới thiệu android - Luận văn tốt nghiệp Kỹ sư Xây dựng hệ thống trợ giúp ẩm thực trên điện thoại di động
nh 2: Giới thiệu android (Trang 17)
Hình  4: Sơ đồ hoạt động activity trong android - Luận văn tốt nghiệp Kỹ sư Xây dựng hệ thống trợ giúp ẩm thực trên điện thoại di động
nh 4: Sơ đồ hoạt động activity trong android (Trang 22)
Hình  8: Relativelayout android - Luận văn tốt nghiệp Kỹ sư Xây dựng hệ thống trợ giúp ẩm thực trên điện thoại di động
nh 8: Relativelayout android (Trang 29)
Hình  10: Quản trị SQLite - Luận văn tốt nghiệp Kỹ sư Xây dựng hệ thống trợ giúp ẩm thực trên điện thoại di động
nh 10: Quản trị SQLite (Trang 30)
Hình  19: Biểu đồ hoạt động chỉnh sửa ghi chú cho từng món ăn - Luận văn tốt nghiệp Kỹ sư Xây dựng hệ thống trợ giúp ẩm thực trên điện thoại di động
nh 19: Biểu đồ hoạt động chỉnh sửa ghi chú cho từng món ăn (Trang 55)
Hình  18: Biểu đồ hoạt động tạo ghi chú cho từng món ăn - Luận văn tốt nghiệp Kỹ sư Xây dựng hệ thống trợ giúp ẩm thực trên điện thoại di động
nh 18: Biểu đồ hoạt động tạo ghi chú cho từng món ăn (Trang 55)
Hình  44: Quan hệ giữa các bảng trong cơ sở dữ liệu - Luận văn tốt nghiệp Kỹ sư Xây dựng hệ thống trợ giúp ẩm thực trên điện thoại di động
nh 44: Quan hệ giữa các bảng trong cơ sở dữ liệu (Trang 66)
Hình  54: Biểu đồ tuần tự xóa dữ liệu - Luận văn tốt nghiệp Kỹ sư Xây dựng hệ thống trợ giúp ẩm thực trên điện thoại di động
nh 54: Biểu đồ tuần tự xóa dữ liệu (Trang 75)
Hình  70: Xem và sửa vùng - Luận văn tốt nghiệp Kỹ sư Xây dựng hệ thống trợ giúp ẩm thực trên điện thoại di động
nh 70: Xem và sửa vùng (Trang 84)
Hình  73: Xem và sửa xuất xứ - Luận văn tốt nghiệp Kỹ sư Xây dựng hệ thống trợ giúp ẩm thực trên điện thoại di động
nh 73: Xem và sửa xuất xứ (Trang 85)
Hình  76: Thêm mới nguyên liệu - Luận văn tốt nghiệp Kỹ sư Xây dựng hệ thống trợ giúp ẩm thực trên điện thoại di động
nh 76: Thêm mới nguyên liệu (Trang 87)
Hình  78: Xóa nguyên liệu - Luận văn tốt nghiệp Kỹ sư Xây dựng hệ thống trợ giúp ẩm thực trên điện thoại di động
nh 78: Xóa nguyên liệu (Trang 88)
Hình  86: Màn hình chi tiết công thức món ăn - Luận văn tốt nghiệp Kỹ sư Xây dựng hệ thống trợ giúp ẩm thực trên điện thoại di động
nh 86: Màn hình chi tiết công thức món ăn (Trang 92)
Hình  88: Màn hình bình luận món ăn - Luận văn tốt nghiệp Kỹ sư Xây dựng hệ thống trợ giúp ẩm thực trên điện thoại di động
nh 88: Màn hình bình luận món ăn (Trang 93)
Hình  92: Màn hình bình luận ứng dụng - Luận văn tốt nghiệp Kỹ sư Xây dựng hệ thống trợ giúp ẩm thực trên điện thoại di động
nh 92: Màn hình bình luận ứng dụng (Trang 95)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w