Tải bản đầy đủ (.docx) (51 trang)

Báo cáo đề tài thực tập tốt nghiệp: Xây dựng ứng dụng chợ phòng trọ bằng Android + Firebase

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.06 MB, 51 trang )

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

------------------------------

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


LỜI CẢM ƠN
Lờ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ạo
KIS 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

2


3


CỢNG HÒA XÃ HỢI CHỦ NGHĨA VIỆT NAM
Đợ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ọ
Sinh viên: Nguyễn Hữu Đức

Lớp: D14CQCP01-N


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:
………………………………………………………………………………………………
……………………………………………………………………
Đánh giá chi tiết:
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
Nhận xét về tinh thần, thái độ làm việc:
………………………………………………………………………………………………
……………………………………………………………………
Kết luận:
………………………………………………………………………………………………
……………………………………………………………………
Điểm hướng dẫn:
GIẢNG VIÊN HƯỚNG DẪN
(Ký, ghi rõ họ tên)

4


MỤC LỤC

5



DANH MỤC CÁC BẢNG VE
Bả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

6


DANH MỤC CÁC HÌNH VE
Hì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

7


Báo cáo TTTN Đại học

Lời mở đầu

LỜI MỞ ĐẦU
Hiện nay trên địa bàn Thành phố Hồ Chí Minh (Tp. HCM) nay có khoảng 130
Trườ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ững ngườ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ên và 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 mang
tí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.

Nguyễn Hữu Đức – D14CQCP01-N

8


Báo cáo TTTN Đại học

Chương 1: Đặt vấn đề

CHƯƠ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ặt.


1.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.
Th ngun 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.

Nguyễn Hữu Đức – D14CQCP01-N


9


Báo cáo TTTN Đại học

Chương 1: Đặt vấn đề

1.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 ́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 ứng
dụ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.

Nguyễn Hữu Đức – D14CQCP01-N

10


Báo cáo TTTN Đại học

Chương 1: Đặt vấn đề

• 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.
1.5.3 Firebase Realtime Database

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àng
triệ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àn
SSL 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ại
server.
-

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

Nguyễn Hữu Đức – D14CQCP01-N

11


Báo cáo TTTN Đại học

Chương 2: Lập trình trên Android

CHƯƠ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ởi
nhữ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. Đến
tháng 8/2005 Google mua lại tổng công ty Android, biến nó thành một bộ phận trực thuộ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 cho Google.
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à Open
Handset 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ại
là 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ới
mụ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ảng
Android 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ền
tả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ọng

rấ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ện
thoại Android đầu tiên được bán ra đó là T-Mobile G1. Không phụ sự kì vọng và hậu
thuẫ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ội
OHA 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ột
hoà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ập
cho 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

Nguyễn Hữu Đức – D14CQCP01-N

12


Báo cáo TTTN Đại học







Chương 2: Lập trình trên Android

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
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ập
trì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ác

thiế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ủa
Google, 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ân
Linux, 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ẽ cho
chú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ói

Nguyễn Hữu Đức – D14CQCP01-N

13


Báo cáo TTTN Đại học

Chương 2: Lập trình trên Android

tin 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
hãy nhớ rằng, Android chỉ sử dụng Linux Kernel chứ không phải Linux như thông
thườ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ớ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.
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át và 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

Nguyễn Hữu Đức – D14CQCP01-N

14


Báo cáo TTTN Đại học

