Bao gồm các chức năng sau: Đối với người sử dụng chưa đăng nhập : Xem vị trí tất cả các ATM , chi nhánh ngân hàng trong một thành phố Tìm kiếm các ATM, chi nhánh ngân hàng của một n
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN
Tel (84-511) 3736 949, Fax (84-511) 3842 771Website: itf.ud.edu.vn, E-mail: cntt@edu.udn.vn
LUẬN VĂN TỐT NGHIỆP KỸ SƯ
NGÀNH CÔNG NGHỆ THÔNG TIN
SINH VIÊN : NGUYỄN THANH TÙNG PHẠM QUANG PHÚC
ĐÀ NẴNG, 6/2011
Trang 2
Trang 3
Trang 4
Chúng em xin gửi lời cảm ơn chân thành đến tất cả các thầy cô trong khoa Côngnghệ thông tin cũng như các thầy cô giáo dạy trong trường Đại học Bách khoa – Đạihọc Đà Nẵng đã truyền đạt những kiến thức quý báu cho chúng em trong những nămvừa qua.
Đặc biệt, chúng em xin chân thành cảm ơn thầy giáo GV.ThS Mai Văn Hà – thuộc
bộ môn Mạng thông tin và truyền thông, khoa Công nghệ Thông tin, trường Đại họcBách khoa Đà Nẵng đã tận tình hướng dẫn, động viên và tạo mọi điều kiện tốt nhấtcho chúng em trong suốt thời gian thực hiện đề tài
Và để có kết quả như ngày hôm nay, chúng em rất biết ơn gia đình đã động viên,khích lệ, tạo mọi điều kiện thuận lợi nhất trong suốt quá trình thực hiện đề tài tốtnghiệp này
Xin chân thành cảm ơn các bạn trong khoa Công nghệ Thông tin, đặc biệt là các bạntrong lớp đã ủng hộ, giúp đỡ, chia sẽ kiến thức, kinh nghiệm và tài liệu sẵn có chonhóm chúng em trong quá trình nghiên cứu và thực hiện đề tài này
Một lần nửa xin chân thành cảm ơn!
Đà Nẵng, ngày 5 tháng 6 năm 2011
Nhóm sinh viên thực hiện
Nguyễn Thanh Tùng Phạm Quang Phúc
Trang 5Hoàn thành đồ án này nhóm chúng tôi xin cam đoan:
1 Những nội dung trong luận văn này là do nhóm chúng tôi thực hiện dưới sự hướng dẫn trực tiếp của GV.ThS Mai Văn Hà.
2 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ố.
3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá,
nhóm chúng tôi xin chịu hoàn toàn trách nhiệm.
Đà Nẵng, ngày 5 tháng 6 năm 2011 Người cam đoan
Nguyễn Thanh Tùng Phạm Quang Phúc
Trang 6Ngày nay, máy tính là một những phương tiện rất quan trọng, được ứng dụng trongmọi lĩnh vực Các môi trường giao tiếp đã thực sự phát triển và những khả năng củamáy tính và thiết bị di động đã tạo ra môi trường giao tiếp giúp con người có thể traođổi, tìm kiếm thông tin một cách nhanh chóng và tiện lợi.Các công ty, doanh nghiệp,ngân hàng có thể đưa ra các sản phẩm hay những thông tin về công ty mình cho kháchhàng hay các đối tác hoặc người sử dụng Vì vậy môi trường giao tiếp tốt hiện nay đãtrở thành một tiêu chuẩn tạo điều kiện cho một sản phẩm ứng dụng ra đời, tồn tại vàphát triển.
Luận văn này đề cập đến việc sử dụng các thiết bị di động để xem các thông tin địađiểm các máy ATM cũng như các chi nhánh ngân hàng Ngoài ra có thể xem các thôngtin về ngân hàng, các dịch vụ của các ngân hàng Người dùng có thể tìm đường đi đếncác máy ATM hoặc các chi nhánh ngân hàng
Do những điều kiện khách quan và thời gian có hạn mà luận văn không tránh khỏinhững thiếu sót Tuy vậy, nhóm chúng em cố gắng thực hiện tốt những vấn đề trongbài phân tích, nếu có thời gian nhiều nhóm chúng em sẽ phát triển hơn nhằm đưa ramột sản phẩm tốt hơn ứng dụng vào thực tiễn
Cuối cùng, nhóm chúng em xin chân thành cảm ơn thầy Mai Văn Hà đã tận tìnhhướng dẫn chúng em phát triển đề tài này
Đà Nẵng, ngày 5 tháng 6 năm 2011
Nhóm sinh viên thực hiện
Nguyễn Thanh Tùng Phạm Quang Phúc
Trang 7LỜI CAM ĐOAN 5
LỜI MỞ ĐẦU 6
MỞ ĐẦU 1
1.Bối cảnh đề tài 1
2.Mục đích và ý nghĩa đề tài 1
3.Nhiệm vụ phải thực hiện 2
4.Phương pháp triển khai 2
CHƯƠNG I.CƠ SỞ LÝ THUYẾT 4
I.1 ĐIỆN TOÁN ĐÁM MÂY 4
I.1.1 Định nghĩa điện toán đám mây 4
I.1.2 Ưu và nhược điểm của cloud computing 5
I.1.2.1 Ưu điểm 5
I.1.2.2 Nhược điểm 5
I.1.3 Cấu trúc và cách thức hoạt động của "Điện toán đám mây" 6
I.1.3.1 Cấu trúc phân lớp của mô hình Điện toán đám mây 6
I.1.3.2 Cách thức hoạt động của điện toán đám mây 8
I.1.4 Mô hình điện toán đám mây 9
I.1.4.1 Các loại hình dịch vụ 9
I.1.4.2 Mô hình triển khai 10
I.1.5 Khảo sát các nhà cung cấp dịch vụ điện toán đám mây 12
I.1.6 Giải pháp được lựa chọn 12
I.1.7 Google app engine 13
I.1.7.1 Giới thiệu 13
I.1.7.2 Các thành phần chính của AppEngine 14
I.1.7.3 App Engine datastore 14
I.1.7.4 Thực thể và thuộc tính 15
I.1.7.5 Câu truy vấn và chỉ mục 15
I.1.7.6 Phiên làm việc và nhóm thực thể 16
I.1.7.7 Google Account 16
I.1.7.8 App Engine Services 16
I.1.7.9 Hạn chế 17
I.2 HỆ ĐIỀU HÀNH 17
I.2.1 Khái niệm Android 17
I.2.2 Kiến trúc Android 18
Trang 8I.2.2.3 Libraries 19
I.2.2.4 Android Runtime 19
I.2.2.5 Linux Kernel 19
I.2.3 Các thành phần cơ bản của một ứng dụng Android 20
I.2.3.1 Activity 20
I.2.3.2 Intent 21
I.2.3.3 Service 22
I.2.3.4 Content Provider 22
I.2.3.5 View 23
I.2.3.6 Broadcast Receiver 23
I.2.3.7 File AndroidManifest.xml 23
I.3 GIỚI THIỆU GOOGLE MAPS 23
I.4 ĐỊNH VỊ TOÀN CẦU GPS 24
CHƯƠNG II.PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 26
II.1 PHÂN TÍCH HỆ THỐNG 26
II.1.1 Phân tích hiện trạng 26
II.1.2 Phân tích yêu cầu chức năng 26
II.1.2.1 Chức năng cho nhóm đối tượng người sử dụng chưa đăng nhập 26
II.1.2.2 Chức năng cho nhóm đối tượng người sử dụng đăng nhập 26
II.1.2.3 Chức năng cho nhóm đối tượng là người quản lý 26
II.1.2.4 Chức năng khác 27
II.1.3 Giải pháp công nghệ 27
II.1.3.1 Server chính cung cấp các Web Services cho các máy khách 28
II.1.3.2 Máy khách sử dụng các các dịch vụ mà máy chủ cung cấp để 28
II.2 PHÂN TÍCH THIẾT KẾ HỆ THỐNG 28
II.2.1 Xác định các tác nhân của hệ thống 28
II.2.2 Xác định các ca sử dụng của hệ thống 29
II.2.3 Đặc tả các ca sử dụng 30
Trang 9II.2.3.6 Ca sử dụng duy trì thông tin ngân hàng 33
II.2.3.7 Ca sử dụng duy trì thông tin ATM hoặc chi nhánh ngân hàng 34
II.2.4 Tìm lớp 36
II.2.4.1 Xác định các lớp dựa vào các khái niệm của lĩnh vực ứng dụng 36
II.2.5 Các lớp chính 37
II.2.5.1 Các lớp chính trên client 37
II.2.5.2 Các lớp chính trên server 38
II.2.6 Biểu đồ lớp 39
II.2.6.1 Biểu đồ lớp cho ca sử dụng Đăng kí , Đăng nhập , Thay đổi mật khẩu , Xem thông tin cá nhân 39
II.2.6.2 Xem thông tin ngân hàng 39
II.2.6.3 Xem thông tin ATM hoặc các chi nhánh 40
II.2.6.4 Xem vị trí ATM hoặc các chi nhánh , khoảng cách , đường đi đến người sử dụng 40 II.2.6.5 Quản lí thông tin ngân hàng 40
II.2.6.6 Quản lý thông tin ATM 41
II.2.6.7 Các lớp chính 41
II.2.6.8 Xác định các lớp tham gia vào các ca sử dụng 42
CHƯƠNG III.CÀI ĐẶT VÀ TRIỂN KHAI CHƯƠNG TRÌNH 48
III.1 THỬ NGHIỆM 48
III.2 KẾT QUẢ ĐẠT ĐƯỢC 48
III.2.1 Kết quả trên module Client 48
III.2.1.1 Giao diện ban đầu của hệ thống 48
III.2.1.2 Giao diện đăng ký thành viên 49
III.2.1.3 Hiển thị thông tin người dùng đã đăng ký 49
III.2.1.4 Thay đổi mật khẩu 50
III.2.1.5 Xem danh sách, thông tin ngân hàng 50
III.2.1.6 Xem danh sách các ATM hoặc nhánh ngân hàng 52
III.2.1.7 Vị trí hiện tại người sử dụng 52
III.2.1.8 Xác định hướng đi trên bản đồ 53
III.2.1.9 Hiển thị đường cần đến trên bản đồ 53
III.2.1.10Hướng dẫn chi tiết về đường đi 54
III.2.1.11Xác định được vị trí ATM 55
III.2.2 Kết quả trên module Server 55
Trang 10III.2.2.3 Thông tin ngân hàng, tỷ giá 56
III.2.2.4 Thêm các ATM 57
III.2.2.5 Thêm các nhánh ngân hàng 58
KẾT LUẬN 59
1.Kết quả đạt được 59
2.Nhược điểm và hạn chế 59
3.Hướng phát triển 59
PHỤ LỤC 60
TÀI LIỆU THAM KHẢO 62
Trang 11Hình 1 : Mô hình đơn giản của điện toán đám mây 4
Hình 2 : Các lớp mô hình điện toán đám mây 6
Hình 3 : Cách thức hoạt động điện toán đám mây 8
Hình 4 : Các dịch vụ điện toán đám mây 10
Hình 5 : Mô hình triển khai điện toán đám mây 11
Hình 6 : Mô hình kiến trúc nền tảng Android 18
Hình 7 : Mô hình hợp tác giữa máy ảo Dalvik và Navite code 20
Hình 8 : Lược đồ vòng đời của 1 activity 21
Hình 9 : Sử dụng Intent để trao đổi thông tin giữa hai chương trình 21
Hình 10 : Lược đồ vòng đời của 1 Service 22
Hình 11 : Lược đồ phân cấp các chức năng 27
Hình 12 : Các công nghệ chính được sử dụng 27
Hình 13 : Vẽ biểu đồ ca sử dụng 29
Hình 14 : Biểu đồ lớp đăng ký, đăng nhập 39
Hình 15 : Biểu đồ lớp xem thông tin ngân hàng 39
Hình 16 : Biểu đồ tuần tự đăng kí hệ thống 42
Hình 17 : Biểu đồ tuần tự đăng nhập hệ thống 42
Hình 18 : Biểu đồ tuần tự theo dõi thông tin ngân hàng 43
Hình 19 : Biểu đồ tuần tự theo dõi vị trí ATM hoặc chi nhánh ngân hàng 43
Hình 20 : Biểu đồ tuần tự tìm đường đi tới các ATM hoặc nhánh Ngân hàng 44
Hình 21 : Biểu đồ tuần tự thêm ngân hàng 44
Hình 22 : Biểu đồ tuần tự xóa ngân hàng 45
Hình 23 : Biểu đồ tuần tự sửa ngân hàng 45
Hình 24 : Biểu đồ tuần tự thêm ATM hoặc nhánh ngân hàng 46
Hình 25 : Biểu đồ tuần tự xóa ATM hoặc nhánh ngân hàng 46
Hình 26 : Biểu đồ tuần tự sửa ATM hoặc nhánh ngân hàng 47
Hình 34: Kết quả màn hình đăng nhập 48
Hình 35 : Kết quả đăng ký thành viên 49
Hình 36 : Hiển thị thông tin người dùng đã đăng ký 49
Hình 37 : Thay đổi mật khẩu 50
Hình 38 : Xem danh sách các Ngân hàng 50
Hình 39 : Thêm thông tin Ngân hàng 51
Hình 40 : Xem tỷ giá ngân hàng 51
Hình 41 : Xem danh sách các ATM hoặc nhánh ngân hàng 52
Trang 12Hình 44 : Hiển thị đường đi trên bản đồ 53
Hình 45 : Xem hướng dẫn chi tiết về đường đi 54
Hình 46 : Chi tiết đường đi 54
Hình 47 : Xác định vị trí ATM 55
Hình 48 : Tạo các ngân hàng 55
Hình 49 : Chỉnh sửa thông tin Ngân hàn 56
Hình 50 : Post thông tin ngân hàng 56
Hình 51 : Các thông tin đã đăng tải 57
Hình 52 : Thêm các ATM 57
Hình 53 : Chỉnh sửa hiển thị các ngân hàng, ATM Nhánh ngân hàng 58
Trang 13Bảng 1 : Hổ trợ cho Developer 12Bảng 2 : Các ca sử dụng 29
Trang 14MỞ ĐẦU
1.Bối cảnh đề tài
Trong thời đại ngày nay, toàn thế giới đang đứng trước sự phát triển mạnh mẽ củacông nghệ thông tin, giao dịch thương mại và ngân hàng, Internet….Tuy nhiên, cáccông nghệ mới trong thông tin di dộng và truyền số liệu lại là hai lĩnh vực phát triểnmạnh nhất trong dịch vụ viễn thông Nhu cầu sử dụng điện thoại di động và truy cậpInternet ngày càng phát triển hơn trong mọi lĩnh vực như công nghiệp, thương mại đờisống nó trở nên thành một yếu tố quan trọng trong sự phát triển cử xã hội và góp phầntạo ra sự bùng nổ về thông tin, liên lạc, giữa các cá nhân, tổ chức
Sự hội tụ giữa máy tính và thông tin di động đã giúp các nhà cung cấp Internet tăngnhanh số lượng dịch vụ trong tương lai.Sự hội tụ đó nhằm chuyển tải những thông tincho khách hàng một cách kịp thời ở mọi nơi, mọi lúc Sự kết hợp giữa Internet vàthông tin di động khiến cho mọi thông tin cần trao đổi, tìm kiếm một cách dể dàng vàtiện lợi
Hiện nay, nền kinh tế phát triển kéo theo ngành ngân hàng phát triển Với tốc độphát triển như hiện nay của ngành ngân hàng cùng với áp dụng nhiều công nghệ mới,ngân hàng giải quyết nhiều nhu cầu của con người Thu nhập và mức sống tăng caođòi hỏi con người gởi tiền tiết kiệm nhiều Mà ngân hàng là nơi giải quyết những yêucầu đó Áp dụng công nghệ tiên tiến ngành ngân hàng đưa ra nhiều dich vụ tiện lợi đếnkhách hàng Đặc biệt là dịch vụ thẻ ATM được sử dụng rộng rãi đến với khách hàng,tiện lợi cho việc gởi tiền cũng như rút tiền một cách nhanh chóng.Hiện nay hầu hếtviệc chi trả lương cho người lao động thông qua dịch vụ thẻ ATM
Tại Việt Nam hiện nay, tìm kiếm vị trí ATM hay ngân hàng quả là điều khó khăn.Nên vì thế cần một cầu nối trung gian hiệu quả tổng hợp thông tin, đưa các vị trí ATM
để cho khách hàng sử dụng có thể tìm kiếm vị trí ATM cũng như vị trí ngân hàng mộtcách nhanh nhất và tiện lợi
Chính vì thế ứng dụng tìm vị trí ATM và ngân hàng ra đời nhằm giải quyết cho kháchhàng sử dụng ngân hàng Người sử dụng có thể tìm đường đi đến vị trí ATM một cáchngắn nhất trên bản đồ.Đối ngân hàng có thể quảng bá ngân hàng mình trên ứng dụngcũng như các vị trí ATM
Trang 15Người quản lý có thể đưa thông tin vị trí các máy ATM, nhánh các ngân hàng.Ngoài ra có thể đưa thông tin về ngân hàng cũng như các tin về lãi suất, tỷ giá.
Đối với người sử dụng xem vị trí ATM, nhánh ngân hàng trong thành phố Tìmđược đường đi đến các vị trí ATM, nhánh ngân hàng.Ngoài ra có thể xem các thôngtin về ngân hàng cũng như các tin về tỷ giá, lãi suất của ngân hàng muốn quan tâm Ứng dụng tuy nhỏ nhưng ra đời nhằm giải quyết nhu cầu thực tế của con người.Đối với những người đi du lịch xa có thể dể dàng tìm kiếm vị trí ATM cách nhanhnhất, tiện lợi và tiết kiệm thời gian
3.Nhiệm vụ phải thực hiện
Nghiên cứu lý thuyết công nghệ điện toán đám mây,lý thuyết hệ điều hànhandroid
Xây dựng ứng dụng ATM trên nền android Bao gồm các chức năng sau:
Đối với người sử dụng chưa đăng nhập :
Xem vị trí tất cả các ATM , chi nhánh ngân hàng trong một thành phố
Tìm kiếm các ATM, chi nhánh ngân hàng của một ngân hàng trong một thành phố
Đối với người sử dụng đã đăng nhập ngoài những chức năng trên còn thêm :
Xem thông tin của ngân hàng (tỷ giá, lãi suất, những thông tin khác về ngân hàng)
Đối với người quản lý:
Đưa thông tin ngân hàng lên hệ thống gồm tên, tỷ giá, lãi suất, thông tin
Đưa vị trí các ATM/chi nhánh ngân hàng
4.Phương pháp triển khai
Ứng dụng được xây dựng trên những công nghệ mới và mã nguồn mở nên rất dễdàng cho các nhà phát có thể phát triển nhiều ứng dụng khác :
Server được xây dựng trên nền Google App Engine – một trong những nền tảng nổibật của mô hình Cloud Computing(điện toán đám mây) nên các chi phí về việc triểnkhai, bảo trì được giảm đến mức tối thiểu Đó là nền tảng tốt cho việc thử nghiệm cácứng dụng bằng việc cung cấp 500MB dung lượng miễn phí và băng thông lên đến 5triệu người xem trong 1 tháng Bên cạnh đó, các công nghệ mở khác được hiện thựctrên nền tảng Google App Engine là Spring framework và Flex nhằm mang đến ngườidùng một ứng dụng web có độ tương tác cao
Module trên thiết bị di động được hiện thực trên hệ điều hành Android, cũng là mộtnền tảng mã nguồn mở được phát triển bởi Google và đang phát triển mạnh mẽ nhờvào một cộng đồng phát triển lớn Hiện nay, ở Việt Nam cộng đồng Android cũngđang phát triển mạnh mẽ, kéo theo đó là sự phát triển bùng nổ của lập trình Android Nội dung Đồ án gồm các phần:
Trang 16Chương 1 Cơ sở lý thuyết
Tổng quan lý thuyết điện toán đám mây, hệ điều hành android.
Chương 2 Phân tích và thiết kế hệ thống
Phân tích đặc tả các chức năng hệ thống, thiết kê hệ thống, thiết kế dữ liệu.
Chương 3 Kết quả demo của đề tài
Tóm tắt các chức năng xây dựng được của hệ thống.
Trang 17CHƯƠNG I:
CƠ SỞ LÝ THUYẾT
I.1 Điện toán đám mây
I.1.1 Định nghĩa điện toán đám mây
Hiện nay, chưa có một sự thống nhất về định nghĩa Cloud computing, mỗi tổ chức haynhà cung cấp dịch vụ đều đưa ra ý kiến riêng
Theo Wikipedia
Cloud Computing là điện toán trên nền tảng Internet Các Máy Chủ cung cấp tàinguyên, phần mềm, dữ liệu, và các thiết bị khác theo yêu cầu
Theo Ian Foster
Cloud Computing là mô hình điện toán phân tán có tính co giãn linh hoạt về mặt kinh
tế, là nơi chứa sức mạnh về tính toán, lưu trữ dựa trên nền tảng và dịch vụ cung cấp sự
ảo hóa tài nguyên và thay đổi linh hoạt để phù hợp với nhu cầu khách hàng trênInternet
Theo Rajkumar Buyya
Cloud là một hệ thống phân tán và xử lý song song gồm nhiều máy tính ảo kết nối vớinhau và được cung cấp cho người dùng dựa trên thỏa thuận giữa nhà cung cấp dịch vụ
và người dùng
Có thể tóm tắt: Điện toán đám mây là môi trường tính toán dựa trên internet mà ở đótất cả phần mềm, dữ liệu, tài nguyên được cung cấp cho máy tính và các thiết bị kháctheo nhu cầu
Hình 1 : Mô hình đơn giản của điện toán đám mây
Trang 18I.1.2 Ưu và nhược điểm của cloud computing
I.1.2.1 Ưu điểm
Những ưu điểm và thế mạnh dưới đây đã góp phần giúp "điện toán đám mây" trởthành mô hình điện toán được áp dụng rộng rãi trên toàn thế giới
Tính linh động : Người dùng có thể thoải mái lựa chọn các dịch vụ phù hợp
với nhu cầu của mình, cũng như có thể bỏ bớt những thành phần mà mình khôngmuốn (Thay vì phải bỏ ra hàng trăm USD cho 1 bộ Ms office, ta có thể mua riêng lẻtừng phần hoặc chỉ trả 1 khoản phí rất nhỏ mỗi khi sử dụng 1 phần nào đó của nó)
Giảm bớt phí : Người dùng không chỉ giảm bớt chi phí bản quyền mà còn
giảm phần lớn chi phí cho việc mua và bảo dưỡng máy chủ Việc tập hợp ứng dụngcủa nhiều tổ chức lại 1 chỗ sẽ giúp giảm chi phí đầu tư ban đầu, cũng như tăng hiệunăng sử dụng các thiết bị này một cách tối đa
Tạo nên sự độc lập : Người dùng sẽ không còn bị bó hẹp với một thiết bị hay
một vị trí cụ thể nào nữa Với điện toán đám mây, phần mềm, dữ liệu có thể được truycập và sử dụng từ bất kì đâu, trên bất kì thiết bị nào mà không cần phải quan tâm đếngiới hạn phần cứng cũng như địa lý
Tăng cường độ tin cậy : Dữ liệu trong mô hình điện toán đám mây được lưu
trữ một cách phân tán tại nhiều cụm máy chủ tại nhiều vị trí khác nhau Điều này giúptăng độ tin cậy, độ an toàn của dữ liệu mỗi khi có sự cố hoặc thảm họa xảy ra
Bảo mật : Việc tập trung dữ liệu từ nhiều nguồn khác nhau sẽ giúp các chuyên
gia bảo mật tăng cường khả năng bảo vệ dữ liệu của người dùng, cũng như giảm thiểurủi ro bị ăn cắp toàn bộ dữ liệu (Dữ liệu được đặt tại 6 máy chủ khác nhau trongtrường hợp hacker tấn công, bạn cũng sẻ chỉ bị lộ 1/6 Đây là một cách chia sẻ rủi rogiữa các tổ chức với nhau)
Bảo trì dễ dàng : Mọi phần mềm đều nằm trên server, lúc này, người dùng sẽ
không cần lo lắng cập nhật hay sửa lỗi phần mềm nữa Và các lập trình viên cũng dễdàng hơn trong việc cài đặt, nâng cấp ững dụng của mình
I.1.2.2 Nhược điểm
Tuy nhiên, mô hình điện toán này vẫn còn mắc phải một số nhược điểm sau :
Tính riêng tư : Các thông tin người dùng và dữ liệu được chứa trên điện toán
Trang 19Mất dữ liệu : Một vài dịch vụ lưu trữ dữ liệu trực tuyến trên đám mây bất ngờ
ngừng hoạt động hoặc không tiếp tục cung cấp dịch vụ, khiến cho người dùng phảisao lưu dữ liệu của họ từ “đám mây” về máy tính cá nhân Điều này sẽ mất nhiều thờigian Thậm chí một vài trường hợp, vì một lý do nào đó, dữ liệu người dùng bị mất vàkhông thể phục hồi được
Tính di động của dữ liệu và quyền sở hữu : Một câu hỏi đặt ra, liệu người
dùng có thể chia sẻ dữ liệu từ dịch vụ đám mây này sang dịch vụ của đám mây khác?Hoặc trong trường hợp không muốn tiếp tục sử dụng dịch vụ cung cáp từ đám mây,liệu người dùng có thể sao lưu toàn bộ dữ liệu của họ từ đám mây? Và làm cách nào
để người dùng có thể chắc chắn rằng các dịch vụ đám mây sẽ không hủy toàn bộ dữliệu của họ trong trường hợp dịch vụ ngừng hoạt động
Khả năng bảo mật : Vấn đề tập trung dữ liệu trên các “đám mây” là cách thức
hiệu quả để tăng cường bảo mật, nhưng mặt khác cũng lại chính là mối lo của người sửdụng dịch vụ của điện toán đám mây Bởi lẽ một khi các đám mây bị tấn công hoặcđột nhập, toàn bộ dữ liệu sẽ bị chiếm dụng.Các quy định pháp luật cho các dịch vụ,giữa khách hàng và nhà cung cấp
I.1.3 Cấu trúc và cách thức hoạt động của "Điện toán đám mây"
I.1.3.1 Cấu trúc phân lớp của mô hình Điện toán đám mây
Về cơ bản, “điện toán đám mây” được chia ra thành 5 lớp riêng biệt, có tác động qualại lẫn nhau:
Hình 2 : Các lớp mô hình điện toán đám mây
Trang 20Client (Lớp Khách hàng): Lớp Client của điện toán đám mây bao gồm phần
cứng và phần mềm, để dựa vào đó, khách hàng có thể truy cập và sử dụng các ứngdụng dịch vụ được cung cấp từ điện toán đám mây Chẳng hạn máy tính và đường dâykết nối Internet (thiết bị phần cứng) và các trình duyệt web (phần mềm)…
Application (Lớp Ứng dụng): Lớp ứng dụng của điện toán đám mây làm nhiệm
vụ phân phối phần mềm như một dịch vụ thông quan Internet, người dùng không cầnphải cài đặt và chạy các ứng dụng đó trên máy tính của mình, các ứng dụng dễ dàngđược được chỉnh sữa và người dùng dễ dàng nhận được sự hỗ trợ
Các đặc trưng chính của lớp ứng dụng bao gồm :
Các hoạt động được quản lý tại trung tâm của đám mây, chứ không nằm ở phíakhách hàng (lớp Client), cho phép khách hàng truy cập các ứng dụng từ xa thông quaWebsite
Người dùng không còn cần thực hiện các tính năng như cập nhật phiên bản, bản
vá lỗi, download phiên bản mới… bởi chúng sẽ được thực hiện từ các “đám mây”
Platform (Lớp Nền tảng): Cung cấp nền tảng cho điện toán và các giải pháp
của dịch vụ, chi phối đến cấu trúc hạ tầng của “đám mây” và là điểm tựa cho lớp ứngdụng, cho phép các ứng dụng hoạt động trên nền tảng đó Nó giảm nhẹ sự tốn kém khitriển khai các ứng dụng khi người dùng không phải trang bị cơ sở hạ tầng (phần cứng
và phần mềm) của riêng mình
Infrastructure (Lớp Cơ sở hạ tầng): Cung cấp hạ tầng máy tính, tiêu biểu là
môi trường nền ảo hóa Thay vì khách hàng phải bỏ tiền ra mua các server, phần mềm,trung tâm dữ liệu hoặc thiết bị kết nối… giờ đây, họ vẫn có thể có đầy đủ tài nguyên
để sử dụng mà chi phí được giảm thiểu, hoặc thậm chí là miễn phí Đây là một bướctiến hóa của mô hình máy chủ ảo (Virtual Private Server)
Server (Lớp Server - Máy chủ): Bao gồm các sản phẩm phần cứng và phần
mềm máy tính, được thiết kế và xây dựng đặc biệt để cung cấp các dịch vụ củađámmây Các server phải được xây dựng và có cấu hình đủ mạnh (thậm chí là rất may)
để đám ứng nhu cầu sử dụng của số lượng động đảo các người dùng và các nhu cầungày càng cao của họ
Trang 21I.1.3.2 Cách thức hoạt động của điện toán đám mây
Để hiểu cách thức hoạt động của “đám mây”, tưởng tượng rằng “đám mây” bao
gồm hai lớp: Lớp Back-end và lớp Front-end.
Hình 3 : Cách thức hoạt động điện toán đám mây
Lớp Front-end là lớp người dùng, cho phép người dùng sử dụng và thực hiệnthông qua giao diện người dùng Khi người dùng truy cập các dịch vụ trực tuyến, họ sẽphải sử dụng thông qua giao diện từ lớp Front-end, và các phần mềm sẽ được chạytrên lớp Back-end nằm ở “đám mây” Lớp Back-end bao gồm các cấu trức phần cứng
và phần mềm để cung cấp giao diện cho lớp Front-end và được người dùng tác độngthông qua giao diện đó
Bởi vì các máy tính trên “đám mây” được thiết lập để hoạt động cùng nhau, dovậy các ứng dụng có thể sử dụng toàn bộ sức mạnh của các máy tính để có thể đạtđược hiệu suất cao nhất Điện toán đám mây cũng đám ứng đầy đủ tính linh hoạt chongười dùng Tùy thuộc vào nhu cầu, người dùng có thể tăng thêm tài nguyên mà cácđám mây cần sử dụng để đáp ứng mà không cần phải nâng cấp thêm tài nguyên phầncứng như sử dụng máy tính cá nhân Ngoài ra, với điện toán đám mây, vấn đề hạn chếcủa hệ điều hành khi sử dụng các ứng dụng không còn bị ràng buộc, như cách sử dụngmáy tính thông thường
Trang 22I.1.4 Mô hình điện toán đám mây
I.1.4.1 Các loại hình dịch vụ
Dịch vụ hạ tầng IaaS (Infrastructure as a Service)
Dịch vụ hạ tầng IaaS cung cấp dịch vụ cơ bản, cung cấp năng lực tính toán, khônggian lưu trữ, kết nối mạng tới khách hàng Khách hàng (cá nhân hoặc tổ chức) có thể
sử dụng tài nguyên hạ tầng này để đáp ứng nhu cầu tính toán hoặc cài đặt ứng dụngriêng tùy theo mục đích sử dụng Với dịch vụ này khách hàng làm chủ hệ điều hành,không gian lưu trữ và các ứng dụng do khách hàng cài đặt Khách hàng điển hình củadịch vụ IaaS có thể là mọi đối tượng cần tới một máy tính và tự cài đặt ứng dụng củamình
Dịch vụ nền tảng PaaS (Platform as a Service)
Dịch vụ nền tảng PaaS cung cấp nền tảng điện toán cho phép khách hàng phát triển cácphần mềm, phục vụ nhu cầu tính toán hoặc xây dựng thành dịch vụ trên nền tảng đám mây
đó Dịch vụ PaaS có thể được cung cấp dưới dạng các ứng dụng lớp giữa (middleware),các ứng dụng chủ (application server) cùng các công cụ lập trình với ngôn ngữ lậptrình nhất định để xây dựng ứng dụng Dịch vụ PaaS cũng có thể được xây dựngriêng
và cung cấp cho khách hàng thông qua API riêng Khách hàng xây dựng ứng dụng vàtương tác với hạ tầng điện toán đám mây thông qua API đó Ở mức PaaS, khách hàngkhông quản lý nền tảng đám mây hay các tài nguyên lớp như hệ điều hành, lưu giữ ởlớp dưới Khách hàng điển hình của dịch vụ PaaS chính là các nhà phát triển ứng dụng.Dịch vụ App Engine của Google là một dịch vụ PaaS điển hình, cho phép khách hàngxây dựng các ứng dụng web với môi trường chạy ứng dụng và phát triển dựa trên ngônngữ lập trình Java hoặc Python
Dịch vụ phần mềm SaaS (Software as a Service)
Dịch vụ SaaS cung cấp các ứng dụng hoàn chỉnh như một dịch vụ theo yêu cầucho nhiều khách hàng Khách hàng lựa chọn ứng dụng phù hợp với nhu cầu và sửdụng mà không quan tâm tói hay bỏ công sức quản lý tài nguyên tính toán bên dưới
Dịch vụ SaaS nổi tiếng nhất phải kể đến Salesforce.com với các ứng dụng chodoanh nghiệp mà nổi bật nhất là CRM Các ứng dụng SaaS cho người dùng cuối phổbiến là các ứng dụng office Online của Microsoft hay Google Docs của Google
Trang 23Hình 4 : Các dịch vụ điện toán đám mây
I.1.4.2 Mô hình triển khai
Đám mây “công cộng”
Mô hình đầu tiên được nói đến khi đề cập tới điện toán đám mây chính là môhình đám mây công cộng (public cloud) Đây là mô hình mà hạ tầng điện toán đámmây được một tổ chức sỡ hữu và cung cấp dịch vụ rộng rãi cho tất cả các khách hàngthông qua hạ tầng mạng internet hoặc các mạng công cộng diện rộng Các ứng dụngkhác nhau chia sẻ chung tài nguyên tính toán, mạng và lưu trữ Do vậy, hạ tầng điệntoán đám mây được thiết kế để đảm bảo cô lập về dữ liệu giữa các khách hàng và táchbiệt về truy cập
Các dịch vụ của đám mây công cộng hướng tới số lượng khách hàng lớn nênthường có năng lực về hạ tầng cao, đáp ứng nhu cầu tính toán linh hoạt, đem lại chiphí thấp cho khách hàng Do đó khách hàng của các dịch vụ trên đám mây công cộng
sẽ bao gồm tất cả các tầng lớp, trong đó khách hàng là cá nhân và doanh nghiệp nhỏ sẽđược lợi thế trong việc dễ dàng tiếp cận các ứng dụng công nghệ cao, chất lượng màkhông phải đầu tư ban đầu, chi phí sử dụng thấp, linh hoạt
Đám mây “riêng”
Đám mây riêng (private cloud) là mô hình trong đó hạ tầng đám mây được sởhữu bởi một tổ chức và phục vụ cho người dùng của tổ chức đó Đám mây riêng có thểđược vận hành bởi một bên thứ ba và hạ tầng đám mây có thể được đặt bên trong hoặcbên ngoài tổ chức sở hữu (tại bên thứ ba kiêm vận hành hoặc thậm chí là một bên thứtư) Đám mây riêng được các tổ chức, doanh nghiệp lớn xây dựng cho mình nhằm khai
Trang 24thác ưu điểm về công nghệ và khả năng quản trị của điện toán đám mây Với đám mâyriêng, các doanh nghiệp tối ưu được hạ tầng IT của mình, nâng cao hiệu quả sử dụng,quản lý trong cấp phát và thu hồi tài nguyên, qua đó giảm thời gian đưa sản phẩm sảnxuất, kinh doanh ra thị trường.
Đám mây “chung”
Đám mây chung (community cloud) là mô hình trong đó hạ tầng đám mây đượcchia sẻ bởi một số tổ chức cho cộng đồng người dùng trong các tổ chức đó Các tổchức này do đặc thù không tiếp cận với các dịch vụ của đám mây công cộng và chia sẻchung một hạ tầng điện toán đám mây để nâng cao hiệu quả đầu tư và sử dụng
Đám mây “lai”
Mô hình đám mây lai (hybrid cloud) là mô hình bao gồm hai hoặc nhiều hơn cácđám mây trên tích hợp với nhau Mô hình đám mây lai cho phép chia sẻ hạ tầng hoặcđáp ứng nhu cầu trao đổi dữ liệu
Hình 5 : Mô hình triển khai điện toán đám mây
Trang 25I.1.5 hảo sát các nhà cung cấp dịch vụ điện toán đám mây
GAE : Google App Engine
y : có cung cấp
n : không cung cấp
I.1.6 Giải pháp được lựa chọn
Theo nhu cầu thì loại hình dịch vụ mà nhóm sử dụng là PaaS (nền tảng dịchvụ), với mô hình triển khai là Public Cloud (đám mây chung)
Nhà cung cấp dịch vụ : nhóm chúng em quyết định chọn nhà cung cấp dịch vụ làGoogle vì những lý do sau :
Google App Engine tích hợp đầy đủ những công nghệ phổ biến hiện nay để pháttriển một ứng dụng web (xét ra thì có phần kém linh hoạt hơn so với Amazon vàRackspace) Chúng ta sẽ không cần phải lo lắng về việc mở rộng cho ứng dụng củamình vì Google sẽ đảm nhận việc này
Hạ tầng của Google đủ tốt để ta có thể tin vào khả năng đáp ứng trước những độtbiến bất ngờ có thể xảy ra
Google App Engine hỗ trợ hai môi trường phát triển ứng dụng là Java vàPython Java là ngôn ngữ đang được ưa chuộng để phát triển ứng dụng So với
Trang 26Amazon, Salesfore, Microsoft, thì Google không có hổ trợ NET, một ngôn ngữ cũngrất được yêu thích hiện nay
Google khá thoải mái trong cách tính phí ở thời điểm hiện tại Sẽ có được 1Glưu trữ và lượng băng thông 5 triệu pageview hàng tháng hoàn toàn miễn phí Nếuvượt qua mốc này phải thực hiện trả phí Nhưng một website mới xây dựng thời gianđầu thì khó mà vượt qua được ngưỡng miễn phí này.Tuy nhiên cũng có mặt trái khi ta
sử dụng GAE đó là, Hệ thống của chúng ta phải phụ thuộc hoàn toàn vào nền tảng vàcông nghệ của Google, và rất khó để tách biệt thành một ứng dựng độc lập Nhưng vớimức độ cũng như thời điểm hiện tại, nhóm chúng em chưa cần thiết phải nghĩ ngợi xanhư vậy Do đó chúng em quyết định chọn Google App Engine làm nhà cung cấp dịch
vụ cho mình
I.1.6 Google app engine
I.1.6.1 Giới thiệu
Google App Engine (gọi tắt là AppEngine, một số trường hợp được viết tắt làGAE ) là giải pháp cho vấn đề điện toán đám mây Ở đó, Google cung cấp sẵn một hệthống máy chủ điện toán đám mây, và người lập trình sẽ viết ứng dụng của mình lên
đó Ứng dụng này sẽ chạy trên đám mây của Google
Google App Engine cho phép chạy các ứng dụng web trên cơ sở hạ tầng củaGoogle App Engine ứng dụng được dễ dàng để xây dựng, dễ bảo trì, và dễ dàng để cóquy mô như giao thông và nhu cầu lưu trữ dữ liệu lớn Với App Engine, không có máychủ để duy trì: Chỉ cần tải lên các ứng dụng và nó sẵn sàng để phục vụ người dùng
Có thể sử dụng tên miền riêng của mình (chẳng hạn như http://www.example.com/ )thông qua google apps Có thể dùng sub-domain miễn phí của appspot.com GAE chophép được host miễn phí với dung lượng 500 MB lưu trữ và cho phép 10 GB băngthông lưu chuyển mỗi ngày hay tương đương 5 triệu pageview hàng tháng,Vượt quamức này sẽ phải trả phí Dùng GAE, chúng ta khỏi phải thiết kế database, viết SQL
để truy vấn data, map data vô object Chúng ta chỉ cần design các class và GAE tựđộng lo phần làm việc với database
Hiện AppEngine hỗ trợ hai loại ngôn ngữ là: Python và Java Một số ngôn ngữkhác như PHP cũng có thể chạy được nếu cài cùng với bộ chuyển từ PHP sang Java
Trang 27I.1.6.2 Các thành phần chính của AppEngine
Python Runtime
AppEngine hỗ trợ Python Runtime phiên bản 2.5.2 Hầu hết các thư viện củaPython Standard Library đều được hỗ trợ Tuy nhiên do vấn đề về security nên cácextensions viết bằng C sẽ không được hỗ trợ Điều này có nghĩa rằng không thể nhúng
C extensions vào ứng dụng khi sử dụng App Engine
Python Runtime cung cấp APIs cho datastore, Google Accounts, App Engineservices Để tiện lợi cho việc phát triển web AppEngine cũng cung cấp một webframework đơn giản là webapp Do viết bằng ngôn ngữ Python nên AppEngine hỗ trợhầu hết các Python framework như Django, CherryPy, Pylons, web.py với một ít thayđổi nhất định
Java Runtime Environment
Có thể phát triển ứng dụng cho Java Runtime Environment sử dụng phổ biếncông cụ phát triển web Java và các tiêu chuẩn API Ứng dụng tương tác với môitrường bằng cách sử dụng the Java Servlet standard, và có thể sử dụng các công nghệứng dụng web phổ biến như JavaServer Pages (JSP)
Java Runtime Environment sử dụng Java 6 Các App Engine Java SDK hỗ trợphát triển các ứng dụng bằng cách sử dụng Java 5 hoặc 6
Đối với các kho dữ liệu App Engine, Java SDK bao gồm việc triển khai củaJava Data Objects (JDO) và Java Persistence API (JPA) interfaces Ứng dụng có thể
sử dụng các API JavaMail để gửi tin nhắn email với dịch vụ App Engine Mail Cácjava.net HTTP API truy cập vào App Engine lấy URL dịch vụ App Engine cũng baogồm các API cấp thấp cho các dịch vụ của mình để thực hiện thêm bộ điều hợp, hoặc
sử dụng trực tiếp từ ứng dụng
I.1.6.3 App Engine datastore
App Engine cung cấp một dịch vụ lưu trữ phân tán những kho dữ liệu phân tánnày sẽ phát triển dần theo dữ liệu App Engine sẽ cung cấp cho chúng ta những API
để thực hiện thao tác với cở sở dữ liệu bên dưới
Google App Engine cung cấp hai dạng datastore:
Master/Slave Datastore:
Bao gồm một trung tâm dữ liệu (data center) đóng vai trò là master chịu tráchnhiệm đọc và truy vấn, các trung tâm dữ liệu khác đóng vai trò slave Với mô hình nàythì dữ liệu được sao lưu không đồng bộ, tuy nhiên lợi thế của mô hình này không gianlưu trữ nhỏ, chi phí CPU thấp
Trang 28 High Replication Datastore:
Dữ liệu sẽ được sao lưu trên tất cả các trung tâm dữ liệu khác dựa trên thuậttoán Paxos Đây là một giải pháp mới, tính sẵn sàng cao và đáng tin cậy Tuy nhiên chiphí cao, do đó nó được sử dụng cho các ứng dụng cực kì quan trọng
App Engine datastore lưu các đối tượng dữ liệu gọi là các thực thể (entity).Một thực thể có một hay nhiều thuộc tính (property), mỗi thuộc tính tương ứng mộtkiểu dữ liệu (chuỗi, số nguyên, tham chiếu đến một đối tượng khác)
Một thao tác với cơ sở dữ liệu gọi là thành công khi mọi hành động trong thaotác đó thành công Nếu bất kì một hành động nào không thành công, thì thao tác đó sẽ
bị ngừng lại Điều này thích hợp với các ứng dụng web phân tán, nơi người dùng cóthể truy cập hay thao tác cùng một dữ liệu tại một thời điểm
Datastore với kiến trúc phân tán có nhiều tính năng tương tự cơ sở dữ liệutruyền thống, có khả năng quản lý lượng dữ liệu rất lớn Nó khác với cơ sở dữ liệuquan hệ truyền thống trong cách mô tả quan hệ giữa các đối tượng dữ liệu Hai thựcthể cùng loại có thể có các thuộc tính khác nhau, các thực thể khác nhau có thể có cácthuộc tính cùng tên, nhưng khác nhau về kiểu dữ liệu
Không giống như cơ sở dữ liệu quan hệ truyền thống, App Engine datastorekhông bắt buộc các thực thể cùng loại phải có cùng các thuộc tính Một thuộc tính cóthể có một hoặc nhiều giá trị ứng với nhiều kiểu dữ liệu khác nhau
Trang 29Mỗi câu truy vấn sử dụng chỉ mục, bảng để chứa kết quả và sắp xếp chúng theothứ tự mong muốn
I.1.6.6 Phiên làm việc và nhóm thực thể
Đối với App Engine thì các thao tác như thêm, xóa, sửa, cập nhật xảy ra trongmột phiên làm việc Phiên làm việc đảm bảo rằng mọi thay đổi liên quan đến thực thể
sẽ lưu vào datastore, trong trường hợp thất bại, không thay đổi nào được lưu lại Điềunày đảm bảo tính nhất quán của dữ liệu trong thực thể
Chúng ta có thể thực hiện nhiều tương tác với thực thể trong một phiên làmviệc bằng cách sử dụng các API được hỗ trợ sẵn
App Engine datastore cho phép thay đổi nhiều thực thể trong một giao dịch bằng cách
sử dụng một nhóm thực thể Muốn được như thế phải khai báo thực thể thuộc về nhóm thực thể nào khi tạo ra nó Tất cả thực thể được thêm, xóa, sửa, cập nhật trongmột phiên làm việc phải cùng thuộc một nhóm thực thể Nhóm thực thể được địnhnghĩa bởi mối quan hệ phân cấp giữa các thực thể Để tạo một thực thể trong mộtnhóm, phải khai báo thực thể đó là con của một thực thể đã tồn tại trong nhóm đó Thực thể tạo ra mà không có cha thì gọi là thực thể gốc Mỗi thực thể có một conđường các mối quan hệ cha-con từ thực thể gốc đến nó Con đường này là thành phầncấu thành nên khóa hoàn chỉnh của thực thể Một khóa hoàn chỉnh gồm loại và ID địnhdanh, hoặc là tên khóa của mỗi thực thể trong con đường các mối quan hệ
I.1.6.7 Google Account
App Engine hỗ trợ tích hợp một ứng dụng với các tài khoản của Google để xác thựcngười dùng Ứng dụng của chúng ta có thể cho phép người dùng lấy tài khoản googlecủa họ để đăng nhập Dùng tài khoản Google cho phép người dùng truy cập ứng dụngcủa chúng ta nhanh hơn, thay vì phải đăng ký một tài khoản mới Và nó cũng giúpchúng ta tiết kiệm khoảng thời gian xây dựng hệ thống tài khoản người dùng
I.1.6.8 App Engine Services
App Engine cung cấp nhiều dịch vụ cho phép dễ dàng quản lý ứng dụng
URL Fletch: cho phép ứng dụng truy cập tài nguyên trên internet
Mail: cho phép ứng dụng thưc hiện gửi thư điện thử thông qua các dịch mail củaGoogle
Memcache: là dịch vụ cho phép ứng dụng hoạt động có hiệu suất cao với vùng nhớđệm trong nhiều trường hợp
Image Manipulation: dịch vụ cho phép ứng dụng thao tác trên hình ảnh: thay đổi size,cắt, xoay, lật ảnh JPEG và PNG
Trang 30I.1.6.9 Hạn chế
Tuy nhiên, mặt trái của việc xây dựng ứng dụng trên GAE là sẽ phụ thuộc hoàntoàn vào các công nghệ của Google và rất khó có thể tách ra thành một ứng dụng độclập Yahoo hay Microsoft sẽ chẳng bao giờ mua một ứng dụng xây dựng trên nền tảngcủa đối thủ Còn các nhà đầu tư cũng rất e ngại khi tài sản của công ty đặt hết vào tayngười khác, dù cho đó là Google
I.2 Hệ điều hành Android
I.2.1 Khái niệm Android
Android là nền tảng cho thiết bị di động bao gồm một hệ điều hành, midware và một
số ứng dụng chủ đạo Bộ công cụ Android SDK cung cấp các công cụ và bộ thư viêncác hàm API cần thiết để phát triển ứng dụng cho nền tảng Android sử dụng ngôn ngữlập trình java
Những tính năng mà nền tảng Android hổ trợ:
Application framework: Cho phép tái sử dụng và thay thế các thành phần sẳn
có của Android
Dalvik virtual macine: Máy ảo java được tối ưu hóa cho thiết bị di động.
Intergrated browser: Trình duyệt web tích hợp được xây dựng dựa trên
WebKit engine
Optimized graphics: Hổ trợ bộ thư viện 2D và 3D dự vào đặc tả OpenGL ES 1.0.
SQLite: DBMS dùng để lưu trữ dữ liệu có cấu trúc.
Hổ trở các định dạng media phổ biến như: MPEG4, H.264, MP3, AAC, ARM, JPG,PNG, GIF
Hổ trợ thoại trên nền tảng GSM (Phụ thuộc vài phần cứng thiết bị)
Bluetooth, EDGE, 3G và WiFi (Phụ thuộc vài phần cứng thiết bị)
Camera, GPS, la bàn và cảm biến (Phụ thuộc vài phần cứng thiết bị)
Bộ công cụ phát triển ứng dụng mạnh mẽ
Trang 31I.2.2 Kiến trúc Android
Lược đồ sau thể hiện các thành phần của hệ điều hành Android:
Hình 6 :Mô hình kiến trúc nền tảng Android
I.2.2.1 Applications
Hệ điều hành Android tích hợp sẳn một số ứng dụng cơ bản như email client, SMS,lịch điện tử, bản đồ, trình duyệt web, sổ liên lạc và một số ứng dụng khác Ngoài ra tầng nàycũng chính là tầng chứa các ứng dụng được phát triển bằng ngôn ngữ Java
I.2.2.2 Application Framwork
Tầng này của hệ điều hành Android cung cấp một nền tảng phát triển ứng dụng
mở qua đó cho phép nhà phát triển ứng dụng có khả năng tạo ra các ứng dụng vô cùngsáng tạo và phong phú Các nhà phát triển ứng dụng được tự do sử dụng các tính năngcao cấp của thiết bị phần cứng như: thông tin định vị địa lý, khả năng chạy dịch vụdưới nền, thiết lập
Tầng này bao gồm một tập các services và thành phần sau:
Content Provider: Cho phép các ứng dụng có thể truy xuất dữ liệu từ các ứng
dụng khác hoặc chia sẽ dữ liệu của chúng
Resource Manager: Cung cấp khả năng truy xuất các tài nguyên non-code như
hình ảnh hoặc file layout
Trang 32 Notification Manager: Cung cấp khả năng hiển thị custom alert trên thanh status
System C library: một thể hiện được xây dựng từ BSD của bộ thư viện hệ
thống C chuẩn (libc), được điều chỉnh để tối ưu hóa cho các thiết bị chạy trên nềnLinux
Media libraries: Bộ thư viện hổ trợ trình diễn và ghi các định dạng âm than và
hình ảnh phổ biến
Surface manager: Quản lý hiển thị nội dung 2D và 3D.
LibWebCore: Một web browser engine hiện đại được sử dụng trong trình
duyệt của Android lần trong trình duyệt nhúng web view được sử dụng trong ứngdụng
SGL: Engine hổ trợ đồ họa 2D.
3D libraries: Một thể hiện được xây dựng dựa trên các APIs của OpenGL ES
1.0 Những thư viện này sử dụng các tăng tốc 3D bằng phần cứng lẫn phần mềm để tối
ưu hóa hiển thị 3D
FreeType: Bitmap and vector font rendering.
SQLite: Một DBMS nhỏ gọn và mạnh mẽ.
I.2.2.4 Android Runtime
Hệ điều hành Android tích hợp sẳn một tập hợp các thư viện cốt lõi cung cấphầ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 Mọiứng dụng của Android chạy trên một tiến trình của riêng nó cùng với một thể hiện củamáy ảo Dalvik Máy ảo Dalvik thực tế là một biến thể của máy ảo Java được sửa đổi,
bổ sung các công nghệ đặc trưng của thiết bị di động Nó được xây dựng với mục đíchlàm cho các thiết bị di động có thể chạy nhiều máy ảo một cách hiệu quả Trước khi
Trang 33stack, driver model Bộ nhân này làm nhiệm vụ như một lớp trung gian kết nối phầncứng thiết bị và phần ứng dụng.
Dưới đây là mô hình hợp tác giữa máy ảo Dalvik và Navite code:
Hình 7 :Mô hình hợp tác giữa máy ảo Dalvik và Navite code
I.2.3 Các thành phần cơ bản của một ứng dụng Android
I.2.3.1 Activity
Định nghĩa Activity
Là thành phần quan trọng của bất kỳ một ứng dụng Android nào.Thuật ngữActivity chỉ một việc mà người dùng có thể thực hiện trong một ứng dụng Android
Do gần như mọi activity đều tương tác với người dùng, lớp Activity đảm nhận việc tạo
ra một cửa sổ để người lập trình đặt lên đó một giao diện UI với setContentView(View)
Có hai phương thức mà gần như mọi lớp con của Activity đều phải hiện thực:
onCreate(Bundle) - Nơi khởi tạo activity
onPause() - Nơi giải quyết sự kiện người dùng rời khỏi activity Mọi dữ liệu
được người dùng tạo ra tới thời điểm này cần phải được lưu vào ContentProvider
Trang 34 Vòng đời của một activity
Hình 8 :Lược đồ vòng đời của 1 activity
I.2.3.2 Intent
Định nghĩa Intent
Intent được sử dụng với phương thức startActivity() để mở một Activity, vàdùng với broadcastIntent để gởi nó đến bất kì BroadcastReceiver liên quan nào, vàdùng với startService(Intent),bindService(Intent, ServiceConnection, int) để giao tiếpvới các Service chạy dưới nền
Trang 35
I.2.3.3 Service
Định nghĩa Service
Một service là một thành phần của ứng dụng, thể hiện mong muốn ứng dụngthực hiện các hành động trong khi không tương tác với người dùng hoặc cung cấpchức năng cho các ứng dụng khác sử dụng Nói một cách đơn giản, service là các tác
vụ (task) chạy ngầm dưới hệ thống nhằm thực hiện một nhiệm vụ nào đó Mỗi classService phải chứa thẻ <service> được khai báo trong file AndroidManifext.xml.Services có thể được bắt đầu bởi Context.startService() và Context.bindservice()
Vòng đời của một Service
Dù cho một service có được start bao nhiêu lần đi nữa thì nó sẽ bị tắt ngay khiphương thức Context.stopService() hoặc phương thức stopSelf() được gọi.Service cóthể dùng phương thức stopSelf(int) để đảm bảo rằng service sẽ không được tắt cho đếnkhi Intent đã khởi tạo nó được xử lý
Hình 10 :Lược đồ vòng đời của 1 Service Dựa theo hình trên, một service được bắt đầu bởi phương thức startService() làservice dùng để thực hiện các tác vụ ngầm dưới nền, service được bắt đầu bởi phươngthức bindService() là service được dùng để cung cấp các chức năng cho các chươngtrình khác
I.2.3.4 Content Provider
Là nơi lưu trữ và cung cấp cách truy cập dữ liệu do các ứng dụng tạo nên Đây làcách duy nhất mà các ứng dụng có thể chia sẻ dữ liệu của nhau
Trang 36Android cung cấp sẵn content providers cho một số kiểu dữ liệu thông dụng như âmthanh, video, thông tin sổ điện thoại, ) Người lập trình cũng có thể tự tạo ra các classcon (subclass) của Content Provider để lưu trữ kiểu dữ liệu của riêng mình.
I.2.3.5 View
View là thành phần cơ bản để xây dựng giao diện người dùng cho một ứng dụngAndroid View là một lớp căn bản của widgets
Một số Views thường dùng:
TextView: Hiển thị một khung text và cho phép người dùng thay đổi
ImageView: Hiển thị một hình ảnh xác định từ file tài nguyên hay qua một
content provider
Button: Hiển thị một nút nhấn.
Checkbox: Hiển thị một nút nhấn với hai trạng thái khác nhau.
KeyboardView: Hiển thị bàn phím ảo để nhập liệu.
WebView: Hiển thị các trang web bằng Webkit.
I.2.3.6 Broadcast Receiver
Một Broadcast receiver là một thành phần mà không làm gì khác ngoài việc nhận các thông báo được broadcast Một ứng dụng có thể có nhiều broadcastreceiver để đáp lại những thông báo được phát đến Tất cả các broadcastreceiver được thừa kế từ lớp cơ sở BroadcastReceiver Một Broadcast receiverkhông có giao diện nhưng nó có thể thực hiện gọi một
I.2.3.7 File AndroidManifest.xml
Là nền tảng của mọi ứng dụng Android, file AndroidManifest.xml được đặttrong thư mục root và cho biết những thành phần có trong ứng dụng của: các activities,các services, cũng như cách các thành phần ấy gắn bó với nhau
Khi tạo file manifest, điều quan trọng nhất là phải cung cấp thuộc tính củapackage, tức tên của Java package dùng làm cơ sở cho ứng dụng của ta
I.3 Giới thiệu về Google Maps
Hiện tại, có nhiều nhà cung cấp dịch vụ bản đồ trực tuyến miễn phí như
là Google, Yahoo, Microsoft, và Amazon… Google là hãng cung cấp dịch vụ tốt nhấtvới sản phẩm Google Maps với nhiều chức năng bản đồ cũng nhƣ cung cấp các APIs
Trang 37có thể chia làm 2 danh mục riêng biệt: dữ liệu cơ sở và dữ liệu của ứng dụng Dữ liệu
cơ sở, hay dữ liệu nền thường bao gồm dữ liệu địa lý và thường có nhiều lớp nhƣ làlớp khí quyển, ảnh, đường và các đường biên lãnh thổ Dữ liệu cụ thể của ứng dụngbao gồm các tầng dữ liệu cụ thể cho ứng dụng được phát triển Ví dụ, một ứng dụngbản đồ Web cho một thành phố thì sẽ có các lớp nhỏ là các vùng trực thuộc, vị trí cáctrường học, các công trình công cộng, và nhiều lớp khác Mỗi lớp dữ liệu này phảiđược định vị và lưu trữ trên máy chủ bởi chính tổ chức đó và nó cần được cập nhậtđịnh kỳ Với Google Maps, sẽ không còn phải định vị và quản lý dữ liệu cơ sởnữa Dữ liệu vùng, đường đã đi kèm trong Google Maps Tuy nhiên, người sửdụng cũng cần phải quản lý ứng dụng của mình bằng dữ liệu XML hoặc là các địnhdạng khác Không chỉ có các yêu cầu dữ liệu phức tạp, các ứng dụng bản đồ cổ điểncòn cócác vấn đề với phần cứng phần mềm và sức lực con người Phải mua thêm phầncứng và phần mềm, cũng nhờ cần có sự quản lý của con người để cài đặt bảo trì, quảntrị phần mềm, lập trình tạo ra ứng dụng Tuy không hoàn toàn loại bỏ các yêu cầuphần cứng và phần mềm, chúng đã được giảm thiểu đáng kể với Google Maps Vẫncần phần cứng để triển khai ứng dụng nhƣng yêu cầu phần mềm thì đã được hạn chếmột cách tối đa Google Maps là sản phẩm miễn phí, không cần cài đặt, hay quản lý.Sản phẩm hỗ trợ các APIs để tạo ra các chức năng tùy biến của ứng dụng.GoogleMaps hỗ trợ các dịch vụ nhờ định vị, tìm đường, thêm dữ liệu cá nhân, các điều khiểnlàm cho việc ứng dụng bản đồ trong ứng dụng Web trở nên dễ dàng và thuận tiện hơnbao giờ
I.4 Định vị toàn cầu GPS
Hệ thống định vị toàn cầu (tiếng Anh: Global Positioning System – GPS) là hệthống xác định vị trí dựa trên vị trí của các vệ tinh nhân tạo Trong cùng một thờiđiểm, ở một vị trí trên mặt đất nếu xác định được khoảng cách đến ba vệ tinh (tốithiểu) thì sẽ tính được tọa độ của vị trí đó Hệ thống định vị toàn cầu của Mỹ là hệ dẫnđường dựa trên một mạng lưới 24 quả vệ tinh được Bộ Quốc phòng Hoa Kỳ đặt trênquỹ đạo không gian
Các hệ thống dẫn đường truyền thống hoạt động dựa trên các trạm phát tín hiệu
vô tuyến điện Được biết đến nhiều nhất là các hệ thống sau: LORAN – (Long RangeNavigation) – hoạt động ở giải tần 90-100 kHz chủ yếu dùng cho hàng hải, hayTACAN – (TACtical Air Navigation) – dùng cho quân đội Mỹ và biến thể với độchính xác thấp VOR/DME – VHF (Omnidirectional Range/Distance MeasuringEquipment) – dùng cho hàng không dân dụng
Trang 38Gần như đồng thời với lúc Mỹ phát triển GPS, Liên Xô cũng phát triển một hệthống tương tự với tên gọi GLONASS Hiện nay Liên minh Châu Âu đang phát triển
hệ dẫn đường vệ tinh của mình mang tên Galileo
GPS ban đầu chỉ dành cho các mục đích quân sự, nhưng từ năm 1980 chính phủ
Mỹ cho phép sử dụng trong dân sự GPS hoạt động trong mọi điều kiện thời tiết, mọinơi trên Trái Đất, 24 giờ một ngày Không mất phí thuê bao hoặc mất tiền trả cho việcthiết lập sử dụng GPS
Hệ thống định vị tòan cầu ( GPS ) do Bộ Quốc phòng Mỹ phát triển và điều hành.gồm 3 phần :
Phần vũ trụ
Gồm 24 vệ tinh quay xung quanh trái đất hai lần trong ngày trong quỹ đạo rất
chính xác.Độ cao vệ tinh so với mặt đất là 20.183 km, chu kỳ quay quanh trái đất là 11giờ 57’58”
Phần vũ trụ sẽ bảo đảm cho bất kỳ vị trí nào trên quả đất đều có thể quan sátđược 4 vệ tinh ở góc trên 15 độ ( nếu góc ở ngưỡng 10 độ thì có thể quan sát được 10
vệ tinh và ở góc ngưỡng 5 độ có thể quan sát được 12 vệ tinh
Phần điều khiển
Bao gồm một trạm điều khiển chính, 5 trạm thu số liệu, 3 trạm truyền số liệu
Phần sử dụng
Những máy thu tín hiệu GPS có anten riêng ( máy định vị )
Các thiết bị tự ghi ( bộ ghi số liệu )
Máy tính ( phần mềm xử lý số liệu )