ĐỀ TÀI TTTN ĐẠI HỌC Báo cáo TTTN Đại học BỘ THÔNG TIN VÀ TRUYỀN THÔNG VIỆT NAM HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG Xây dựng ứng dụng Tìm kiếm phòng trọ trên Android kết hợp Google FIrebase
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
-BÁO CÁO THỰC TẬP TỐT
NGHIỆP ĐẠI HỌC Đề tài: “Xây dựng ứng dụng chợ phòng trọ”
Người hướng dẫn : ThS LÊ MINH HÓA
Sinh viên thực hiện : NGUYỄN HỮU ĐỨC
Mã số sinh viên : N14DCCN212
Lớp : D14CQCP01-N
Khóa : 2014
Hệ : ĐẠI HỌC CHÍNH QUY
TP.HCM, tháng 07 năm 2018
Trang 2Lời đầu tiên em xin được gửi lời cảm ơn chân thành và sâu sắc đến quý thầy cô của Học Viện Công Nghệ Bưu Chính Viễn Thông – những người đã trực tiếp giảng dạy, tận tình truyền đạt những kiến thức bổ ích cho em trong suốt những năm học vừa qua Đó chính là những nền tảng cơ bản, những hành trang vô cùng quý giá giúp em bước vào sự nghiệp sau này trong tương lai.
Đặc biệt, em xin gửi lời cảm ơn thầy ThS Lê Minh Hóa Cảm ơn Thầy đã tận tình quan tâm, giúp đỡ, hướng dẫn chỉ bảo tận tình trong thời gian vừa qua Thầy đã giải đáp mọi thắc mắc của em trong quá trình hướng dẫn thực tập tốt nghiệp Nhờ đó em mới có thể hoàn thành tốt đề tài thực tập này
Em xin bày tỏ lòng chân thành cảm ơn đến các Anh Chị trong công ty TNHH Sáng tạoKIS Việt Nam đã hỗ trợ em rất nhiều trong quá trình thực hiện đề tài
Trong quá trình làm đề tài thực tập, khó tránh khỏi những sai sót, rất mong quý thầy
cô bỏ qua Đồng thời do trình độ cũng như kinh nghiệm thực tiễn còn hạn chế nên đề tài không thể tránh khỏi những thiếu sót, em rất mong nhận được ý kiến đóng góp của quý thầy cô để đề tài của em được hoàn thiện hơn và rất mong sản phẩm của em sẽ trở thành một sản phẩm mang tính xã hội và phục vụ được trong điều kiện phát triển của ngành Công nghệ thông tin Việt Nam
Kính chúc quý thầy cô luôn vui vẻ, hạnh phúc, dồi dào sức khỏe và thành công trong công việc
Em xin chân thành cảm ơn!
TP.HCM, ngày 01 tháng 08 năm 2018 Sinh viên thực hiện
Nguyễn Hữu Đức
Trang 4Độc lập – Tự do – Hạnh Phúc
TP Hồ Chí Minh, ngày tháng năm 2018
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN THỰC TẬP TỐT NGHIỆP
ĐAI HỌC
Tên đề tài: Xây dựng ứng dụng chợ phòng trọ
Giáo viên hướng dẫn: ThS Lê Minh Hóa
Nơi công tác: Khoa Công nghệ thông tin 2
NỘI DUNG NHẬN XÉT
Đánh giá chung:
Điểm hướng dẫn:
GIẢNG VIÊN HƯỚNG DẪN
(Ký, ghi rõ họ tên)
Trang 5LỜI MỞ ĐẦU 1
CHƯƠNG 1: ĐẶT VẤN ĐỀ 2
1.1 THỰC TRẠNG PHÒNG TRỌ HIỆN NAY 2
1.2 CÁC TIÊU CHÍ PHÒNG TRỌ 2
1.3 MỤC TIÊU ĐỀ TÀI 3
1.4 PHẠM VI ÁP DỤNG 3
1.5 CÔNG CỤ SỬ DỤNG 3
1.5.1 Phần mềm lập trình: Android Studio và Android SDK Tools 3
1.5.2 Ngôn ngữ lập trình Java 3
1.5.3 Firebase Realtime Database 4
1.5.4 Các thư viện hỗ trợ 4
CHƯƠNG 2: TỔNG QUAN VỀ LẬP TRÌNH TRÊN ANDROID 5
2.1 LỊCH SỬ RA ĐỜI 5
2.2 QÚA TRÌNH PHÁT TRIỂN 5
2.3 KIẾN TRÚC CỦA ANDROID 6
2.4 CÁC THÀNH PHẦN CƠ BẢN CỦA ỨNG DỤNG ANDROID 10
2.4.1 Activity 10
2.4.2 Intent 12
2.4.3 Service 12
2.4.4 Broadcast Receiver 13
2.4.5 Content Provider 13
CHƯƠNG 3: TỔNG QUAN VỀ XÂY DỰNG WEB SERVICE BẰNG PHP 15
3.1 TỔNG QUAN VỀ WEB SERVICE 15
3.1.1 Khái niệm 15
3.1.2 Đặc điểm của Web Service 15
3.1.3 Ưu và nhược điểm của Web Service 16
3.2 KIẾN TRÚC CỦA WEB SERVICE 16
3.3 CÁC THÀNH PHẦN CỦA WEB SERVICE 18
3.3.1 XML 18
3.3.2 WSDL - Web Service Description Language 18
3.3.3 Universal Description, Discovery, and Integration (UDDI) 19
3.3.4 SOAP - Simple Object Access Protocol 19
Trang 64.1.1 Yêu cầu chức năng 21
4.1.2 Yêu cầu phi chức năng 21
4.2 MÔ HÌNH CHỨC NĂNG NGHIỆP VỤ (BFD) 21
4.3 MÔ HÌNH USECASE 23
4.4 BIỂU ĐỒ DÒNG DỮ LIỆU (DATA FLOW DATAGRAM - DFD) 24
4.4.1 Mô hình DFD mức 1 – Quản lý phòng trọ 24
4.4.2 Mô hình DFD mức 1 – Quản lý người dùng 25
4.5 MÔ HÌNH THỰC THỂ KẾT HỢP ERD 26
4.6 MÔ HÌNH DIAGRAM 27
4.7 CHI TIẾT CÁC BẢNG DỮ LIỆU 27
CHƯƠNG 5: MỘT SỐ GIAO DIỆN CHÍNH 31
5.1 GIAO DIỆN MÀN HÌNH ĐĂNG NHẬP 31
5.2 GIAO DIỆN MÀN HÌNH ĐĂNG KÝ 32
5.3 GIAO DIỆN MÀN HÌNH QUÊN MẬT KHẨU 33
5.4 GIAO DIỆN CHÍNH CỦA ỨNG DỤNG 34
5.5 GIAO DIỆN MÀN HÌNH DANH SÁCH YÊU THÍCH 35
5.6 GIAO DIỆN MÀN HÌNH PROFILE 36
5.7 GIAO DIỆN MÀN HÌNH CHI TIẾT PHÒNG 37
5.8 GIAO DIỆN MÀN HÌNH TÌM KIẾM 38
5.9 GIAO DIỆN MÀN HÌNH KẾT QUẢ TÌM KIẾM 39
5.10 GIAO DIỆN MÀN HÌNH ĐĂNG PHÒNG 40
5.11 GIAO DIỆN MÀN HÌNH SỬA PHÒNG 41
KẾT LUẬN 42
1 KẾT QUẢ ĐẠT ĐƯỢC 42
1.1 Chương trình đã đạt được 42
1.2 Khả năng ứng dụng 42
1.3 Kiến thức đạt được 42
2 HẠN CHẾ, KHÓ KHĂN 42
TÀI LIỆU THAM KHẢO 43
Trang 7Bảng 4.1: Bảng User
Bảng 4.2: Bảng Room
Bảng 4.3: Bảng Comment
Bảng 4.4: Bảng Rating
Bảng 4.5: Bảng Ward
Bảng 4.6: Bảng District
Bảng 4.7: Bảng Image
Trang 8Hình 2.1: Kiến trúc của Android
Hình 2.2: Vòng đời của Activity
Hình 2.3: Intent trong Android
Hình 2.4: Service trong Android
Hình 3.1: Web Service
Hình 3.2: Kiến trúc của Web Service
Hình 4.1: BFD
Hình 4.2: Sơ đồ tổng quát
Hình 4.3: Mô hình Usecase
Hình 4.4: Mức 1 – Quản lý phòng trọ
Hình 4.5: Mức 1 – Quản lý người dùng
Hình 4.6: Mô hình ERD
Hình 4.7: UML
Hình 5.1: Giao diện đăng nhập
Hình 5.2: Giao diện đăng ký
Hình 5.3: Giao diện quên mật khẩu
Hình 5.4: Màn hình chính
Hình 5.5: Màn hình phòng yêu thích
Hình 5.6: Màn hình Profile
Hình 5.7: Màn hình Chi tiết phòng
Hình 5.8: Màn hình Tìm kiếm phòng
Hình 5.9: Màn hình Kết quả tìm kiếm
Hình 5.10: Màn hình Đăng phòng
Hình 5.11: Màn hình Sửa phòng
Trang 9LỜI MỞ ĐẦU
Hiện nay trên địa bàn Thành phố Hồ Chí Minh (Tp HCM) nay có khoảng 130Trường đại học, cao đẳng, trung cấp chuyên nghiệp với số lượng sinh viên khổng lồ,trong đó có khoảng 80% sinh viên là người ngoài tỉnh Bên cạnh đó chưa kể lượng laođộng từ các Tỉnh, Thành khác đổ về Tp HCM Trong khi đó số lượng phòng ký túc xá,các khu tập thể không thể đáp ứng được được toàn bộ nhu cầu cho sinh viên và nhữngngười lao động, do đó việc tìm kiếm phòng trọ tại Tp HCM là việc mà hầu hết sinh viênvà người lao động phải đối mặt
Việc tìm kiếm được một phòng trọ phù hợp về giá cả, tiện nghi, an ninh là rất khó khăn và mất thời gian đối với những người mới chân ướt chân ráo tới Tp
.
HCM Vì vậy việc xây dựng một ứng dụng Chợ phòng trọ là rất hữu ích và cần thiết để mọi người có thể sử dụngĐề tài của em không thiên về nghiên cứu tìm hiểu các công nghệ mới nhưng lại mangtính thực tế, tính hiện thực cao, xây dựng ứng dụng dựa trên nhu cầu phòng trọ tại
Tp HCM hiện nay Với mục đích giúp cho các sinh viên, người lao động tiết kiệm được thời gian, công sức trong việc lựa chọn được một phòng trọ thích hợp
Trang 10CHƯƠNG 1: ĐẶT VẤN ĐỀ
1.1 THỰC TRẠNG PHÒNG TRỌ HIỆN NAY
Mỗi năm đầu tháng 9, có thêm hàng triệu tân sinh viên trúng cử vào các trường đại học, cao đẳng, trung cấp, hơn 200.000 người ngoại tỉnh đến thành phố để sống và lập nghiệp Thế nhưng tốc độ “nở rộng” của phòng trọ, nhà ở thì không tương xứng, dẫn tới với tìm kiếm một phòng trọ phù hợp, ưng ý khó khăn Không những thế, lợi dụng sự khó khăn này, giới cò mồi và chủ phòng trọ còn đưa ra những chiêu trò nâng giá khá cao, đặc biệt là các phòng trọ gần trường, gần các khu công nghiệp, thế nhưng cơ
sở vật chất thì lại không đáp ứng đủ Một lựa chọn khác nữa thường được các bạn tân sinh viên hay người lao động ngoại tỉnh là kí túc xá của trường hay khu tập thể của công nhân Những lựa chọn như thế này sẽ đảm bảo cho cho sinh viên và người lao động học tập, làm việc tốt hơn, thế nhưng vì là một lựa chọn “tốt”, nên rất nhiều người đăng ký, và số lượng người ở chung ở mỗi phòng là khá lớn
.
Về lâu về dài mọi người sẽ cảm thấy không có không gian riêng và an ninh không được đảm bảo Vì thế sinh viên và người lao động trở nên có xu hướng tìm phòng trọ, nhưng tìm ở đâu, tìm như thế nào, giá cả ra sao, phải tìm được chỗ thuận tiện cho việc học tập, làm việc, sinh hoạt… rất nhiều vấn đề mà người có nhu cầu thuê trọ phải đối mặt1.2 CÁC TIÊU CHÍ PHÒNG TRỌ
Qua một số thông tin thu thập được, có một số tiêu chí chung mà các sinh viên và người lao động thường đề cấp khi chọn một phòng trọ:
- Địa điểm: càng gần trường và chỗ làm việc càng tốt, gần chợ, nơi buôn bán
- Giá cả: hợp lý, tiền điện, nước phù hợp với quy định của nhà nước, sử dụng
tự do, dùng bao nhiêu trả bấy nhiêu, có đồng hồ đo điện, nước riêng
- An ninh trật tự: không có tệ nạn, gần các chốt dân phòng, đồn công an,
tránh các hẻm quá tối tăm, vắng người mướn
- Thuê nguyên phòng hay ở ghép: điều này cũng làm người thuê phòng băn
khoăn bởi giá thuê nguyên phòng thì khá cao, tuy nhiên có không gian riêng tư, còn ở ghép thì giá cả các thứ sẽ được chia ra, tuy nhiên phải sống hòa đồng với nhau Có một trường hợp nữa là ở chung với chủ, tuy khá ít nhưng hình thức này được nhiều sinh viên quan tâm bởi lý do an ninh
- Cơ sở vật chất: sạch sẽ, có phòng vệ sinh riêng, có thể thêm gác lưng, đủ
không gian sinh hoạt, làm việc
- Dịch vụ: có nơi để rác, người hốt rác, nơi gửi xe, có wifi, internet, tiền chi
trả rõ ràng, minh bạch
- Bạn bè: việc ở chung với bạn bè hay người làm chung sẽ dễ dàng hơn cho
việc hòa nhập với nơi ở mới, đồng thời giúp ích khá nhiều cho việc học tập,làm việc cũng như giờ giấc sinh hoạt
Trang 111.3 MỤC TIÊU ĐỀ TÀI
Phân tích, thiết kế và xây dựng ứng dụng chợ phòng trọ giúp tìm kiếm phòng trọ
1.4 PHẠM VI ÁP DỤNG
Sinh viên, người lao động, người có nhu cầu thuê phòng trọ tại Tp Hồ Chí Minh
1.5 CÔNG CỤ SỬ DỤNG
1.5.1 Phần mềm lập trình: Android Studio và Android SDK Tools
Android Studio là một môi trường phát triển tích hợp (IDE) tuyệt vời, dựa trên một tên tuổi nổi tiếng IntellIJ IDE Như tên gọi, Android Studio là một môi trường để thiết kế và phát triển ứng dụng cho nền tảng di động Android Môi trường này dễ dàng cài đặt, thiết lập và tạo một dự án mẫu chỉ sau vài giây
Khi Android ra mắt, việc phát triển ứng dụng cho nền tảng này với Eclipse và plugin Android Developer Tools đã sẵn sàng Tuy nhiên, với Android Studio thì có nhiều ưu điểm hơn nhờ các yếu tố sau:
• Giao diện lập trình WYSIWYG hỗ trợ Live-layout có thể dựng ứng dụng vàxem trước theo thời gian thực
• Có tuỳ chọn để xem trước giao diện với nhiều thiết lập trên nhiều kích cỡ màn hình khi viết ứng dụng
• Cho phép tạo ra file cài đặt APK hàng loạt
• Hỗ trợ công cụ Lint để kiểm tra tính tương thích, hiệu năng ứng dụng và khả năng hoạt động trên nhiều phiên bản Android khác nhau
• Hỗ trợ phát triển ứng dụng cha Android wear, Android TV cũng như Android auto
• Có thể tích hợp với nền tảng đám mây Google Cloud Platform
1.5.2 Ngôn ngữ lập trình Java
• Ưu điểm: Java là một ngôn ngữ lập trình phổ biến và được xếp vào loại mạnh mẽ bậc nhất hiện nay, phạm vi áp dụng của ngôn ngữ này trải rộng từ mọi thiết bị cho đến mọi Hệ điều hành nhờ sử dụng máy ảo JVM6 Do đó, biết được ngôn ngữ lập trình Java hiện tại có thể giúp bạn mở cánh cửa để bước vào thế giới của những cơ hội phát triển các ứngdụng để đời Trong khi đó, các lập trình viên cho nền tảng iOS phải biết các ngôn ngữ ObjectiveC hoặc Swift Hai ngôn ngữ này hiện nay chỉ có thể áp dụng cho việc phát triển ứng dụng cho các hệ điều hành của Apple là iOS hoặc OSX, hoàn toàn không thể dùng phát triển cho các nền tảng khác
Trang 12• Nhược điểm: Vì Java sử dụng máy ảo JVM để để thông dịch ra file thực thi nên Java luôn bị đánh giá chậm hơn các ngôn ngữ thuần biên dịch như C/C++, tuy nhiên với công nghệ just-in-time compilers, cơ chế này giúp thông dịch từng đoạn lệnh, thay vì từng mã
lệnh như cơ chế hoạt động của các trình thông dịch bình thường
- Dữ liệu trong cơ sở dữ liệu Firebase của bạn được lưu trữ dưới dạng JSON và đồng bộ realtime đến mọi kết nối client Khi bạn xây dựng những ứng dụng đa nền tảng như Android, IOS và JavaScrip SDKs, tất cả các client của bạn sẽ chia sẻ trên một cơ sở dữ liệu Firebase và tự động cập nhật với dữ liệu mới nhất
- Tự động tính toán quy mô ứng dụng của bạn
- Khi ứng dụng của bạn muốn phát triển, bạn không cần lo lắng về việc nâng cấp máy chủ Firebase sẽ xử lý việc tự động cho bạn Các máy chủ của Firebase quản lý hàngtriệu kết nối đồng thời và hàng tỉ lượt truy vấn mỗi tháng
- Các tính năng bảo mật lớp đầu: Tất cả dữ liệu được truyền qua một kết nối an toànSSL với một chứng nhận 2048-bit Cở sở dữ liệu truy vấn và việc xác nhận được điều khiển tại một cấp độ chi tiết sử dụng theo một số các quy tắc mềm dẻo Tất cả các logic bảo mật dữ liệu của bạn được tập trung ở một chỗ để dễ dàng cho việc cập nhật và kiểm thử
- Làm việc offline: Ứng dụng Firebase của bạn sẽ duy trì tương tác bất chấp một số các vấn đề về internet xảy ra Trước khi bất kỳ dữ liệu được ghi đến server thì tất cả dữ liệu lập tức sẽ được viết vào một cơ sử dữ liệu Firebase ở local Ngay khi có thể kết nối lại, client đó sẽ nhận bất kỳ thay đổi mà nó thiếu và đồng bộ hoá nó với trạng thái hiện tạiserver
1.5.4 Các thư viện hỗ trợ
- Butterknife : Giúp view binding, binding strings, dimens, drawables, click events
- Glide : Hỗ trợ load ảnh
- SweetAlert: Hỗ trợ các hiển thị Dialog, thông báo
- RatingBar: Hỗ trợ việc hiển thị thanh Rating
- Retrofit: Hỗ trợ đọc dữ liệu từ Server dưới dạng JSON
Trang 13CHƯƠNG 2: TỔNG QUAN VỀ LẬP TRÌNH TRÊN ANDROID
2.1 LỊCH SỬ RA ĐỜI
Tháng 10/2003, Công ty Android ( Android, Inc ) được thành lập tại California bởinhững người có tiếng tăm như Andy Rubin, Rich Miner, Nick Sears và Chris White Ngay sau khi thành lập, Android, Inc đã bắt tay vào xây dựng nền tảng Android Đếntháng 8/2005 Google mua lại tổng công ty Android, biến nó thành một bộ phận trựcthuộc Google và cách thành viên sáng lập ra Android vẫn tiếp tục ở lại công ty làm choGoogle
Tháng 11/2007 đã chứng kiến sự xuất hiện của một hiệp hội được gọi tên là OpenHandset Alliance ( OHA ), đây là một hiệp hội bao gồm 34 công ty lớn (tính đến hiện tạilà 84) về phần mềm, phần cứng và viễn thông trên thế giới như Texas Instruments, HTC,Google, Qualcomm, Samsung… mà đứng đầu là Google Đây là hiệp hội thành lập vớimục đích phát triển các tiêu chuẩn mở cho thiết bị di động Cùng thời điểm đó nền tảngAndroid cũng đã được ra mắt như là một sản phẩm đầu tiên của hiệp hội.Có thể thấy nềntảng Android ra đời với một sự hậu thuẫn vô cùng lớn và vì vậy Android đã được kì vọngrất nhiều ngay từ khi nó được ra đời
Tháng 10/2008 đánh dấu một sự kiện quan trọng với Android đó là việc chiếc điệnthoại Android đầu tiên được bán ra đó là T-Mobile G1 Không phụ sự kì vọng và hậuthuẫn to lớn, chỉ sau một thời gian ngắn Android đã dần dần vươn lên trở thành nền tảng
di động phổ biến nhất thế giới
2.2 QÚA TRÌNH PHÁT TRIỂN
Thành công với Android không chỉ được xây dựng bởi sự hậu thuẫn to lớn khi mới rađời mà sự thành công đó còn bởi sự nỗ lực không biết mệt mỏi của Google và hiệp hộiOHA trong việc sáng tạo những điều mới, cải thiện chất lượng để đưa Android ngày mộthoàn thiện hơn.Từ lúc ra đời tới nay (1/2018), Google đã tung ra rất nhiều bản cập nhậpcho Android như :
Android 1.0 (API level 1), tháng 9/2008
Android 1.1 (API level 2), tháng 2/2009
Android 1.5 Cupcake (API level 3), tháng 4/2009
Android 1.6 Donut (API level 4), tháng 9/2009
Android 2.0 – 2.1 Eclair (API level 5, 6, 7), tháng 10/2009
Android 2.2 – 2.2.3 Froyo (API level 8), tháng 5/2010
Android 2.3 – 2.3.7 GingerBread (API level 9, 10), tháng 12/2010
Android 3.0- 3.2 Honeycomb (API level 11, 12, 13), tháng 2/2011
Android 4.0 – 4.0.4 Ice Cream Sandwich (API level 14, 15), tháng 10/2011
Android 4.1 – 4.3 Jelly Bean (API level 16, 17, 18), tháng 7/2012
Android 4.4 Kitkat (API level 19), tháng 10/2013
Android 4.4 Kitkat with Wearable extensions (API level 20)
Android 5.0 – 5.1 Lollipop (API level 21, 22), tháng 12/2014
Trang 14 Android 6.0 Marshmallow (API level 3), tháng 10/2015
Android 7.0 - 7.1.2 Nougat (API level 24, 25), tháng 8/2016
Android 8.0 - 8.1 Oreo (API level 26, 27), tháng 8/2017
Song song với việc cập nhập các phiên bản để hoàn thiện Android, Google còn tung
ra rất nhiều phiên bản cập nhập của Software Development Kit (SDK ) để giúp các lậptrình viên có thể tạo ra các ứng dụng tốt nhất
Với bản chất mở đã giúp cho Android không chỉ phát triển mạnh trên các thiết bị diđộng phổ biến như smartphone, tablet mà tính đến thời điểm hiện tại đã có rất nhiều cácthiết bị điện tử khác sử dụng Android như SmartTV, Laptop, netbook, Máy ảnh … Cóthể thấy với việc được sử dụng rộng rãi ở nhiều loại thiết bị và với sự chăm sóc tỉ mỉ củaGoogle, chắc chắn tương lai của Android sẽ càng ngày càng phát triển mạnh mẽ và tạo rađược nhiều điều kì diệu mới
2.3 KIẾN TRÚC CỦA ANDROID
Android là một nền tảng dựa trên tập hợp các chương trình khác như một nhânLinux, các thư viện, API được viết bằng C và các ứng dụng gốc Hình dưới đây sẽ chochúng ta thấy rõ được kiến trúc của Android :
Hình 2.1 Kiến trúc của Android
Linux Kernel : Đây là 1 phần cực kì quan trọng trong kiến trúc của Android, nógiúp cho các ứng dụng của Android có thể tương tác với các thiết bị phần cứng Ví
Dụ : khi bạn muốn gửi 1 gói tin nào đó thông qua wifi, Linux kernel sẽ nhận được góitin thông tin từ ứng dụng của bạn, sau đó nó sẽ phân biệt và xác định phần cứng nào lànơi sẽ thực hiện việc này, cuối cùng nó sẽ đẩy gói tin đó tới driver của wifi Nhưng
Trang 15hãy nhớ rằng, Android chỉ sử dụng Linux Kernel chứ không phải Linux như thôngthường.(Linux kernel chỉ là 1 phần của Linux )
Tầng này có các thành phần chủ yếu :
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 )
Camera Driver : Điều kiển hoạt động của camera, nhận luồng dữ liệu từ
camera trả về
Bluetooth Driver : Điều khiển thiết bị phát và thu sóng Bluetooth
USB driver : Quản lý hoạt động của các cổng giao tiếp USB
Keypad driver : Điều khiển bàn phím
Wifi Driver : Chịu trách nhiệm về việc thu phát sóng wifi
Audio Driver : điều khiển các bộ thu 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
Binder IPC Driver : Chịu trách nhiệm về việc kết nối và liên lạc vớimạng vô tuyến như CDMA, GSM, 3G, 4G, E để đảm bảo những chứcnăng truyền thông được thực hiện
M-System Driver : Quản lý việc đọc ghi lên các thiết bị nhớ như thẻ SD, flash
Power Madagement : Giám sát việc tiêu thụ điện năng
Libraries : Phần này có nhiều thư viện được viết bằng C/C++ để các phần mềm có thể sử dụng, các thư viện đó được tập hợp thành một số nhóm như :
Thư viện hệ thống (System C library) : thư viện dựa trên chuẩn C, được sử dụng chỉ bởi hệ điều hành
Thư viện Media (Media Libraries) : Có nhiều codec để hỗ trợ việc phátvà ghi các loại định dạng âm thanh, hình ảnh, video thông dụng
Thư viện web (LibWebCore) : Đây là thành phần để xem nội dung trênweb, được sử dụng để xây dựng phần mềm duyệt web (Android Browse)cũng như để các ứng dụng khác có thể nhúng vào Nó cực kỳ mạnh, hỗ
Trang 16trợ được nhiều công nghệ mạnh mẽ như HTML5, JavaScript, CSS, DOM,AJAX
Thư viện SQLite : Hệ cơ sở dữ liệu để các ứng dụng có thể sử dụng
Android Runtime : Phần này chứa các thư viện mà một chương trình viết bằngngôn ngữ Java có thể hoạt động Phần này có 2 bộ phận tương tự như mô hìnhchạy Java trên máy tính thường Thứ nhất là các thư viện lõi (Core Library) ,chứa các lớp như JAVA IO, Collections, File Access Thứ hai là một máy ảojava (Dalvik Virtual Machine)
Mặc dù cũng được viết từ ngôn ngữ Java nhưng một ứng dụng Java của hệ điềuhành android không được chạy bằng JRE của Sun (nay là Oracle) (JVM) mà là chạybằng máy ảo Dalvik do Google phát triển
Application Framework : Tầng này xây dựng bộ công cụ - các phần tử ởmức cao để các lập trình viên có thể nhanh chóng xây dựng ứng dụng Nó được viếtbằng Java, có khả năng sử dụng chung để tiết kiệm tài nguyên
Đây là một nền tảng mở, điều đó có 2 điều lợi:
Với các hãng sản xuất điện thoại : Có thể tùy biến để phù hợp với cấu hìnhđiện thoại mà họ sản xuất cũng như để có nhiều mẫu mã, style hợp thị hiếungười dùng Vì thế nên tuy cùng chung nền tảng android mà điện thoại củaGoogle có thể khác hẳn với Motorola, HTC, T-Mobile, Samsung
Với lập trình viên : Cho phép lập trình viên có thể sử dụng các API ở tầngtrên mà không cần phải hiểu rõ cấu trúc bên dưới, tạo điều kiện cho lậptrình viên tự do sáng tạo bởi vì chỉ cần quan tâm đến nội dung mà ứngdụng họ làm việc Một tập hợp API rất hữu ích được xây dựng sẵn nhưhệ thống định vị, các dịch vụ chạy nền, liên lạc giữa các ứng dụng, cácthành phần giao diện cấp cao
Giới thiệu một số thành phần của phần này :
Activity Manager : Quản lý các chu kỳ sống của một ứng dụng cũng nhưcung cấp công cụ điều khiển các Activity
Telephony Manager : Cung cấp công cụ để thực hiện việc liên lạc như gọi điện thoại
XMPP Service : Cung cấp công cụ để liên lạc trong thời gian thực
Location Manager : Cho phép xác định vị trí của điện thoại thoại dựa
Trang 17vào hệ thống định vị toàn cầu GPS và Google Maps.
Window Manager : Quản lý việc xây dựng và hiển thị các giao diện người dùng cũng như tổ chức quản lý các giao diện giữa các ứng dụng
Notication Manager : Quản lý việc hiển thị các thông báo (như báo có
tin nhắn, có e-mail mới )
Resource Manager : Quản lý tài nguyên tĩnh của các ứng dụng bao gồm cácfile hình ảnh, âm thanh, layout, string (Những thành phần không được viếtbởi ngôn ngữ lập trình)
Application Layer : Đây là lớp ứng dụng giao tiếp với người dùng, bao gồmcác ứng dụng như :
Các ứng dụng cơ bản, được cài đặt đi liền với hệ điều hành là gọiđiện(phone), quản lý danh bạ(Contacts), duyệt web (Browser), nhắn tin (SMS),lịch làm việc (Calendar), đọc e-mail (Email-Client), bản đồ (Map), quay phimchụp ảnh (camera)
Các ứng dụng được cài thêm như các phần mềm chứng khoán (Stock), cáctrò chơi (Game), từ điển
Các chương trình có các đặc điểm là :
Viết bằng Java, phần mở rộng là apk
Khi mỗi ứng dụng được chạy, nó có một phiên bản Virtual Machine đượcdựng lên để phục vụ cho nó Nó có thể là một Active Program : Chươngtrình có giao diện với người sử dụng hoặc là một background : chươngtrình chạy nền hay là dịch vụ
Android là hệ điều hành đa nhiệm, điều đó có nghĩa là trong cùng một thờiđiểm, có thể có nhiều chương trình cùng chạy một lúc, tuy nhiên, với mỗiứng dụng thì có duy nhất một thực thể (instance) được phép chạy mà thôi.Điều đó có tác dụng hạn chế sự lạm dụng tài nguyên, giúp hệ thống hoạtđộng tốt hơn
Các ứng dụng được gán số ID của người sử dụng nhằn phân định quyềnhạn khi sử dụng tài nguyên, cấu hình phần cứng và hệ thống
Android là một hệ điều hành có tính mở, khác với nhiều hệ điều hành diđộng khác, android cho phép một ứng dụng của bên thứ ba được phép
Trang 18chạy nền Các ứng dụng đó chỉ có một hạn chế nhỏ đó là nó không đượcphép sử dung quá 5~10% công suất CPU, điều đó nhằn để tránh độc quyềntrong việc sử dụng CPU.
Ứng dụng không có điểm vào cố định, không có phương thức main để bắtđầu
Trang 19Với kiến trúc trên, chúng ta có thể thấy Android có một kiến trúc hoạt động khá linh độngvà mạnh mẽ Với việc sử dụng cơ chế máy ảo Dalvik VM sẽ giúp cho các ứng dụng của Android có thể chạy và hoạt động trên các thiết bị khác nhau có cùng nền tảng.Trong
tương lai gần, Dalvik VM sẽ được Google thay thế bởi một cơ chế mới đó là Android Runtime (ART ), việc này sẽ giúp cho việc thực thi các ứng dụng trên Android diễn ra nhanh và mượt mà hơn rất nhiều
2.4 CÁC THÀNH PHẦN CƠ BẢN CỦA ỨNG DỤNG ANDROID
Các thành phần (component) cơ bản tạo nên một ứng dụng Android được chia
thành 5 loại Nắm bắt được các thành phần này rất cần thiết cho việc lập trình
- Một ứng dụng có thể gồm chỉ một activity hay nhiều activity Thông thường, một trong số các activity được đánh dấu như là activity đầu tiên phải được trình diễntới người dùng khi ứng dụng được khởi động Chuyển từ một activity sang activity khác được hoàn thành bằng cách cho activity hiện thời khởi động activity kế tiếp
- Mỗi activity được đưa ra một cửa sổ mặc định để vẽ vào Thông thường, cửa sổ
sẽ lấp đầy màn hình, nhưng nó có thể nhỏ hơn màn hình và nằm trên các cửa sổ
khác Một activity có thể sử dụng cửa sổ bổ sung - ví dụ như một pop-up dialog gọi cho một đáp ứng người dùng ở giữa của activity, hay một cửa sổ biểu diễn những cho người dùng với thông tin quan trọng khi họ chọn một item cụ thể trên màn hình
- Nội dung trực quan của cửa sổ được cung cấp bởi một cây phân cấp các đối
tượng view dẫn xuất từ lớp View Mỗi view điều khiển một khoảng hình chữ nhật
cụ thể bên trong cửa sổ View cha chứa và tổ chức bố cục các view con Các view lá
vẽ trong hình chữ nhật mà chúng điều khiển và đáp ứng lại các hành động người
dùng trực tiếp ở khoảng trống này Do đó, các view là nơi mà các tương tác của
activity với người dùng diễn ra Ví dụ một view có thể hiển thị một hình ảnh nhỏ và khởi tạo một hoạt động khi người dùng nhấn vào hình ảnh đó Android có một số view đã xây dựng sẵn mà bạn có thể sử dụng – gồm có các buttons, text fields, scrollbars, menu items, check boxes…
Trang 20- Một cây phân cấp view được đặt trong một cửa sổ của activity bằng phương
thức Activity.setContentView() Content view là đối tượng View ở gốc của cây
phân cấp
- Class cơ sở Activity định nghĩa một loạt các sự kiện mà điều chỉnh vòng đời
của một hoạt động Class Activity định nghĩa các sự kiện sau đây:
+ onCreate() : Được gọi khi hoạt động được tạo ra lần đầu tiên
+ onStart() : Được gọi khi hoạt động trở nên hữu hình so với người dùng
+ onResume() : Được gọi khi hoạt động bắt đầu tương tác với người sử dụng + onPause() : Được gọi để dừng các hoạt động hiện tại và nối lại các hoạt động trước đó
+ onStop() : Được gọi khi hoạt động không còn hiển thị với người dùng
+ onDestroy() : Được gọi trước khi hoạt động bị phá hủy bởi hệ thống (bằng tay hoặc bằng hệ thống để bảo tồn bộ nhớ)
+ onRestart() : Được gọi khi hệ thống đã được dừng lại và khởi động lại một lần nữa
Hình 2.2 Vòng đời của Activity
Trang 212.4.2 Intent
Là một cấu trúc dữ liệu mô tả cách thức, đối tượng thực hiện của một Activity Là cầu nối giữa các Activity: ứng dụng Android thường bao gồm nhiều Activity, mỗi Activity hoạt động độc lập với nhau và thực hiện những công việc khác nhau Intent chính là người đưa thư, giúp các Activity có thể triệu gọi cũng như truyền cácdữ liệu cần thiết tới một Activity khác Điều này cũng giống như việc di chuyển qualại giữa các Forms trong lập trình Windows Form
Hình 2.3 Intent trong Android
service chạy thậm chí khi activity khởi động nó rời khỏi màn hình Trong khi kết nối, bạn có thể giao tiếp với dịch vụ thông qua giao diện mà service đó trưng ra Ví
dụ như trong music service, giao diện này có thể cho phép người dùng pause,
rewind, stop và restart lại playback Giống như các activity và các thành phần khác khác, service chạy trong thread chính của tiến trình ứng dụng Vì thế chúng không thể chặn những thành phần khác hay giao diện người dùng, chúng thường tạo ra các thead khác cho các nhiệm vụ hao tốn thời gian
Trang 22Hình 2.4 Service trong Android
Một Broadcast Rreceiver là một thành phần không làm gì ngoài việc nhận và đáplại các thông báo broadcast Nhiều broadcast khởi đầu trong mã hệ thống - ví dụ nhưthông báo múi giờ thay đổi, pin yếu, ảnh đã được chụp, hay người dùng đã thay đổi ngôn ngữ … Các ứng dụng có thể tạo ra các broadcast, chẳng hạn để ứng dụng khác biết được một số dữ liệu đã được tải về thiết bị và sẵn sàng cho việc sử dụng chúng Một ứng dụng có thể có một số Broadcast Receiver để đáp lại bất cứ thông báo nào mà nó cho là quan trọng Tất cả các receiver mở rộng từ lớp cơ sở
BroadcastReceiver Broadcast Receiver không hiển thị một giao diện người dùng Tuy nhiên chúng có thể bắt đầu một activity để đáp lại thông tin mà chúng nhận,
hay chúng có thể sử dụng NotificationManager để cảnh báo người dùng
Notifications có thể lấy sự chú ý của người dùng bằng nhiều cách, lóe sáng đèn sau, rung, tạo ra âm thah, vân vân Chúng thường lấy một biểu tượng bền vững trong
thanh trạng thái, cái mà người dùng có thể mở để lấy thông điệp
Một content provider tạo ra một tập cụ thể các dữ liệu của ứng dụng khả dụng cho các ứng dụng khác Dữ liệu có thể được lưu trữ trong hệ thống file, trong một cơ
sở dữ liệu SQLite, hay trong một cách khác nào đó Content provider mở rộng lớp
cơ sở ContentProvider để cài đặt một tập các chuẩn các phương thức cho phép các ứng dụng khác đạt được và lưu trữ dữ liệu của kiểu mà nó điều khiển Tuy nhiên,
Trang 23các ứng dụng không gọi trực tiếp các phương thức này, chúng sử dụng một đối
tượng ContentResolver và gọi các phương thức của nó Một ContentResolver có thể nói chuyện với bất cứ content provider nào, chúng cộng tác với provider để quản lý giao tiếp liên tiến trình
Trang 24CHƯƠNG 3: TỔNG QUAN VỀ XÂY DỰNG WEB SERVICE BẰNG PHP
3.1 TỔNG QUAN VỀ WEB SERVICE
3.1.1 Khái niệm
Nói một cách đơn giản, web service là một ứng dụng, một tiện ích mà các nhà phát triển muốn cung cấp rộng rãi cho nhiểu người, nhiều tổ chức có thể sử dụng Tương tự như khi chúng ta xây dựng một trang web là để cả thế giới có thể vào xem Web service là những ứng dụng chạy trên nền web, điều khác biệt so với các ứng dụng web bình thường khác là khách hàng hay client của các web service không chỉ là trình duyệt web (web browser) mà còn có thể là những ứng dụng chạy trên máy tính cá nhân (desktop) hay trên các thiết bị di động (mobile device)
Hình 3.1 Web Service
3.1.2 Đặc điểm của Web Service
- Theo đặc tả của W3C (World Wide Web Consortium), dịch vụ Web có khả năng tương tác với các hệ thống khác thông qua một giao diện chung được mô tả bằng XML
- Dịch vụ Web cho phép client và server tương tác được với nhau ngay cả trong những môi trường khác nhau Ví dụ, đặt Web server cho ứng dụng trên một máy chủ chạy hệ điều hành Linux trong khi người dùng sử dụng máy tính chạy hệ điều hành Windows, ứng dụng vẫn có thể chạy và xử lý bình thường mà không cần thêm yêu cầu đặc biệt để tương thích giữa hai hệ điều hành này
- Một Dịch vụ Web có bao gồm có nhiều mô-đun và công bố lên mạng Internet
- Một ứng dụng khi được triển khai sẽ hoạt động theo mô hình client-server Nó có thể được triển khai bởi một phần mềm ứng dụng phía server ví dụ như PHP, Java, Oracle Application server hay Microsoft.NET…
Trang 253.1.3 Ưu và nhược điểm của Web Service
Ưu điểm:
- Dịch vụ Web cung cấp khả năng hoạt động rộng lớn và linh hoạt với các ứng dụngphần mềm khác nhau chạy trên những nền tảng khác nhau
- Nền tảng của web service là công nghệ XML Hầu hết các hệ thống đều thể đọc và
“hiểu” được tập tin XML
- Thúc đẩy phát triển các hệ thống phần mềm đã tồn tại bằng cách cho phép các tiếntrình/chức năng nghiệp vụ đóng gói trong giao diện dịch vụ Web và công bố rộng rãi trên mạng Internet
- Tạo mối quan hệ tương tác lẫn nhau và mềm dẻo giữa các thành phần trong hệ thống, dễ dàng cho việc phát triển các ứng dụng phân tán
- Thúc đẩy hệ thống tích hợp, giảm sự phức tạp của hệ thống, hạ giá thành dịch vụ, phát triển hệ thống nhanh và tương tác hiệu quả với hệ thống của các doanh
- An toàn và bảo mật thông tin là một vấn đề nan giải của web service
- Có nhiều vấn đề về các tác vụ đòi hỏi transaction (ví dụ như chuyển tiền qua lại giữa các ngân hàng) chưa được giải quyết hoàn chỉnh
- Tốc độ thực thi (performance) của web service phụ thuộc rất nhiều vào tốc độ đường truyền Internet và nhìn chung các web service thực thi chậm hơn các ứng dụng bình thường khác
- Vấn đề Quality of Service (QoS) còn chưa được đảm bảo, nhất lả khi web service
bị rơi vào tình trạng quá tải (peak load) và có thể gây những thiệt hại lớn cho phía máy khách
3.2 KIẾN TRÚC CỦA WEB SERVICE
Trang 26Hình 3.2 Kiến trúc của Web Service
Dịch vụ Web gồm có ba chuẩn chính: SOAP (Simple Object Access Protocol), WSDL (Web Service Description Language) và UDDI (Universal Description, Discovery, and Integration) Hình 1 mô tả chồng giao thức của dịch vụ Web, trong đó UDDI được sử dụng để đăng ký và khám phá dịch vụ Web đã được miêu tả cụ thể trong WSDL Giao tácUDDI sử dụng SOAP để nói chuyện với UDDI server, sau đó các ứng dụng SOAP yêu cầu một dịch vụ Web Các thông điệp SOAP được gửi đi chính xác bởi giao thức HTTP và TCP/IP
Chồng giao thức dịch vụ Web là tập hợp các giao thức mạng máy tính được sử dụng đểđịnh nghĩa, xác định vị trí, thi hành và tạo nên dịch vụ Web tương tác với những ứng dụng hay dịch vụ khác Chồng giao thức này có 4 thành phần chính:
- Dịch vụ vận chuyển (Service Transport): có nhiệm vụ truyền thông điệp giữa các ứng dụng mạng, bao gồm những giao thức như HTTP, SMTP, FTP, JSM và gần đây nhất là giao thức thay đổi khổi mở rộng (Blocks Extensible Exchange
Protocol- BEEP)
- Thông điệp XML: có nhiệm vụ giải mã các thông điệp theo định dạng XML để có thể hiểu được ở mức ứng dụng tương tác với người dùng Hiện tại, những giao thức thực hiện nhiệm vụ này là XML-RPC, SOAP và REST
- Mô tả dịch vụ: được sử dụng để miêu tả các giao diện chung cho một dịch vụ Web
cụ thể WSDL thường được sử dụng cho mục đích này, nó là một ngôn ngữ mô tả giao tiếp và thực thi dựa trên XML Dịch vụ Web sẽ sử dụng ngôn ngữ này để