Chương 2: Lập trình trên Android
dung trên web, đượ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ỗ trợ đượ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ằng
ngôn ngữ Java có thể hoạt động. Phần này có 2 bộ phận tương tự như mô hình
chạ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 ảo
java (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ều
hành android không được chạy bằng JRE của Sun (nay là Oracle) (JVM) mà là chạy
bằ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ết
bằ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ếu
người dùng. Vì thế nên tuy cùng chung nền tảng android mà điện thoại của
Google 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ầng
trê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ập
trình viên tự do sáng tạo bởi vì chỉ cần quan tâm đến nội dung mà ứng
dụ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ác
thà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

Nguyễn Hữu Đức – D14CQCP01-N

15


Báo cáo TTTN Đại học


Chương 2: Lập trình trên Android

 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
và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ác
file hình ảnh, âm thanh, layout, string. (Những thành phần không được viết
bở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ồm
cá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 phim
chụ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ác
trò 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 được dựng lên để phục vụ cho nó. Nó có thể là một
Active Program : Chương trình có giao diện với người sử dụng

hoặc là một background : chương trì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ền hạn khi sử dụng tài nguyên, cấu hình phần cứng và hệ

Nguyễn Hữu Đức – D14CQCP01-N

16


Báo cáo TTTN Đại học

Chương 2: Lập trình trên Android
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 chạy nền. Các ứng dụng đó chỉ có một hạn chế nhỏ đó
là nó không được phép sử dung quá 5~10% công suất CPU, điều
đó nhằn để tránh độc quyền trong 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.

Nguyễn Hữu Đức – D14CQCP01-N


17


Báo cáo TTTN Đại học

Chương 2: Lập trình trên Android

Vớ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 động
và 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.
Activity
- Một activity thể hiện một giao diện đồ họa người dùng. Ví dụ một activity có
thể biểu diễn một danh sách các menu item để người dùng có thể chọn và có thể
hiển thị ảnh cùng với tiêu đề. Một ứng dụng gửi tin nhắn văn bản có thể có một hoạt
động là hiển thị một danh sách các liên hệ để gửi tin nhắn tới, hoạt động thứ hai là
viết tin nhắn tới liên hệ được chọn, các hoạt động khác nữa là xem lại tin nhắn cũ
hay thay đổi cài đặt. Mặc dù chúng làm việc cùng nhau để tạo thành một giao diện
người dùng, mỗi activity độc lập với những cái khác. Mỗi activity là một lớp con
của lớp cơ sở Activity.
- 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ễn
tớ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, scroll bars,
menu items, check boxes…
2.4.1

Nguyễn Hữu Đức – D14CQCP01-N

18


Báo cáo TTTN Đại học

Chương 2: Lập trình trên Android

- 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

Nguyễn Hữu Đức – D14CQCP01-N

19


Báo cáo TTTN Đại học

Chương 2: Lập trình trên Android

2.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ác dữ
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 qua lại
giữa các Forms trong lập trình Windows Form.


Hình 2.3 Intent trong Android
2.4.3 Service
Một service không có giao diện trực quan, nó chạy trên nền trong một khoảng
thời gian không xác định. Ví dụ một service có thể chơi nhạc nền, hay nó nạp dữ
liệu trên mạng hay tính toán cái gì đó và cung cấp kết quả cho activity cần đến nó.
Mỗi service mở rộng từ lớp cơ sở Service. Một ví dụ cổ điển là media player chơi
các bài hát từ một danh sách. Ứng dụng player có thể có một hay hai activity cho
phép người dùng chọn bài hát và bắt đầu chơi. Tuy nhiên, music playback không tự
nó được xử lý bởi một activity bởi vì người dùng sẽ mong muốn chơi tiếp nhạc khi
họ rời khỏi player và làm cái gì đó khác. Để tiếp tục chơi nhạc, media player activity
có thể khởi động một service chạy trên nền. Hệ thống sẽ giữ cho music playback
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.

Nguyễn Hữu Đức – D14CQCP01-N

20


Báo cáo TTTN Đại học

Chương 2: Lập trình trên Android

Hình 2.4 Service trong Android
2.4.4 Broadcast Receiver

Một Broadcast Rreceiver là một thành phần không làm gì ngoài việc nhận và đáp
lạ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.
2.4.5 Content Provider
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,
Nguyễn Hữu Đức – D14CQCP01-N

21


Báo cáo TTTN Đại học

Chương 2: Lập trình trên Android

cá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.

Nguyễn Hữu Đức – D14CQCP01-N

22


Báo cáo TTTN Đại học

Chương 3: Tổng quan Web Service

CHƯƠ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…
3.1.3 Ưu và nhược điểm của Web Service
• Ưu điểm:
Nguyễn Hữu Đức – D14CQCP01-N

23


Báo cáo TTTN Đại học
-

-

-


-

-

Chương 3: Tổng quan Web Service

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ụng
phầ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ến
trì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
nghiệp khác.
Ở góc độ doanh nghiệp, web service là một công nghệ phục vụ rất tốt trong việc
quảng bá dịch vụ của mình cho đa dạng khách hàng.

Nhược điểm:
Có quá nhiều chuẩn cho dịch vụ Web khiến người dùng khó nắm bắt cũng như gây
khó khăn cho các nhà phát triển.
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

Nguyễn Hữu Đức – D14CQCP01-N


24


Báo cáo TTTN Đại học

Chương 3: Tổng quan Web Service

Hì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ác
UDDI 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 để
truyền tham số và các loại dữ liệu cho các thao tác và chức năng mà dịch vụ Web
cung cấp.

Nguyễn Hữu Đức – D14CQCP01-N

25


×