Chương 1: TỔNG QUAN 1.1 Giới thiệu tổng quan và lý do chọn đề tài 1.1.1 Tổng quan về hệ thống định vị toàn cầu GPS - Hệ Thống GPS GPS Global Positioning System hay còn được gọi là NAVST
Trang 1-
CÔNG TRÌNH DỰ THI GIẢI THƯỞNG SINH VIÊN NGHIÊN CỨU KHOA HỌC EURÉKA
LẦN THỨ XIX NĂM 2017
TÊN CÔNG TRÌNH:
XÂY DỰNG ỨNG DỤNG QUẢN LÝ NHÂN VIÊN GIAO HÀNG
LĨNH VỰC NGHIÊN CỨU: CÔNG NGHỆ THÔNG TIN
CHUYÊN NGÀNH: CÔNG NGHỆ PHẦN MỀM
Mã số công trình:………
Trang 2LỜI MỞ ĐẦU
GPS là hệ thống định vị toàn cầu GPS được thiết kế, xây dựng, vận hành và quản lý bởi Bộ Quốc phòng Mỹ Nhưng kể từ năm 1980, chính phủ Hoa Kỳ đã cho phép sử dụng hệ thống GPS vào mục đích dân sự
Và cho đến nay, lợi ích của hệ thống GPS mang lại là vô cùng to lớn GPS không chỉ được dùng trong lĩnh vực khai thác mỏ, địa chất, vẽ bản đồ mà còn được dùng để điều khiển giao thông và đặc biệt là sử dụng định vị và dẫn đường trong ngành hàng không
Và với sự phát triển vượt bậc của công nghệ, ngay cả những chiếc điện thoại ngày nay cũng được trang bị hệ thống GPS Đa số những nhà sản xuất điện thoại đều tích hợp sẵn một loại bản đồ số kèm theo hệ thống GPS trên điện thoại Một số ít còn lại không có sẵn bản đồ số tích hợp sẵn mà người dùng phải mua một phần mềm bản đồ bên thứ 3 Một số chức năng của GPS được cấp phép sử dụng miễn phí trên toàn thế giới
Một trong những tính năng nổi trội của công cụ này là xác định vị trí dựa trên vị trí của các
vệ tinh nhân tạo
Từ những lợi ích từ hệ thống định vị trên, nhóm chúng em đã nảy sinh ý tưởng: xây dựng
hệ thống định vị, giám sát giao hàng (shipper) trên những smartphone có tích hợp sẵn GPS Với hệ thống này, người nhân viên chỉ việc cài một phần mềm trên smartphone Android và cho nó chạy ẩn dưới nền hệ thống Sau đó người giám sát (Quản Lý) truy cập vào website của hệ thống để biết chính xác nhân viên đang ở đâu
Trang 3MỤC LỤC
LỜI MỞ ĐẦU 1
DANH MỤC BẢNG 4
DANH MỤC HÌNH 5
TÓM TẮT ĐỀ TÀI 7
Chương 1: TỔNG QUAN 8
1.1 Giới thiệu tổng quan và lý do chọn đề tài 8
1.1.1 Tổng quan về hệ thống định vị toàn cầu GPS 8
1.1.2 Sự ra đời và phát triển của điện thoại thông minh 13
1.2 Mục tiêu đề tài 14
1.3 Các bước nghiên cứu 14
1.4 Bố cục đề tài 14
Chương 2: CƠ SỞ LÝ THUYẾT 15
2.1 Hệ điều hành Android 15
2.1.1 Giới thiệu 15
2.1.2 Tính mở của hệ điều hành Android 17
2.1.3 So sánh với các hệ điều hành cùng loại khác 18
2.2 Kiến trúc và các thành phần cơ bản 20
2.2.1 Nhân Linux (Linux Kernel) 21
2.2.2 Thư viện (Library) 22
2.2.3 Android Runtime 24
2.2.4 Khung tổ chức ứng dụng (Application Framework) 24
2.2.5 Application 25
2.3 Ngôn ngữ phát triển và cách thức biên dịch 26
2.4 Cấu trúc của ứng dụng Android 27
2.4.1 Các thành phần tạo giao diện người dùng trong ứng dụng 29
2.5 Nền tảng ASP.NET MVC 38
2.5.1 Giới thiệu về ASP.NET MVC 38
2.5.2 Thế nào là mô hình MVC? 39
2.5.3 Ưu điểm và nhược điểm của ứng dụng web dựa trên mô hình MVC 41 2.5.4 Các tính năng của nền tảng ASP.NET MVC 42
2.5.5 Sự khác nhau giữa ASP.NET MVC và ASP.NET WEBFORM 44
2.6 Tìm hiểu FireBase 45
2.6.1 Tổng quan 45
2.6.2 Các chức năng chính của Google Firebase 45
2.6.3 Ưu nhược điểm của Firebase 50
2.7 Google Map API 52
2.7.1 Tổng quan 52
2.7.2 Một số ứng dụng của Google Map API 53
Trang 4Chương 3: PHÂN TÍCH VÀ THIẾT KẾ CHƯƠNG TRÌNH 54
3.1 Khảo sát, mô tả bài toán 54
3.1.1 Đặc tả bài toán 54
3.1.2 Đặc tả chức năng: 54
3.1.3 Các biểu đồ hệ thống 55
Chương 4: THIẾT KẾ GIAO DIỆN VÀ XÂY DỰNG ỨNG DỤNG 64
4.1 Sơ đồ màn hình và trang 64
4.1.1 Sơ đồ màn hình ứng dụng Android 64
4.1.2 Sơ đồ trang website quản lý 65
4.2 Mô tả màn hình và trang 67
4.2.1 Ứng dụng nhân viên trên Android 67
4.2.2 Website quản lý shipper 74
Chương 5: ĐÁNH GIÁ ỨNG DỤNG 77
5.1 Kết luận 77
5.1.1 Kết quả đạt được đề tài 77
5.1.2 Hạn chế của đề tài nghiêm cứu : 77
5.1.3 Hướng phát triển của đề tài 77
TÀI LIỆU THAM KHẢO 78
Trang 5DANH MỤC BẢNG
Bảng 2.1:So sánh hệ điều hành Android với những hệ điều hành khác 18
Bảng 2.2: Các phương thức Callback trong Service 34
Bảng 2.3: So sánh sự khác nhau giữa ASP.NET Webform và ASP.NET MVC 44
Bảng 3.1: Mô tả cây Trạng thái 61
Bảng 3.2: Mô tả cây vị trí nhân viên 61
Bảng 3.3: Mô tả cây thông tin nhân viên 62
Bảng 3.4: Mô tả cây đơn hàng 62
Bảng 4.1: Chi tiết các màn hình 64
Bảng 4.2: Chi tiết các trang 65
Bảng 5.1: Đánh giá mức độ hoàn thành ứng dụng Error! Bookmark not defined
Trang 6DANH MỤC HÌNH
Hình 2.1: Hệ điều hành Android 15
Hình 2.2: Kiến trúc Android 20
Hình 2.3: Kiến trúc nhân Linux 21
Hình 2.4: Kiến trúc thư viện 22
Hình 2.5: Kiến trúc Android Runtime 24
Hình 2.6: Kiến trúc Application Framework 24
Hình 2.7: Kiến trúc Ứng dụng 25
Hình 2.8: Quá trình biên dịch từ mã nguồn Java của loại ứng dụng Dalvik 26
Hình 2.9: Quá trình biên dịch của ứng dụng Native 26
Hình 2.10: Hình ảnh tham khảo về API trong JDK 27
Hình 2.11: Các thành phần cơ bản trong một ứng dụng Android 28
Hình 2.12: Minh họa quá trình Stack trong Activity 29
Hình 2.13: Biểu đồ miêu tả Activity State 31
Hình 2.14: Sơ đồ miêu tả vòng đời của Service 33
Hình 2.15: Sơ đồ miêu tả quá trình broadcast 35
Hình 2.16: Sơ đồ minh họa broadcast 36
Hình 2.17: Danh sách các Broadcast IntentFilter cơ bản 37
Hình 2.18: ASP.NET 38
Hình 2.19: Mô hình MVC 39
Hình 2.20: Minh họa quá trình hoạt động MVC 41
Hình 2.21: Google Firebase 45
Hình 2.22: Minh họa cây dữ liệu Firebase Database 46
Hình 2.23: Minh họa nhóm cây Firebase Database 47
Hình 2.24: Hệ thống xác thực của Firebase 48
Hình 2.25: Dịch vụ lưu trữ dữ liệu trên Firebase 49
Hình 2.26: Hệ thống thống kê Firebase 49
Trang 7Hình 2.27: Google map API 52
Hình 2.28: Công cụ bản đồ Google Map 53
Hình 3.1: Sơ đồ mô tả use case nhân viên 55
Hình 3.2: Sơ đồ mô tả use case quản lý 58
Hình 3.3: Sơ đồ mô tả cây dữ liệu 60
Hình 4.1: Sơ đồ màn hình ứng dụng của nhân viên trên HĐH Android: 64
Hình 4.2: Sơ đồ trang quản lý shipper 65
Hình 4.3: Màn hình đăng nhập vào ứng dụng 67
Hình 4.4: Màn hình hình chính của ứng dụng 68
Hình 4.5: Màn hình danh sách menu chức năng 69
Hình 4.6: Màn hình quản lý thông tin cá nhân 70
Hình 4.7: Màn hình xem bản đồ và chỉ đường 71
Hình 4.8: Màn hình bật tắt chức năng tracking 72
Hình 4.9: Màn hình xem chi tiết đơn hàng 73
Hình 4.10: Trang chủ website quản lý 74
Hình 4.13: Trang quản lý danh sách nhân viên 74
Hình 4.15: Trang thêm một nhân viên 75
Hình 4.16: Trang cập nhật thông tin nhân viên 75
Hình 4.17: Trang gửi tin nhắn tới nhân viên 76
Hình 4.18: Trang xem bản đồ theo thời gian thực 76
Trang 8sẽ sử dụng phần mềm trên PC xem trên map sẽ thấy được các vị trí hiện tại của các nhân viên giao hang theo thời gian thực, tình trạng online/offline của từng nhân viên, thông tin nhân viên cũng như danh sách đơn hàng của từng nhân viên
Trang 9
Chương 1: TỔNG QUAN 1.1 Giới thiệu tổng quan và lý do chọn đề tài
1.1.1 Tổng quan về hệ thống định vị toàn cầu GPS
- Hệ Thống GPS GPS (Global Positioning System) hay còn được gọi là NAVSTAR (NAVigation Satellite Timing And Ranging) là hệ thống dẫn đường vệ tinh dùng để cung cấp thông tin về vị trí, tốc độ và thời gian cho các máy thu GPS ở khắp mọi nơi trên trái đất, trong mọi thời điểm và mọi điều kiện thời tiết
- Hệ thống thiết bị định vị GPS có thể xác định vị trí với sai số từ vài trăm mét đến vài centimet Tất nhiên với độ chính xác càng cao thì cấu tạo của máy thu tín hiệu thiết bị định vị GPS càng phức tạp và giá thành càng cao
- Hệ thống được phát triển bởi chính phủ Mỹ, quản lý bởi Không Lực Mỹ ( U.S Air Force) và giám sát bởi ủy ban Định vị - Dẫn đường Bộ Quốc phòng Mỹ
Trang 10Trạm không gian bao gồm 24 vệ tinh nhân tạo liên tục phát tín hiệu quảng bá khắp toàn cầu và được ví như trái tim của toàn hệ thống Các vệ tinh được cấp nguồn hoạt động bởi các tấm pin mặt trời và được thiết kế để hoạt động trong vòng gần 8 năm Nếu các tấm pin mặt trời bị hỏng thì vệ tinh sẽ hoạt động nhờ các ắc quy dự phòng được gắn sẵn trên vệ tinh Ngoài ra trên vệ tinh còn có một hệ thống tên lửa nhỏ để hiệu chỉnh quỹ đạo bay của vệ tinh Mỹ đã phóng vệ tinh GPS đầu tiên vào những năm 1978 và tiếp tục hoàn thiện việc phóng 24 vệ tinh lên quỹ đạo vào năm
1994
1.1.1.2 Trung tâm điều khiển:
Gồm có 4 trạm thu tín hiệu phát đi từ vệ tinh (Monitor Station) và một trạm chủ (Master Control) để phát tín hiệu lên vệ tinh Bốn trạm thu được đặt ở các địa điểm khác nhau trên khắp thế giới: Một được đặt tại đảo Hawaii, một trên đảo Kwajalein (Thái Bình Dương); một được đặt trên đảo Diego Garcia (Ấn Độ Dương) và một trạm được đặt ở đảo Ascension (Đại Tây Dương)
Trạm chủ được đặt tại trại Falcon của Không Lực Hoa Kỳ tại Bang Colorado Bốn trạm thu tín hiệu có nhiệm vụ thu tín hiệu chứa thông tin về quỹ đạo và thời gian từ vệ tinh gửi về sau đó gửi nhưng thông tin này cho trạm chủ Trạm chủ sẽ hiệu chỉnh những thông tin nhận được và gửi lại những thông tin đã được hiệu chỉnh lên vệ tinh để điều chỉnh quỹ đạo bay và đồng bộ thời gian cho các vệ tinh cùng với thông tin về sự suy hao đường truyền
1.1.1.3 Máy thu GPS:
Đây là thành phần cuối cùng trong hệ thống GPS Vì tín hiệu từ vệ tinh GPS được phát quảng bá trên toàn bộ trái đất nên số lượng máy thu GPS là không giới hạn Máy thu GPS sẽ thu các tín hiệu mang thông tin về cự ly, thời gian, trễ truyền sóng được phát xuống từ 4 vệ tinh để xác định vị trí cũng như tốc độ của mình
1.1.1.4 Quỹ đạo vệ tinh GPS:
Hệ thống thiết bị định vị GPS bao gồm 24 vệ tinh địa tĩnh, trong đó có 03 vệ tinh dành cho dự phòng, trong tương lai Mỹ sẽ tiếp tục phóng thêm 04 vệ tinh GPS nữa lên quỹ đạo để bảo đảm dự phòng 1:3 cho toàn bộ hệ thống Vệ tinh GPS bay
Trang 11theo sáu quỹ đạo, mỗi quỹ đạo có 04 vệ tinh, mặt phẳng quỹ đạo bay nghiêng 55o so với mặt phẳng xích đạo trái đất và các góc xuân phân của quỹ đạo lệch nhau số lần nguyên của 60o Vệ tinh GPS bay quanh trái đất với quỹ đạo tròn, có tâm trùng với tâm của trái đất với bán kính 26.500km và quay hết một vòng quanh trái đất trong nửa ngày thiên văn (tương đương 11,96 giờ)
Tất cả các vệ tinh GPS thế hệ I (Block I) bắt đầu được phóng lên quỹ đạo từ những năm 1978 đến nay không còn hoạt động nữa Đến năm 1985 Mỹ bắt đầu phóng vệ tinh GPS thế hệ II (Block II) bằng phi thuyền con thoi và tên lửa đẩy Delta
II Các thông số chính của vệ tinh thế hệ thứ II như sau:
o Khối lượng trên quỹ đạo: 930Kg
o Đường kính: 5,1m
o Tốc độ bay: 4km/s
o Tần số sóng mang “đường xuống” băng L1: 1575,42MHz; băng L2: 1227,6MHz
o Tần số sóng mang “đường lên” 1783,74MHz
o Đồng hồ: 02 đồng hồ nguyên tử Cesium; 02 đồng hồ nguyên tử Rubidium
o Thời gian hoạt động trên quỹ đạo: 7÷8 năm
Về lý thuyết một máy thu GPS tại bất cứ một địa điểm nào trên trái đất và trong mọi điều kiện thời tiết đều có thể “nhìn thấy” ít nhất 3 vệ tinh GPS và khi phát hiện được vệ tinh thứ tư là hoàn toàn có thể xác định được vị trí của mình nhờ các phép
đo khoảng cách từ vệ tinh đến máy thu
1.1.1.5 Tín hiệu GPS:
Mỗi vệ tinh GPS thế hệ II đều có mang theo hai loại đồng hồ nguyên tử để đưa thông tin thời gian vào trong tín hiệu phát Vệ tinh GPS sử dụng tín hiệu đường xuống băng L và được chia thành hai băng con đó là L1 và L2 với tần số sóng mang tương ứng là f1=1575,42MHz và f2=1227,6MHz Với tần số cơ sở f0=1,023MHz, người ta tạo ra các tần số sóng mang bằng các bộ nhân tần: f1=1540f0; f2=1200f0 Tín hiệu L1 từ mỗi vệ tinh sử dụng khoá dịch pha nhị phân (BPSK - Binary Phase Shift Keying) được điều chế bởi hai mã giải tạp ngẫu nhiên PRN Thành phần đồng pha được gọi là “mã kém” hay mã C/A (Coarse/Acquistion Code) được dùng cho mục đích dân sự Thành phần trực pha (dịch pha 90o) được gọi là “mã chính
Trang 12xác” hay mã P (Precision Code) được sử dụng trong quân đội Mỹ và các nước đồng minh với Mỹ Tín hiệu băng L2 cũng là tín hiệu BPSK được điều chế bằng mã P Khi biết mã giả tạp ngẫu nhiên PRN, chúng ta có thể độc lập truy nhập đến những tín hiệu từ nhiều vệ tinh GPS trong cùng một tần số sóng mang Tín hiệu được truyền bởi mỗi về tinh GPS sẽ được tách ở mỗi máy thu bằng cách tạo mã PRN tương ứng Sau đó ghép hoặc tương quan hoá mã PRN này với tín hiệu thu được từ vệ tinh, chúng ta sẽ có được thông tin dẫn đường Tất cả các mã PRN đều
đã được biết từ trước, nó được tạo hoặc lưu trong máy thu GPS
1.1.1.6 Độ chính xác của hệ thống:
Bộ Quốc phòng Hoa Kỳ đã sử dụng rào chắn SA (Selective Availability) nhằm làm giảm độ chính xác của những người sử dụng máy thu GPS phi quân sự Đây là rào chắn được xây dựng bằng sự kết hợp của các phương thức điều chế, các cấu hình khác nhau và chia GPS thành 3 cấp dịch vụ với độ chính xác khác nhau: dịch
vụ định vị chính xác (PPS - Precise Positioning Service), dịch vụ định vị chuẩn không rào chắn( SPS without SA - Standard Positioning Service without SA) và dịch vụ định vị chuẩn có rào chắn (SPS with SA)
PPS là dịch vụ có độ chính xác cao nhất Dịch vụ này chỉ được cung cấp cho quân đội Mỹ và quân đội các nước đồng minh thân cận của Mỹ Dịch vụ này có khả năng truy nhập mã P và được dỡ bỏ tất cả các rào chắn SA Các dịch vụ định
vị chuẩn SPS có độ chính xác thấp hơn và chỉ truy nhập tới mã C/A ở băng tần L1
1.1.1.7 GPS vi phân
GPS vi phân (DGPS - Differential GPS) là một kỹ thuật nhằm giảm sai lỗi trong khi định vị bằng cách thu thêm tín hiệu được phát ra từ một trạm chuẩn đặt ở một vị trí biết trước Khi trạm chuẩn thu được tín hiệu từ vệ tinh, nó sẽ tự động tính toán vị trí và thời gian theo tín hiệu vệ tinh Vị trí và thời gian này được so sánh với
vị trí và thời gian thực, từ đó biết được sai lệch do môi trường truyền sóng và sai lệch do hiệu ứng rào chắn SA Sau đó, sai lệch này được chuyển thành thông tin hiệu chỉnh đưa đến máy thu này với độ chính xác cao hơn GPS thông thường
Có hai loại GPS vi phân: GPS cục bộ (LADGPS - Local Area Differential GPS) và GPS diện rộng (WADGPS - Wide Area Differential GPS)
Trang 13GPS cục bộ là GPS vi phân có máy thu GPS nhận thông tin hiệu chỉnh tựa cự
ly và pha sóng mang từ một trạm chuẩn được đặt trong tầm nhìn thẳng Chính vì đặc điểm hạn chế này nên máy thu GPS chỉ có thể thu tín hiệu khi ở trong khu vực gần trạm chuẩn, do đó phương thức này có tên gọi là GPS cục bộ Thông tin hiệu chỉnh bao gồm: hiệu chỉnh quỹ đạo thu được từ vệ tinh, lỗi đồng hồ (có kể thêm hiệu ứng rào chắn SA) và trễ truyền sóng
GPS diện rộng sử dụng một mạng lưới các trạm chuẩn được phân bố ở một vùng rộng lớn Nhờ hệ thống này người ta có thể xác định riêng rẽ từng lỗi như: lỗi đồng hồ, trễ truyền sóng, lỗi quỹ đạo Những thông này sẽ được tính toán và gửi đến cho máy thu GPS thông qua các vệ tinh viễn thông hay mạng thông tin di động mặt đất
1.1.1.8 Nguyên lý định vị GPS:
Dựa trên cơ sở hình học, nếu ta biết được khoảng cách và toạ độ của ít nhất 4 điểm đến 1 điểm bất kỳ thì vị trí của điểm đó có thể xác định được một cách chính xác Giả sử rằng khoảng cách từ máy thu đến vệ tinh thứ nhất là d1, điều ấy có nghĩa
là máy thu nằm ở đâu đó trên mặt cầu có tâm là vệ tinh thứ nhất và bán kính mặt cầu
đó là d1 Tương tự nếu ta biết khoảng cách từ máy thu đến vệ tinh thứ 2 là d2 thì vị trí máy thu được xác định nằm trên đường tròn giao tiếp của hai mặt cầu Nếu biết được khoảng cách từ máy thu đến vệ tinh thứ 3 thì ta có thể xác định được vị trí máy thu là một trong hai giao điểm của của đường tròn trên với mặt cầu thứ 3 Trong hai giao điểm đó có một giao điểm được loại bỏ bằng phương pháp nội suy Tuy nhiên nếu ta lại biết được khoảng cách từ máy thu đến một vệ tinh thứ 4 thì ta có thể hoàn toàn xác định chính xác vị trí của máy thu
- Để xác định khoảng cách từ máy thu đến vệ tinh ta sử dụng công thức sau:
d=V.Δt
- Trong đó V: Là vận tốc lan truyền sóng điện từ và được tính bằng tốc độ ánh sáng
- Δt: Là thời gian sóng điện từ đi từ máy phát đến máy thu
- Tuy nhiên qua cách tính trên ta mới xác định được vị trí của máy thu trong không gian, để biết được vị trí của máy thu so với mặt đất chúng ta cần phải sử dụng các thông tin khác
- Các vệ tinh GPS được đặt trên quỹ đạo rất chính xác và bay quanh trái đất một vòng trong 11giờ 58 phút nghĩa là các vệ tinh GPS bay qua các trạm kiểm soát 2 lần trong
Trang 14một ngày Các trạm kiểm soát được trang bị các thiết bị để tính toán chính xác tốc độ,
vị trí, độ cao của các vệ tinh và truyền trở lại vệ tinh các thông tin đó Khi một vệ tinh
đi qua trạm kiểm soát thì bất kỳ sự thay đổi nào trên quỹ đạo cũng có thể xác định được Những nguyên nhân đó chính là sức hút của mặt trời, mặt trăng, áp suất bức xạ mặt trời vv Vệ tinh sẽ truyền các thông tin về vị trí của nó đối với tâm trái đất đến các máy thu GPS (cùng với các tín hiệu về thời gian) Các máy thu GPS sẽ sử dụng các thông tin này vào trong tính toán để xác định vị trí, toạ độ của nó theo các kinh độ
và vĩ độ của trái đất Mô hình toán học của trái đất được dùng trong hệ thống GPS được gọi là hệ trắc địa toàn cầu WGS-84 (World Geodetic System 1984
1.1.2 Sự ra đời và phát triển của điện thoại thông minh
- Điện thoại thông minh, điện thoại tinh khôn (tiếng Anh: smart phone) là khái niệm để chỉ loại điện thoại tích hợp một nền tảng hệ điều hành di động với nhiều tính năng hỗ trợ tiên tiến về điện toán và kết nối dựa trên nền tảng cơ bản của điện thoại di động thông thường
- Ban đầu điện thoại thông minh bao gồm các tính năng của điện thoại di động thông thường kết hợp với các thiết bị phổ biến khác như PDA, thiết bị điện tử cầm tay, máy ảnh kỹ thuật số, hệ thống định vị toàn cầu GPS Điện thoại thông minh ngày nay bao gồm tất cả chức năng của laptop như duyệt web, Wi-Fi, các ứng dụng của bên thứ 3 trên di động và các phụ kiện đi kèm cho máy
- Các ngành công nghiệp tin rằng điện thoại thông minh đa số có một màn hình độ phân giải cao hơn so với điện thoại truyền thống và điện thoại thông minh như một máy tính
di dộng, vì nó có một hệ điều hành riêng biệt vì có thể hiển thị phù hợp các trang website bình thường và người dùng có thể thay đổi một giao diện và sở hữu khả năng
mở ứng dụng, tiện hơn và dễ dàng cài đặt lẫn gõ bỏ ứng dụng Điện thoại thông minh
có màn hình cảm ứng độ phân giải cao, và sẵn sàng để gọi bàn phím ảo và viết chữ tay
- Điện thoại thông minh có thể tiến hành đa tác vụ thao tác, và có một đa phương tiện mạnh mẽ, Email, truy cập Internet và hoàn toàn có thể thay đổi các thiết bị truyền thống như MP3, MP4, PDA Điện thoại thông minh có thể thay thế xử lý các vấn đề máy tính văn phòng và các vấn đề khác, nó có thể giao tiếp với mạng duy trì một thời gian kết nối liền mạch với thời gian, đồng thời có thể vô hiệu hóa mạng bất cứ lúc nào
và đồng bộ hóa dữ liệu với máy tính, máy tính xách tay và các thiết bị khác
Trang 15- Có thể tiến hành đa tác vụ thao tác, và có một đa phương tiện mạnh mẽ, Email,Truy cập Internet, và hoàn toàn có thể thay đổi các thiết bị truyền thống như MP3,MP4,PDA điện thoại thông minh có thể thay thế xử lý các vấn đề máy tính văn phòng và các vấn
đề khác, nó có thể giao tiếp với mạng duy trì một thời gian kết nối liền mạch với thời gian, đồng thời có thể vô hiệu hóa mạng bất cứ lúc nào, và đồng bộ hóa dữ liệu với máy tính, máy tính xách tay và các thiết bị khác
1.2 Mục tiêu đề tài
- Đề tài nhằm mục đích xây dựng một hệ thống quản lý nhân viên giao hàng Nhân viên
sẽ dùng ứng dụng trên smartphone chạy hệ điều hành Android để gửi thông tin vị trí của mình về server Người quản trị thông qua website admin sẽ theo dõi vị trí hiện tại của nhân viên giao hàng đồng thời người quản trị sẽ giao nhiệm vụ cho nhân viên đó
1.3 Các bước nghiên cứu
Phân tích yêu cầu
Lựa chọn công nghệ
Nghiên cứu cơ sở lý thuyết của công nghệ đã chọn
Áp dụng lý thuyết vào xây dựng ứng dụng thực tiễn
Kiểm tra, tham khảo các ứng dụng khác để tối ưu hóa ứng dụng
Trang 16Chương 2: CƠ SỞ LÝ THUYẾT 2.1 Hệ điều hành Android
2.1.1 Giới thiệu
- Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho các thiết
bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng Ban đầu, Android được phát triển bởi Tổng công ty Android, với sự hỗ trợ tài chính từ Google và sau này được chính Google mua lại vào năm 2005 Android ra mắt vào năm
2007 cùng với tuyên bố thành lập Liên minh thiết bị cầm tay mở: một hiệp hội gồm các công ty phần cứng, phần mềm, và viễn thông với mục tiêu đẩy mạnh các tiêu chuẩn mở cho các thiết bị di động Chiếc điện thoại đầu tiên chạy Android được bán vào tháng 10 năm 2008
Hình 2.1: Hệ điều hành Android
- Android có mã nguồn mở và Google phát hành mã nguồn theo Giấy phép Apache Chính mã nguồn mở cùng với một giấy phép không có nhiều ràng buộc đã cho phép các nhà phát triển thiết bị, mạng di động và các lập trình viên nhiệt huyết được điều chỉnh và phân phối Android một cách tự do Ngoài ra, Android còn có một cộng đồng lập trình viên đông đảo chuyên viết các ứng dụng để mở rộng chức năng của thiết bị, bằng một loại ngôn ngữ lập trình Java có sửa đổi Vào tháng 10 năm 2012, có khoảng 700.000 ứng dụng trên Android, và số lượt tải ứng dụng từ Google Play, cửa hàng ứng dụng chính của Android, ước tính khoảng 25 tỷ lượt
- Những yếu tố này đã giúp Android trở thành nền tảng điện thoại thông minh phổ biến nhất thế giới, vượt qua Symbian vào quý 4 năm 2010, và được các công ty công nghệ
Trang 17lựa chọn khi họ cần một hệ điều hành không nặng nề, có khả năng tinh chỉnh, và giá rẻ chạy trên các thiết bị công nghệ cao thay vì tạo dựng từ đầu Kết quả là mặc dù được thiết kế để chạy trên điện thoại và máy tính bảng, Android đã xuất hiện trên TV, máy chơi game và các thiết bị điện tử khác Bản chất mở của Android cũng khích lệ một đội ngũ đông đảo lập trình viên và những người đam mê sử dụng mã nguồn mở để tạo ra những dự án do cộng đồng quản lý Những dự án này bổ sung các tính năng cao cấp cho những người dùng thích tìm tòi hoặc đưa Android vào các thiết bị ban đầu chạy hệ điều hành khác
- Android chiếm 75% thị phần điện thoại thông minh trên toàn thế giới vào thời điểm quý 3 năm 2012, với tổng cộng 500 triệu thiết bị đã được kích hoạt và 1,3 triệu lượt kích hoạt mỗi ngày Sự thành công của hệ điều hành cũng khiến nó trở thành mục tiêu trong các vụ kiện liên quan đến bằng phát minh, góp mặt trong cái gọi là "cuộc chiến điện thoại thông minh" giữa các công ty công nghệ
- Được xây dựng trên một nền tảng mở, và một bộ thư viện đa năng, mạnh mẽ với nguyên lý mở, Android đã nhanh chóng được cộng đồng lập trình viên di động hưởng ứng mạnh mẽ Nền tảng Android tích hợp nhiều tính năng nổi bật:
Android là một hệ điều hành nhân Linux, đảm bảo sự tương tác với các phần cứng, quản lý bộ nhớ, điều khiển các tiến trình tối ưu cho các thiết bị di động
Bộ ứng dụng khung cho phép sử dụng lại và thay thế các thành phần riêng lẻ
Máy ảo Dalvik được tối ưu cho các thiết bị di động, chạy các ứng dụng lập trình trên ngôn ngữ Java
Các thư viện cho phát triển ứng dụng mã nguồn mở bao gồm SQLite, WebKit, OpenGL và trình quản lý đa phương tiện
Hỗ trợ các chuẩn đa phương tiện phổ biến, thoại trên nền GSM, Bluetooth EDGE, 3G và Wifi
Hỗ trợ Camera, GPS, la bàn, máy đo gia tốc…
Bộ phát triển ứng dụng SDK đầy đủ gồm thiết bị giả lập, công cụ sửa lỗi, tích hợp với Eclipse SDK
Android cung cấp một tập hợp đầy đủ các phần mềm cho thiết bị di động bao gồm:
hệ điều hành, các khung ứng dụng và các ứng dụng cơ bản
Trang 182.1.2 Tính mở của hệ điều hành Android
- 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ả một chiếc điện thoại đã cung cấp Nó được xây dựng để được 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 phong phú hơn và nhiều hơn nữa những kinh nghiệm
cố kết cho người dùng Android được xây dựng trên mở Linux Kernel Hơn nữa, nó sử dụng một máy ảo tuỳ chỉnh được thiết kế để tối ưu hóa bộ nhớ và tài nguyên phần cứng trong một môi trường di động Android là mã nguồn mở, nó có thể được liberally
mở rộng Nền tảng này sẽ tiếp tục tiến triển như cộng đồng nhà phát triển công việc cùng nhau để xây dựng các ứng dụng di động sáng tạo
- 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 Họ tất cả có thể được xây dựng để có thể truy cập bằng khả năng của một người cung cấp cho người sử dụng điện thoại với một dải rộng các ứng dụng và dịch
vụ Với các thiết bị xây dựng trên Hệ điều hành Android, người dùng có thể hoàn toàn thích ứng với điện thoại đến lợi ích của họ Họ có thể trao đổi trên màn hình của điện thoại, những phong cách của dialer, hoặc bất kỳ ứng dụng Họ thậm chí có thể hướng dẫn điện thoại của họ để sử dụng hình ảnh ưa thích của họ xem các ứng dụng để xử lý xem tất cả các hình ảnh
- Android 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 một cá nhân – ví dụ như địa chỉ liên hệ của người dùng, lịch, hoặc vị trí địa lý – để cung cấp một trải nghiệm người dùng có liên quan hơn Với Android, một nhà phát triển có thể xây dựng một ứng dụng cho phép người dùng xem vị trí của ta bè của họ
và được cảnh báo khi họ đang có trong vùng phụ cận cho họ một cơ hội để kết nối
- Nền tảng Android cho phép xây dựng các ứng dụng dựa vào các tính chất sau:
Khung ứng dụng (application framework): cho phép dùng lại và thay thế các thành phần
Máy ảo Dalvik: tùy chọn cho các di động.Cơ chế hoạt động của nó tương tự như máy ảo Java nhưng nó thực thi dex (dalvik executable) bytecode nhờ công cụ dx chuyển đổi mã bytecode thành dex bytecode
Trang 19 Trình duyệt được tích hợp (integrated browser): dựa trên công cụ nguồn mở WebKit
Đồ họa: được trang bị bởi các thư viện 2D thông thường, đồ họa 3D dựa trên sự đặc tả của OpenGL ES 1.0 (để máy chạy nhanh hơn có thể tùy chọn phần cứng)
Cơ sở dữ liệu SQLite: dùng cho cấu trúc bộ lưu trữ dữ liệu
Môi trường truyền thông: cung cấp tiếng, hình ảnh thông dụng, và một số định dạng ảnh như MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF
Môi trường phát triển đầy đủ: chứa một thiết bị mô phỏng, các công cụ phát hiện lỗi, bộ nhớ, hiện trạng thực thi, và một phần mềm cài đặt dùng IDE Eclipse
Ngoài ra còn hỗ trợ các ứng dụng tích hợp các công nghệ mới hiện nay như hệ thống truyền thông di động toàn cầu GMS, Bluetooth, EDGE, 3G, WiFi, Camera, GPS, compass, và accelerometer (các công nghệ này khi dùng còn phụ thuộc vào thiết bị)
2.1.3 So sánh với các hệ điều hành cùng loại khác
Bảng 2.1:So sánh hệ điều hành Android với những hệ điều hành khác
Android
Google Android là nền tảng mở, cho phép người dùng có thể tùy biến nền tảng theo ý thích, hơn nữa lại có một Liên minh thiết bị cầm tay mở hậu thuẫn, Google Android đang là đối thủ xứng tầm của iPhone của Apple
Google đang tích cực mở rộng cộng đồng phát triển các ứng dụng cho Android Bộ công cụ phát triển phần mềm (SDK) đầy đủ, hỗ trợ đa nền (Linux, Windows hay Mac OS) do chạy trên máy ảo Java Thư viện ngày càng hoàn thiện, dễ dàng cho người lập trình
Hệ điều hành phân mảnh, không thống nhất trên các thiết bị, giới hạn về độ 'mở' và nhiều lỗ hổng bảo mật là những yếu điểm của Android OS
Windows Phone Có thư viện API khá giống với API Sự có mặt của iPhone và
Trang 20trên Win32, các công cụ hỗ trợ lập trình đầy đủ với Visual Studio, điều này làm cho những người phát triển trên Win32 không mất công tìm hiểu lại các API và các công cụ lập trình
Android là hai trở ngại lớn với Windows Mobile Hai nền tảng này đang hoàn thiện và được
người dùng rất ưa chuộng
iPhone
Màn hình cảm ứng đa điểm: iPhone
sử dụng hoàn toàn bằng cảm ứng và không sử dụng các nút Với iPhone ta
có thể điều khiển trên màn hình kể cả việc trượt của các ngón tay Ta có thể phóng to ảnh bằng cách trượt hai ngón tay ra xa và thu nhỏ bằng cách ngược lại
Bộ cảm nhận gia tốc: Những phản
ứng nhanh chóng của bộ cảm nhận gia tốc thay đổi độ phân giải màn hình từ dọc sang ngang tự động khi ta đặt điện thoại nằm ngang Điều này làm sinh động thêm cho các trò chơi Âm thanh, hình ảnh hoàn hảo
Việc lập trình trên cho iPhone phải thực hiện trên hệ điều hành Mac, do đó không phải ai cũng
có thể lập trình cho iPhone Hơn thế, nếu muốn đưa chương trình
ra máy thật người lập trình phải trả một khoản phí lập trình, điều này làm giảm tính cạnh tranh so
với các đối thủ khác
Trang 21- Nhân Linux dùng cho Android đã được Google thực hiện nhiều thay đổi về kiến trúc
so với nhân Linux gốc Android không có sẵn X Window System cũng không hỗ trợ các thư viện GNU chuẩn, nên việc chuyển các ứng dụng hoặc thư viện Linux có sẵn sang Android rất khó khăn Các ứng dụng C đơn giản và SDL cũng được hỗ trợ bằng
Trang 22cách chèn những đoạn shim Java và sử dụng tương tự JNI, như khi người ta chuyển Jagged Alliance 2 sang Android
2.2.1 Nhân Linux (Linux Kernel)
Hình 2.3: Kiến trúc nhân Linux
- Lớp dưới cùng là “nhân” Linux kernel (phiên bản Linux 2.6) với khoảng 115 bản vá cung cấp các chức năng cơ bản như theo dõi luồng tiến trình và quản lý bộ nhớ cũng như bảo mật
o Trình điều khiển màn hình (Display Driver): Điều khiển việc hiển thị lên màn
hình cũng như thu nhận những điều khiển của người dùng lên màn hình ( di chuyển, cảm ứng…)
o Trình điều khiển camera (Camera Driver ): điều khiển hoạt động của camera,
nhận luồng dữ liệu từ camera về
o Trình điều khiển bàn phím (Keybad Driver) : Điều khiển bàn phím
o Trình điều khiển Wifi (Wifi Driver): Chịu trách nhiệm về việc thu phát sóng
wifi
o Trình điều khiển âm thanh (Audio Driver): Điều khiển các bộ thu phí phát âm
thanh, giải mã các tính hiệu dạng audio thành tín hiệu số và ngược lại
o Trình điều khiển nguồn điện (Power Management): Giám sát việc tiêu thụ điện
năng
o Trình điều khiển bộ nhớ Flash (Flash Memory Driver): Quản lý việc đọc ghi…
lên các thiết bị nhớ như thẻ SD, flash
o Trình điều khiển ICP (Binder IPC Driver): Chịu trách nhiệm về việc kết nối và
liên lạc với mạng vô tuyến như CDMA, GSM, 3G, 4G, E để đảm bảo những chức năng truyền thông được thực hiện
Trang 232.2.2 Thư viện (Library)
Hình 2.4: Kiến trúc thư viện
- Phía trên tầng Linux kernel là tầng Libraries, chứa những thư viện hỗ trợ Một số có thể kể đến như là bộ máy trình duyệt web mã nguồn mở WebKit, thư viện libc, cơ sở
dữ liệu SQLite tiện lợi cho việc lưu trữ và chia sẻ dữ liệu, thư viện hỗ trợ thu phát âm thanh và video, thư viện SSL giúp bảo mật mạng…
- Tầng này chứa tất cả các thư viện Java, được viết đặc biệt cho Android như các thư viện framework, các thư viện xây dựng giao diện, đồ họa và cơ sở dữ liệu Dưới đây là một số thư viện quan trọng mà các lập trình viên nên biết:
o 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ền Linux
o 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
o Surface manager: Quản lý hiển thị nội dung 2D và 3D
o Webkit: 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 ứng dụng
o SGL: Engine hổ trợ đồ họa 2D
o 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
o FreeType: Bitmap and vector font rendering
Trang 24 android.util: Gói tiện ích cơ bản bao gồm nhiều lớp mức thấp như là các lớp quản
lý (List, Stack…) lớp xử lý chuỗi, lớp xử lý XML
android.graphics: Cung cấp các lớp đồ họa mức thấp thực hiện các chức năng đồ
họa, màu, vẽ cơ bản
android.database: Cung cấp các lớp mức thấp bắt buộc cho việc điều khiển cursor
khi làm việc với các cơ sở dữ liệu
android.content: Các giao tiếp lập trình nội dung được dùng để quản lý truy cập
dữ liệu và xuất bản bằng cách cung cấp các dịch vụ thao tác với tài nguyên, Content Provider, và các gói
android.view: View là lớp giao diện người dùng cơ bản nhất Tất cả giao diện
người dùng được tạo ra đều phải sử dụng một tập các View để cung cấp cho các thành phần tương tác người dùng
android.widget: Xây dựng dựa trên gói View Những lớp widget những thành
phần giao diện được tạo sẵn được sử dụng để tạo nên giao diện người dùng Các widget bao gồm danh sách, nút bấm, hộp nhập, các kiểu trình bày (layout)
com.google.android.maps: Bộ API mức cao cung cấp truy cập đến điều khiển bản
đồ sẵn trong Android từ ứng dụng được xây dựng Bao gồm cả lớp MapView cũng như Overlay và MapController để tương tác với bản đồ bên trong ứng dụng
android.provider: Để tạo thuận lợi cho người phát triển truy cập đến các Content
Provider tiêu chuẩn (như là dữ liệu danh bạ), gói cung cấp (Provider) bao gồm các lớp cho phép truy cập đến cơ sở dữ liệu chuẩn trong tất cả các bản phân phối Android
android.telephony: Các API điện đàm cung cấp khả năng tương tác trực tiếp với
tầng điện thoại trong các thiết bị, cho phép tạo, nhận, theo dõi các cuộc gọi, tình trạng các cuộc gọi và tin nhắn SMS
android.webkit: Gói WebKit cung cấp các API để làm việc với các nội dung
Web-based bao gồm một lơp WebView để tạo ra giao diện web, nhúng trong ứng dụng
và một trình quản lý cookie
Trang 252.2.3 Android Runtime
Hình 2.5: Kiến trúc 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ấ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 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ủa má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 đích là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 thực thi, bất kì ứng dụng Android nào cũng được convert thành file thực thi với định dạng nén Dalvik Executable (.dex) Định dạng này được thiết kế để phù hợp với các thiết bị hạn chế về bộ nhớ cũng như tốc độ xử lý Ngoài ra máy ảo Dalvik sử dụng bộ nhân Linux
để cung cấp các tính năng như thread, low-level memory management
2.2.4 Khung tổ chức ứng dụng (Application Framework)
Hình 2.6: Kiến trúc Application Framework
- 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ùng sá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ăng cao 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 đồng hồ báo thức, thêm notification vào status bar của màn hình thiết bị…
Trang 26- Người phát triển ứng dụng được phép sử dụng đầy đủ bộ API được dùng trong các ứng dụng tích hợp sẳn của Android Kiến trúc ứng dụng của Android được thiết kế nhằm mục đích đơn giản hóa việc tái sử dụng các component Qua đó bất kì ứng dụng nào cũng có thể công bố các tính năng mà nó muốn chia sẻ cho các ứng dụng khác (VD: Ứng dụng email có muốn các ứng dụng khác có thể sử dụng tính năng gởi mail của nó) Phương pháp tương tự cho phép các thành phần có thể được thay thế bởi người sử dụng
- Tầng này bao gồm một tập các services và thành phần sau:
o Views: Một tập phong phú và có thể mở rộng bao gồm các đối tượng View được
dùng để xây dựng ứng dụng như: list, grid, text box, button và thậm chí là một trình duyệt web có thể nhúng vào ứng dụng
o 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
o 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
- Notification Manager: Cung cấp khả năng hiển thị custom alert trên thanh status bar
- Activity Manager: Giúp quản lý vòng đời của một ứng dụng
2.2.5 Application
Hình 2.7: Kiến trúc Ứng dụng
- 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ày cũng chính là tầng chứa các ứng dụng được phát triển bằng ngôn ngữ Java
Trang 272.3 Ngôn ngữ phát triển và cách thức biên dịch
- Ngôn ngữ lập trình chính thức của Android là Java Mặc dù các ứng dụng trên Android được phát triển dựa trên nền tảng Java, nhưng Android không hỗ J2ME và J2SE, là hai ngôn ngữ lập trình phổ dụng cho các thiết bị di động
- Các ứng dụng Android có thể được phân làm hai loại căn cứ vào ngôn ngữ phát triển
và cách thức biên dịch:
o Ứng dụng Dalvik: ứng dụng được viết bằng ngôn ngữ lập trình Java, sử dụng các
công cụ trong bộ SDK (Google) và JDK (Oracle) biên dịch và đóng gói thành file apk trước khi cài đặt vào thiết bị
Hình 2.8: Quá trình biên dịch từ mã nguồn Java của loại ứng dụng Dalvik
o Ứng dụng Native: bên cạnh sử dụng mã nguồn Java, ta có thể sử dụng mã nguồn C/C++ kết hợp để xây dựng ứng dụng nhằm tối ưu hóa và tăng tốc độ thực thi hoặc khai thác các thư viện cấp thấp Để biên dịch được ứng dụng loại này ngoài bộ SDK ta phải cần thêm bộ NDK
Hình 2.9: Quá trình biên dịch của ứng dụng Native
Trang 28- Mặc dù các ứng dụng Android được phát triển và biên dịch thông qua JDK nhưng không phải tất cả mọi thứ trong JDK đều có thể sử dụng được Dưới đây là hình ảnh tham khảo về API trong JDK và mức độ được sử dụng trong Android:
Hình 2.10: Hình ảnh tham khảo về API trong JDK
2.4 Cấu trúc của ứng dụng Android
- Ứng dụng Android được xây dựng từ nhiều thành phần có thể coi là những viên gạch
cơ bản trong ứng dụng Những viên gạch này bao gồm nhiều loại có thể chia thành ba nhóm căn cứ vào mục đích sử dụng:
o Những thành phần tạo giao diện người dùng: Activity, View/Widget
o Những thành phần cung cấp dịch vụ và tích hợp: Service, Broadcast Receiver/Intent
o Những thành phần cung cấp dữ liệu, tài nguyên và cấu hình của ứng dụng: Content Provider, Resource, ApplicationManifest
Trang 29Hình 2.11: Các thành phần cơ bản trong một ứng dụng Android
Trang 302.4.1 Các thành phần tạo giao diện người dùng trong ứng dụng
- Ứng dụng nghe nhạc trên điện thoại Android là một ứng dụng được viết dựa vào tập hợp các thành phần cơ bản của Android, bao gồm:
- Mỗi Activity là một dẫn xuất của lớp android.app.Activity
b) Vòng đời sống (Life cycle)
- Bên trong hệ thống các activity được quản lý như một activity stack Khi một Activity mới được start, nó được đặt ở đỉnh của stack và trở thành activity đang chạy (running activity), các activity trước sẽ tạm dừng và ở bên dưới activity mới và sẽ không thấy trong suốt quá trình activity mới tồn tại
- Nếu người dùng nhấn nút Back thì activity kết tiếp của stack sẽ di duyển lên và trở thành active
Hình 2.12: Minh họa quá trình Stack trong Activity
Trang 31- Activity bao gồm 4 trạng thái (State):
o active (running): Activity đang hiển thị trên màn hình (foreground) Activity này
tập chung vào những thao tác của người dùng trên ứng dụng
o paused: Activity được tạm dừng, tuy vẫn hiển thị (visible) nhưng không thể
tương tác (lost focus) Có nghĩa là một activity mới ở trên nó, nhưng không bao phủ đầy màn hình Một activity tạm dừng là còn sống, nhưng có thể bị kết thúc bởi hệ thống trong trường hợp thiếu vùng nhớ
o stop: Activity bị thay thế hoàn toàn bởi Activity mới sẽ tiến đến trạng thái stop
Nó vẫn còn trạng thái và thông tin thành viên trong nó Người dùng không thấy
nó và thường bị loại bỏ khi hệ thống cần vùng nhớ cho các tác vụ khác
o 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 đó
Trang 32Hình 2.13: Biểu đồ miêu tả Activity State
Khi mở một Activity lên ứng dụng sẽ thực thi các hàm
onCreate() -> onStart() -> onResume() tới đây activity đã được chạy ổn định
Sau khi chạy ổn định Activity có thể bị Pause bởi hàm onPause() lúc này có 3 trường
hợp xảy ra:
o TH1: Ứng dụng bị killed và khởi động lại bằng hàm onCreate()
o TH2: Activity sẽ được resume bởi hàm onResume()
o TH3: Activity sẽ bị Stop bởi hàm onStop() tới đây activity lại có 3 trường hợp xảy
ra:
App process killed: ứng dụng bị tắt và khởi động activity lại
Activity được restart lại (restart khác với resume ở chổ khi activity bị stop thì mới restart)
Trang 33 Activity bị Destroy bởi hàm onDestroy() và shutdown đến đây ưng Activity sẽ bị tắt hoàn toàn
- Vòng đời của Activity:
o Entire lifetime: Từ phương thức onCreate( ) cho tới onDestroy( )
o Visible liftetime: Từ phương thức onStart( ) cho tới onStop( )
o Foreground lifetime: Từ phương thức onResume( ) cho tới onPause( )
2.4.1.2 Service
a) Khái niệm:
- Service là 1 trong bốn component cơ bản của android(services, activities, content providers, broadcast receivers) Service chạy ẩn ở dưới để thực hiện các thao tác mà không cần tương tác với người dùng
- Ví dụ, service có thể mở một bản nhạc trong khi người dùng đang sử dụng ứng dụng khác, hoặc là tải dữ liệu thông qua mạng mà không ảnh hưởng gì đến các hoạt động của người sử dụng Một service sẽ có 2 loại:
o Started: Một service được bắt đầu giống như component khác như activities, bắt
đầu service bằng cách gọi hàm startService() Thông thường, 1 "started service" thực hiện một hành động đơn lẻ và không trả về kết quả cho đối tượng gọi Ví dụ,
nó có thể thực hiện tải hoặc upload file thông qua mạng và khi thực hiện xong thì
nó tự đông dừng lại
o Bound: Một service được ràng buộc khi các component ràng buộc thông qua gọi
hàm bindService() Service ràng buộc thường là kiểu giao diện client-server, nó cho phép components tương tác với service, gửi yêu cầu, nhận kết quả trả về Một service ràng buộc có thể chạy với nhiều components ràng buộc đến nó khi chaỵ lần đầu tiên, khi tất cả components của chúng không còn ràng buộc nữa thì service sẽ
bị hệ thống hủy
b) Vòng đời service
- Một Service có các phương thức vòng đời gọi lại mà ta có thể thực hiện để theo dõi những thay đổi trong trạng thái của Service và ta có thể thực hiện công việc ở giai đoạn thích hợp Sơ đồ dưới đây về bên trái cho thấy vòng đời khi Service được tạo ra
Trang 34với startService(), sơ đồ bên phải cho thấy vòng đời khi Service được tạo ra với bindService()
Hình 2.14: Sơ đồ miêu tả vòng đời của Service
- Để tạo một service ta cần tạo một class kế thừa từ class Service hoặc một class con của class Service
- Các lớp cơ sở Service định nghĩa các phương thức callback khác nhau và quan trọng nhất được đưa ra dưới đây Ta không cần phải thực hiện tất cả các phương pháp callbacks Tuy nhiên, điều quan trọng là hiểu mỗi một và thực hiện những điều đó đảm bảo ứng dụng của ta cư xử theo cách người dùng mong đợi
-
Trang 35Bảng 2.2: Các phương thức Callback trong Service
onBind()
Hệ thống gọi phương pháp này khi thành phần khác muốn liên kết với các Service bằng cách gọi bindService() Nếu ta thực hiện phương pháp này, ta phải cung cấp một giao diện mà khách hàng
sử dụng để giao tiếp với các Service, bằng cách trả lại một đối tượng IBinder Ta phải luôn luôn thực hiện phương pháp này, nhưng nếu ta không muốn cho phép ràng buộc, sau đó ta nên trở
về null
onUnbind()
Hệ thống gọi phương pháp này khi tất cả các khách hàng đã bị ngắt kết nối từ một giao diện cụ thể được công bố bởi các Service
onRebind()
Hệ thống gọi phương pháp này khi khách hàng mới đã kết nối với Service, sau khi trước đó đã được thông báo rằng tất cả đã bị ngắt kết nối trong itsonUnbind(Intent)
onCreate()
Hệ thống gọi phương pháp này khi Service được tạo ra đầu tiên
sử dụng onStartCommand() hoặc onBind() Cuộc gọi này là cần thiết để thực hiện cài đặt một lần
Trang 36- Hệ thống sẽ buộc phải tắt service trong trường hợp bộ nhớ xuống thấp hoặc nó phải phục hồi lại tài nguyên cho các thao tác mà người dùng đang sử dụng Nếu service ràng buộc bởi activity mà người dùng đang sử dụng thì sẽ ít bị giải phóng hơn hoặc service chạy dưới foreground sẽ không bao giờ bị giải phóng Ngoài ra service bắt đầu trong một khoảng thời gian dài cũng có nguy cơ cao bị hệ thống giải phóng
2.4.1.3 BroadCast Receiver (Người nhận truyền tin)
a) Khái niệm:
- Android BroadcastReceiver là một thành phần nơi ta có thể đăng ký sự kiện của hệ thống (system) hay ứng dụng (application) Ta sẽ nhận được thông báo về các sự kiện một khi đã đăng ký Việc phát tin (Broadcast) bắt nguồn từ hệ thống cũng như
từ các ứng dụng (applications)
Hình 2.15: Sơ đồ miêu tả quá trình broadcast
- Ví dụ về việc phát tin bắt nguồn từ hệ thống có thể kể ra như thông báo pin yếu Với cấp độ ứng dụng có thể kể ra như khi ta download một file nhạc Ứng dụng nhạc này
sẽ nhận được thông báo về việc download, sau khi kết thúc sẽ đưa bài hát này vào danh sách để bật Để thực hiện được việc này, ứng dụng nhạc cần thiết phải đăng ký cho sự kiện Một ví dụ đơn giản khác, người dùng sẽ nhận thông báo khi pin của máy mình đã xuống dưới một mức độ nào đấy
Trang 37b) Cách hoạt động
Hình 2.16: Sơ đồ minh họa broadcast
- Có 2 cách để đăng ký Android Broadcast receiver:
o Một là phương thức tĩnh khi đăng ký broadcast receiver trong ứng dụng thông
qua file AndroidManifest.xml
o Hai là phương thức động để đăng ký broadcast receiver thông qua việc sử dụng method Context.registerReceiver() Các broadcast receiver được đăng ký động có thể được gỡ bởi method Context.unregisterReceiver()
c) Một số Broadcast thông dụng
- Báo cáo hệ thống khởi động xong
- Báo pin có sự thay đổi
- Báo có package mới cài vào hoặc xóa đi
- Báo tắt máy
- Báo cắm rút sạc
- Báo bật tắt wifi, 3G, GPS, Bluetooth…
- …
Trang 38Hình 2.17: Danh sách các Broadcast IntentFilter cơ bản
Trang 392.5 Nền tảng ASP.NET MVC
2.5.1 Giới thiệu về ASP.NET MVC
- Đầu năm 2002, Microsoft giới thiệu một kỹ thuật lập trình Web khá mới mẻ với tên gọi ban đầu là ASP+, tên chính thức sau này là ASP.Net Với ASP.Net, không những không cần đòi hỏi ta phải biết các tag HTML, thiết kế web, mà nó còn hỗ trợ mạnh lập trình hướng đối tượng trong quá trình xây dựng và phát triển ứng dụng Web
- ASP.Net sử dụng kỹ thuật lập trình ở phía server thì hoàn toàn khác, mã lệnh ở phía server (ví dụ: mã lệnh trong trang ASP) sẽ được biên dịch và thi hành tại Web Server Sau khi được Server đọc, biên dịch và thi hành, kết quả tự động được chuyển sang HTML/JavaScript/CSS và trả về cho Client Tất cả các xử lý lệnh ASP.Net đều được