Tải bản đầy đủ (.doc) (42 trang)

ĐỒ ÁN CƠ SỞ 3 ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG DI ĐỘNG ĐẾM BƯỚC CHÂN THÔNG MINH. ThS. TRẦN ĐÌNH SƠN

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 (2.23 MB, 42 trang )

ĐẠI HỌC ĐÀ NẴNG

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
VÀ TRUYỀN THƠNG VIỆT – HÀN
KHOA KHOA HỌC MÁY TÍNH

ĐỒ ÁN CƠ SỞ 3
ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG DI ĐỘNG
ĐẾM BƯỚC CHÂN THÔNG MINH

Sinh viên thực hiện

: ĐẶNG QUANG TÀI
NGUYỄN THỊ TRÚC LY
Giảng viên hướng dẫn: ThS. TRẦN ĐÌNH SƠN
Lớp
: 19IT1

Đà Nẵng, tháng 5 năm 2021


ĐẠI HỌC ĐÀ NẴNG

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
VÀ TRUYỀN THƠNG VIỆT – HÀN
KHOA KHOA HỌC MÁY TÍNH

ĐỒ ÁN CƠ SỞ 3
ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG DI ĐỘNG
ĐẾM BƯỚC CHÂN THÔNG MINH


Sinh viên thực hiện

: ĐẶNG QUANG TÀI
NGUYỄN THỊ TRÚC LY
Giảng viên hướng dẫn: ThS. TRẦN ĐÌNH SƠN
Lớp
: 19IT1


Đà Nẵng, tháng 5 năm 2021


LỜI CẢM ƠN
Để đồ án này đạt kết quả tốt đẹp, chúng tôi đã nhận được sự hỗ trợ của
nhiều thầy cơ và bạn bè. Với tình cảm chân thành, sâu sắc, cho phép tơi được bày
tỏ lịng biết ơn sâu sắc đến tất cả mọi người đã tạo điều kiện giúp đỡ trong quá
trình học tập và nghiên cứu đề tài một cách tốt nhất.
Trước hết tôi xin gửi tới các thầy cơ khoa Khoa học máy tính lời chào trân
trọng, lời chúc sức khỏe và lời cảm ơn sâu sắc. Với sự quan tâm, dạy dỗ, chỉ bảo
tận tình chu đáo của thầy cơ, đến nay tơi đã có thể hồn thành đồ án, đề tài: “Xây
dựng ứng dụng di động đếm bước chân”. Đặc biệt tôi xin gửi lời cảm ơn chân
thành nhất tới thầy giáo – ThS.Trần Đình Sơn đã quan tâm giúp đỡ, hướng dẫn
tơi hoàn thành tốt đồ án này trong thời gian qua.
Tuy nhiên, đây là lần đầu tiên được tiếp xúc và tìm hiểu về đồ án này cùng
với trình độ kiến thức và lượng kinh nghiệm cịn hạn chế, nên khơng thể tránh
khỏi có những sơ sót. Vì vậy, tơi rất mong có sự đóng góp ý kiến và đánh giá chân
thành của các thầy, các cô để đồ án này của chúng tơi được có điều kiện bổ sung,
nâng cao ý thức của mình, hồn thiện một cách tốt nhất có thể. Tơi xin chân thành
cảm ơn.



NHẬN XÉT
(Của giảng viên hướng dẫn)
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………


MỤC LỤC
Trang
MỞ ĐẦU......................................................................................................
1.1 Lý do chọn đề tài.......................................................................................1
1.2 Mục tiêu đề tài...........................................................................................1

1.3 Nội dung thực hiện....................................................................................1
Chương 1 Cơ sở lý thuyết..................................................................................2
1.1 Hệ điều hành Android................................................................................2
1.1.1 Hệ điều hành Android là gì?...............................................................2
1.1.2 Kiến trúc Android...............................................................................3
1.2 Mơi trường Android Stusio........................................................................6
1.2.1 Giới thiệu Android studio...................................................................6
1.2.2 Cài đặt môi trường Android Studio.....................................................7
1.2.3 Cấu trúc dự án Android trong Android Studio....................................7
1.2.4 Thành phần giao diện trong Android Studio.......................................8
1.2.5 Vịng đời ứng dụng Android...............................................................9
1.3 Mơ hình thiết kế MVC.............................................................................11
1.4 Ngơn ngữ lập trình Kotlin........................................................................11
1.5 SQLite database.......................................................................................13
1.6 Cảm biến trong Android..........................................................................13
1.7 Kiến thức tính lượng năng lượng đốt cháy..............................................14
1.7.1 Tỉ lệ trao đổi chất cơ bản (BRM)......................................................14
1.7.2 Giá trị MET......................................................................................14
Chương 2 Nghiên cứu tổng quan....................................................................16
2.1 Các ứng dụng cùng chức năng đã có trên thị trường...............................16
2.2 Cảm biến đếm bước chân trên điện thoại................................................16
2.3 GPS.........................................................................................................17
2.4 Các thuật tốn xử lý dữ liệu.....................................................................17
2.4.1 Thuật tốn tính qng đường di chuyển............................................17
2.4.2 Thuật tốn tính thời gian di chuyển..................................................18
2.4.3 Thuật tốn tính vận tốc trung bình di chuyển được...........................18
2.4.4 Thuật tốn tính số năng lượng đốt cháy............................................18
Chương 3 Phân tích và thiết kế hệ thống........................................................21
3.1 Mơ hình tổng quan của ứng dụng nghiên cứu..........................................21
3.2 Khảo sát và đặt tả yêu cầu.......................................................................21

3.2.1 Yêu cầu chức năng............................................................................21
3.2.2 Yêu cầu phi chức năng......................................................................21


3.3 Phân tích và thiết kế hệ thống..................................................................21
3.3.1 Các chức năng của hệ thống.............................................................21
3.4 Biểu đồ usecase.......................................................................................22
3.4.1 Biểu đồ usecase tổng quát.................................................................22
3.4.2 Biểu đồ usecase chế độ thử thách.....................................................23
Chương 4 Triển khai xây dựng website..........................................................24
4.1 Các công cụ, phần mềm sử dụng.............................................................24
4.2 Thiết kế, xây dựng giao diện ứng dụng...................................................24
4.2.1 Thiết kế wireframe............................................................................24
4.2.2 Giao diện đã hoàn thành...................................................................26
Chương 5 Kết luận và hướng phát triển.........................................................31
5.1 Kết quả....................................................................................................31
5.2 Hạn chế....................................................................................................31
5.3 Hướng phát triển......................................................................................31
5.4 Kết luận...................................................................................................31


DANH MỤC HÌNH
Trang
Hình 1.1 Hệ điều hành Android..............................................................................2
Hình 1.2 Mơ hình kiến trúc nền tảng Android........................................................4
Hình 1.3 Android Studio.........................................................................................6
Hình 1.4 Cấu trúc dự án Android............................................................................7
Hình 1.5 Activity Stack...........................................................................................9
Hình 1.6 Các trạng thái của chu kỳ.......................................................................10
Hình 1.7 Bảng giá trị MET...................................................................................15

Hình 2.1 Ứng dụng “Trình theo dõi bước – Đo bước chân”.................................16
Hình 2.2 Ứng dụng “Bộ đếm bước – Đo bước chân và đo calo”..........................16
Hình 2.3 Hàm tính tỉ lệ đốt cháy...........................................................................19
Hình 2.4 Hàm chuyển đổi kcal/ngày sang kcal/phút.............................................19
Hình 2.5 Hàm tính năng lượng đốt cháy..............................................................19
Hình 2.6 Hàm lấy giá trị MET..............................................................................20
Hình 3.1 Biểu đồ usecase tổng quát......................................................................22
Hình 3.2 Biểu đồ usecase chế độ thử thách...........................................................23
Hình 4.1 Thiết kế màn hình “home”.....................................................................24
Hình 4.2 Thiết kế màn hình “lịch sử hoạt động”...................................................25
Hình 4.3 Thiết kế màn hình “cập nhật thơng tin”..................................................25
Hình 4.4 Thiết kế màn hình “chế độ thử thách”....................................................26
Hình 4.5 Giao diện “home”..................................................................................27
Hình 4.6 Giao diện “lịch sử hoạt động”................................................................28
Hình 4.7 Giao diện “cập nhật thơng tin”...............................................................29
Hình 4.8 Giao diện “chế độ thử thách”.................................................................30
Hình 4.9 Giao diện trang “tin tức”........................................................................30


MỞ ĐẦU
1.1

Lý do chọn đề tài

Khoa học công nghệ ngày càng phát triển, những chiếc điện thoại di động
cũng thay đổi theo, đem đến nhiều lợi ích quan trọng cho người sử dụng như: giữ
liên lạc đơn giản hơn, chụp ảnh dễ dàng, sắc nét, thanh toán nhanh… Bên cạnh đó,
điện thoại di động cịn giúp chúng ta trong việc theo dõi và quản lý sức khỏe hằng
ngày. Có sức khỏe chúng ta mới có thể tận hưởng cuộc sống một cách trọn vẹn
nhất. Nó giúp ta có một cuộc sống vui vẻ, hạnh phúc, thực hiện ý tưởng, ước mơ,

nguyện vọng của cuộc đời mình. Hiểu được tầm quan trọng của sức khỏe cũng
như những tiện ích mà điện thoại di động mang lại, chúng tơi đã tìm hiểu, nghiên
cứu và áp dụng những kiến thức đã có để xây dựng nên ứng dụng di động đếm
bước chân. Nhằm theo dõi tình trạng sức khỏe người dùng bằng cách đếm số bước
chân và đưa ra thông tin vận động bao gồm số bước chân, lượng calo tiêu thụ, số
bước chân tiêu chuẩn,… để từ đó đưa ra những lời khun trong việc giữ gìn,
chăm sóc sức khỏe cho người dùng.

1.2 Mục tiêu đề tài
Ứng dụng đếm bước chân chạy trên nên Android được thực hiện trên hai
mục đích sau:
- Thứ nhất là nghiên cứu các cơng nghệ lập trình như: lập trình ứng dụng với
Android
- Thứ hai là phát triển ứng dụng có tính thực tiễn cao, có khả năng triển khai
ứng dụng vào thực tế, giúp những người có nhu cầu theo dõi và rèn luyện
sức khỏe có thể thao tác dễ dàng và tiện lợi.

1.3 Nội dung thực hiện
-

Nghiên cứu, phân tích nhu cầu thực tế, học hỏi các ứng dụng cùng chức
năng trên thị trường.
Phác họa, liệt kê những chức năng, giao diện phù hợp với nhu cầu.
Tìm hiểu về ngơn ngữ lập trình di động Kotlin.
Tìm hiểu về cấu tạo, nguyên lý hoạt động của các cảm biến và các thuật
toán xử lý dữ liệu đầu ra.
Xây dựng, hồn thiện và trang trí phần giao diện của ứng dụng.
Lập trình, hồn thành phần chức năng chính của ứng dụng.
Chạy thử và cải thiện, bổ sung chức năng của ứng dụng.
Hoàn thành báo cáo đồ án cơ sở, gặp giáo viên hướng dẫn để kiểm duyệt và

tiến hành bảo vệ.
1


Chương 1

Cơ sở lý thuyết

1.1 Hệ điều hành Android
1.1.1 Hệ điều hành Android là gì?

Hình Cơ sở lý thuyết.1 Hệ điều hành Android
Android là một hệ điều hành có dạng mã nguồn mở, nó hoạt động dựa trên
nền tảng Linux và được thiết kế dành riêng cho những thiết bị di động cảm ứng
hoặc máy tính bảng. Trước đây, hệ điều hành này được phát triển bởi tổng công ty
Android và được tài trợ bởi Google. Cho đến năm 2005 thì Google đã mua lại hệ
điều hành này và cho ra mắt người dùng vào năm 2007. Android này sở hữu mã
nguồn mở nên lập trình viên có thể dễ dàng điều chỉnh và phân phối nó một cách
tự do. Đây chính là một trong những yếu tố đã giúp cho Android trở thành nền
tảng xây dựng điện thoại thông minh phát triển nhất trên thế giới. Hiện tại,
Android đã chiếm 65% so với thị phần điện thoại thông minh trên toàn thế giới
vào quý 3 năm 2012. Theo điều tra thì đã có khoảng 500 triệu thiết bị được kích
hoạt và có đến 1.3 triệu lượt được hoạt mỗi ngày. Vào tháng 10/2020 thì android
đã có hơn 700.000 ứng dụng và số lượng tải từ Google Play ước tính lên khoảng
25 tỷ lượt. Mặc dù có sự ra đời của iOS của Apple thì khiến Android có phần nào
ảnh hưởng. Tuy nhiên, Android vẫn đứng ở vị trí đầu tiên trong thị phần thế giới.

2



-

Đặc tính mở của 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ả tính năng 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ể gọi bất kỳ chức năng lõi của điện thoại như thực hiện
cuộc gọi, gửi tin nhắn văn bản, hoặc bằng cách sử dụng máy ảnh, cho
phép các nhà phát triển để tạo ra nhiều ứng dụng phong phú hơn cho
người dùng. Android được xây dựng trên mã nguồ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 không phân biệt giữa các ứng dụng lõi của điện thoại và các
ứng dụng của bên thứ ba. Tất cả có thể được xây dựng để có thể truy
cập bằng khả năng của một thiết bị di động cung cấp cho người sử
dụng 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 Android, người dùng có thể hồn tồn thích ứng với điện
thoại đến lợi ích của họ. 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 bạn 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.
 Android cung cấp truy cập đến một loạt các thư viện cơng cụ hữu ích
và có thể được sử dụng để xây dựng các ứng dụng phong phú. Ví dụ,
Android cho phép các thiết bị giao tiếp với nhau tạo điều kiện cho
đồng đẳng rich-to-peer trong ứng dụng xã hội. Ngoài ra, Android bao
gồm một tập hợp đầy đủ công cụ đã được xây dựng công phu, với việc
cung cấp nền tảng phát triển, với năng suất cao và cái nhìn sâu vào các
ứng dụng .

1.1.2 Kiến trúc Android

Android là một hệ điều hành nguồn mở dựa trên nhân Linux, được xây
dựng theo ngăn xếp (stack) cho nhiều mảng rộng của thiết bị và các yếu tố hình
thức nhất định. Nhìn vào hình ảnh minh họa ở trên chúng ta sẽ dễ nhìn nhận và
hiểu hơn về kiểu thiết kế này. Mỗi ngăn xếp (System Apps, Java API
Framework…) sẽ chứa một mảng các thành phần bên trong.

3


Hình Cơ sở lý thuyết.2 Mơ hình kiến trúc nền tảng Android
-

Applications:
 Hệ điều hành Android tích hợp sẳn một số ứng dụng cơ bản như email

-

client, SMS, lịch điện tử, bản đồ, trình duyệt web, sổ liên lạc và một số
ứng dụng khác. Ngồ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.
Application Framwork:
 Tầng này của hệ điều hành Android cung cấp một nền tảng phát triển
ứng dụng mở qua đó cho phép nhà phát triển ứng dụng có khả năng tạo
ra các ứng dụng vô cù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ị…
 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

4


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:
 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.
 Content Provider: Cho phép các ứng dụng có thể truy xuất dữ liệu từ
các ứng dụng khác hoặc chia sẽ dữ liệu của chúng.
 Resource Manager: Cung cấp khả năng truy xuất các tài nguyên noncode 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.
-

Libraries:
 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.
 Media libraries: Bộ thư viện hổ trợ trình diễn và ghi các định dạng âm
than và hình ảnh phổ biến.
 Surface manager: Quản lý hiển thị nội dung 2D và 3D.
 LibWebCore: Một web browser engine hiện đại được sử dụng trong

trình duyệt của Android lần trong trình duyệt nhúng web view được sử
dụng trong ứng dụng.
 SGL: Engine hổ trợ đồ họa 2D.
 3D libraries: Một thể hiện được xây dựng dựa trên các APIs của
OpenGL ES 1.0. Những thư viện này sử dụng các tăng tốc 3D bằng
phần cứng lẫn phần mềm để tối ưu hóa hiển thị 3D.
 FreeType: Bitmap and vector font rendering.
 SQLite: Một DBMS nhỏ gọn và mạnh mẽ.

-

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
5


-

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.

Linux Kernel:
 Hệ điều hành Android được xây dựng trên bộ nhân Linux 2.6 cho
những dịch vụ hệ thống cốt lõi như: security, memory management,
process management, network stack, driver model. Bộ nhân này làm
nhiệm vụ như một lớp trung gian kết nối phần cứng thiết bị và phần
ứng dụng.

1.2 Môi trường Android Stusio
1.2.1 Giới thiệu Android studio
Android Studio là một phầm mềm bao gồm các bộ công cụ khác nhau dùng
để phát triển ứng dụng chạy trên thiết bị sử dụng hệ điều hành Android như các
loại điện thoại smartphone, các tablet... Android Studio được đóng gói với một bộ
code editor, debugger, các công cụ performance tool và một hệ thống build/deploy
(trong đó có trình giả lập simulator để giả lập môi trường của thiết bị điện thoại
hoặc tablet trên máy tính) cho phép các lập trình viên có thể nhanh chóng phát
triển các ứng dụng từ đơn giản tới phức tạp.Việc xây dựng một ứng dụng mobile
(hoặc tablet) bao gồm rất nhiều các công đoạn khác nhau. Đầu tiên chúng ta sẽ
viết code ứng dụng sử dụng máy tính cá nhân hoặc laptop. Sau đó chúng ta cần
build ứng dụng để tạo file cài đặt. Sau khi build xong thì chúng ta cần copy file
cài đặt này vào thiét bị mobile (hoặc table) để tiến hành cài đặt ứng dụng và chạy
kiểm thử (testing). Bạn thử tưởng tượng nếu với mỗi lần viết một dòng code bạn
lại phải build ứng dụng, cài đặt trên điện thoại hoặc tablet và sau đó chạy thử thì
sẽ vơ cùng tốn thời gian và công sức. Android Studio được phát triển để giải quyết
các vấn đề này. Với Android Studio tất cả các công đoạn trên được thực hiện trên
cùng một máy tính và các quy trình được tinh gọn tới mức tối giản nhất.

6


Hình Cơ sở lý thuyết.3 Android Studio


1.2.2 Cài đặt mơi trường Android Studio
-

Cấu hình tối thiểu cài đặt Android Studio trên Windows:
 Hệ điều hành: Windows 7 32-64 bit trở lên
 Bộ nhớ trong: tối thiểu 2GB RAM, yêu cầu 8GB RAM.
 Ổ cứng: tối thiểu 2GB ổ trống, khuyến nghị 4GB (500MB cho IDE và
1.5GB cho Android SDK và image giả lập hệ thống).
 Tỉ lệ màn hình: tối thiểu 1280×800.

-

Cấu hình tối thiểu cài đặt Android Studio trên Mac:
 Hệ điều hành: MAC OS X 10.8.5 trở lên, hỗ trợ tới 10.11.4 (El
Capitan)
 Bộ nhớ trong: tối thiểu 2GB RAM, yêu cầu 8GB RAM.
 Ổ cứng: tối thiểu 2GB ổ trống, khuyến nghị 4GB (500MB cho IDE và
1.5GB cho Android SDK và image giả lập hệ thống).
 Tỉ lệ màn hình: tối thiểu 1280×800.

-

Các bước cài đặt:
 Truy cập internet để tải Android Studio về hệ điều hành của máy.
 Sau khi tải về vào file Setup để tiến hành cài đặt.

7



1.2.3 Cấu trúc dự án Android trong Android Studio

-

-

-

-

Hình Cơ sở lý thuyết.4 Cấu trúc dự án Android
Thư mục Java: Thư mục này sẽ chứa tất cả các file mã nguồn java (.java)
mà chúng ta sẽ tạo trong quá trình phát triển ứng dụng, bao gồm cả mã
JUnit test code. Bất cứ khi nào tạo bất kỳ project/ứng dụng mới nào, file
lớp MainActivity.java sẽ tự động tạo trong package là
com.tutlane.helloworld.
Thư mục res: Đây là một thư mục quan trọng sẽ chứa tất cả các resource
không phải code, chẳng hạn như ảnh bitmap, UI strings, XML layouts.
Thư mục drawable (res/drawable): Nó sẽ chứa các dạng ảnh khác nhau. Tốt
nhất là nên thêm tất cả các hình ảnh vào thư mục drawable ngoại trừ các
biểu tượng ứng dụng/laucher.
Thư mục layout (res/layout): Thư mục này sẽ chứa tất cả các file XML
layout đã sử dụng để xác định giao diện người dùng của ứng dụng.
Thư mục mipmap (res/mipmap): Thư mục này sẽ chứa các biểu tượng ứng
dụng/laucher được sử dụng để hiển thị trên màn hình chính. Các loại biểu
tượng sẽ có tỷ trọng khác nhau như hdpi, mdpi, xhdpi, xxhdpi, xxxhdpi, để
sử dụng dựa trên kích thước của thiết bị.
Thư mục values (res/values): Thư mục này sẽ chứa một số file XML khác
nhau, chẳng hạn như strings, colors, styles.
Thư mục Manifests: Thư mục này sẽ chứa một file Manifest

(AndroidManifest.xml) cho ứng dụng Android. File manifest này sẽ chứa
thông tin về ứng dụng , chẳng hạn như android version, access permissions,
8


-

metadata, v.v. và các component của ứng dụng. File manifest sẽ hoạt động
như một trung gian giữa hệ điều hành Android và ứng dụng.
Gradle Scripts: Trong Android, Gradle là công cụ build hệ thống và Gradle
được tích hợp sẵn vào Android Studio, và được điều khiển một cách tự
động thông qua Android Studio. Trong gradle có build.gradle (Project) và
build.gradle (Module) được sử dụng để build các cấu hình áp dụng cho tất
cả các module ứng dụng hoặc dành riêng cho một mô-đun ứng dụng.

1.2.4 Thành phần giao diện trong Android Studio
Android Layout là một lớp điều khiển việc sắp xếp các thành phần con của
nó xuất hiện trên màn hình. Bất cứ thành phần nào đó là mộtView (hoặc thừa kế
từ View) đều có thể là con của một Layout. Tất cả các lớp Layout đều mở rộng từ
lớp ViewGroup (mà kế thừa từView), do đó bạn cũng có thể tạo một lớp Layout
tùy biến của mình, bằng cách tạo một lớp mở rộng từ ViewGroup.
Những dòng chữ hiển thị trên thiết bị Android (TextView), cho đến những
khung nhập liệu (EditText), những hình ảnh (ImageView), danh sách có thể cuộn
lên, cuộn xuống (ListView, GridView, RecycleView) hay những cái button
(Button) các bạn thể click… đều là những View trong android, những view này
đều có một chức năng riêng. Trong bài viết này tơi sẽ cùng các bạn tìm hiểu một
số view cơ bản trong android cũng như một số thuộc tính của nó để giúp các bạn
có thể thiết kế những giao diện đơn giản khi mới lập trình di động với nền tảng
này.


1.2.5 Vòng đời ứng dụng Android
-

-

Chu kỳ sống thành phần: Các thành phần ứng dụng có một chu kỳ sống,
tức là mỗi thành phần từ lúc bắt đầu khởi tạo và đến thời điểm kết thúc, đôi
lúc chúng có thể là active (visible hoặc invisible) hoặc inactive.
Activity Stack: 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 activity trước sẽ ở 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.

9


Hình Cơ sở lý thuyết.5 Activity Stack
-

Các trạng thái của chu kỳ sống:

Hình Cơ sở lý thuyết.6 Các trạng thái của chu kỳ
 Running (đang kích hoạt): Khi màn hình là Foreground ( Activity nằm
trên cùng ứng dụng và cho phép người sử dụng tương tác).
 Paused (tạm dừng) : Activity bị mất focus nhưng mà vẫn nhìn thấy
được Activity này (Ví dụ bạn mở một Activity mới lên dưới dạng
Dialog). Trường hợp này nó vẫn có khả năng bị hệ thống tự động xử
trong tình huống bộ nhớ quá ít.

10


 Stopped (dừng – không phải Destroyed): Activity mất tiêu điểm và
khơng nhìn thấy được (ví dụ bạn mở một Activity mới lên mà Full
màn hình chẳng hạn). Trong trường hợp này nó có thể bị hệ thống xử
trong bất kỳ tình huống nào.

1.3 Mơ hình thiết kế MVC
MVC là từ viết tắt bởi 3 từ Model – View – Controller. Đây là mơ hình thiết
kế sử dụng trong kỹ thuật phần mềm. Mơ hình source code thành 3 phần, tương
ứng mỗi từ. Mỗi từ tương ứng với một hoạt động tách biệt trong một mơ hình.
- Model (M): là bộ phận có chức năng lưu trữ tồn bộ dữ liệu của ứng dụng.
Bộ phận này là một cầu nối giữa 2 thành phần bên dưới là View và
Controller. Model thể hiện dưới hình thức là một cơ sở dữ liệu hoặc có khi
chỉ đơn giản là một file XML bình thường. Model thể hiện rõ các thao tác
với cơ sở dữ liệu như cho phép xem, truy xuất, xử lý dữ liệu,…
- View (V): đây là phần giao diện (theme) dành cho người sử dụng. Nơi mà
người dùng có thể lấy được thông tin dữ liệu của MVC thông qua các thao
tác truy vấn như tìm kiếm hoặc sử dụng thông qua các website. Thông
thường, các ứng dụng web sử dụng MVC View như một phần của hệ
thống, nơi các thành phần HTML được tạo ra. Bên cạnh đó, View cũng có
chức năng ghi nhận hoạt động của người dùng để tương tác với Controller.
Tuy nhiên, View khơng có mối quan hệ trực tiếp với Controller, cũng
không được lấy dữ liệu từ Controller mà chỉ hiển thị yêu cầu chuyển cho
Controller mà thơi.
- Controller (C): bộ phận có nhiệm vụ xử lý các yêu cầu người dùng đưa đến
thông qua view. Từ đó, Controller đưa ra dữ liệu phù hợp với người dùng.
Bên cạnh đó, Controller cịn có chức năng kết nối với model.


1.4 Ngơn ngữ lập trình Kotlin
Kotlin là ngơn ngữ lập trình dành cho các ứng dụng đa nền tảng hiện đại,
tương thích hồn tồn với Android và được phát triển bởi JetBrains, công ty đứng
sau IntelliJ Java IDE (bộ công cụ và ứng dụng dành cho nhà phát triển) mà
Android Studio dựa trên. Tuy nhiên, đây khơng phải là ngơn ngữ lập trình riêng
biệt mà được xem là một phương pháp mới để sử dụng và phát triển code của
Java. Kotlin hoạt động liền mạch với Java, nhờ đó giúp các nhà phát triển u
thích Java dễ dàng sử dụng thêm một ngơn ngữ lập trình tuyệt vời là Kotlin cũng
như tận dụng thêm các thư viện hữu ích từ ngơn ngữ này. Cũng giống như nhiều
ngơn ngữ lập trình khác, Kotlin chạy trên Java Virtual Machine (JVM) và sử dụng
các công cụ và thư viện sẵn có trên Java. Từ lúc giới thiệu vào năm 2011 cho đến
11


khi phát hành phiên bản 1.0, JetBrains đã luôn chú trọng đến tính tương hợp với
Java.
- Ưu điểm:
 Code ngắn gọn, giảm thiểu các đoạn không cần thiết, cấu trúc ngắn,
trực quan, dễ học, dễ làm, dễ sử dụng, tiết kiệm thời gian. Theo ước
tính của Ovechkin thì với việc sử dụng Kotlin, code base có thể được
thu nhỏ hơn từ 15-25%.
 An toàn, tránh lỗi NullPointerException. NullPointerException xảy ra
khi code tham chiếu đến một biến, nhưng biến lại không có giá trị khi
ứng dụng đang chạy. Kết quả là ứng dụng sẽ khơng có bất kỳ tùy chọn
nào ngoại trừ việc báo lỗi. Và tất nhiên, với Kotlin, đảm bảo các nhà
phát triển sẽ không gặp phải vấn đề này.
 Khả năng tương tác cao, tương thích 100% và đẩy mạnh sử dụng các
thư viện hiện có trong JVM, bao gồm cả SAM support.
 Tool làm việc thân thiện, có thể lựa chọn các Java IDE để làm việc
-


hoặc làm việc với command line.
Nhược điểm:
 Thêm thời gian chạy Runtime: Thư viện tiêu chuẩn của Kotlin và
runtime sẽ làm tăng kích thước tập tin .apk của bạn. Mặc dù nó chỉ
tương đương với khoảng 800KB, nhưng nếu ứng dụng của bạn đã lớn
sẵn rồi thì 800KB phụ có thể làm nó phình to và khiến người dùng nghĩ
lại trước khi tải về ứng dụng của bạn.
 Không hẳn là code dễ đọc đối với beginer: Mặc dù cú pháp ngắn gọn
của Kotlin là một trong những thế mạnh lớn nhất của ngơn ngữ, nhưng
bạn có thể thấy một số khó khăn ban đầu, đơn giản bởi vì có rất nhiều
thứ đang được thực hiện trong một số lượng nhỏ code đó. Java có thể
dài dịng hơn, nhưng ngược lại tất cả mọi thứ đều rõ ràng, có nghĩa là
những người khơng quen code Java có xu hướng dễ dàng hơn để hiểu
so Kotlin.Ngồi ra, nếu sử dụng khơng hợp lý, q tải tốn tử của
Kotlin có thể dẫn đến số code đó có thể khó khăn để đọc.
 Thiếu hỗ trợ chính thức: Kotlin có thể được trợ tốt trong Android
Studio, nhưng cần ghi nhớ rằng Kotlin không được xác nhận chính
thức là của Google. Ngồi ra, tính năng tự động hồn tác và biên dịch
trong Android Studio có xu hướng chạy hơi chậm khi bạn làm việc với
Kotlin so với một dự án thuần Java.

12


 Cộng đồng nhỏ hơn và ít có sẵn trợ giúp: Vì Kotlin là một ngơn ngữ
tương đối mới, nên cộng đồng Kotlin vẫn còn khá nhỏ, đặc biệt là so
với cộng đồng của ngôn ngữ khác như Java.

1.5 SQLite database

SQLite là một cơ sở dữ liệu SQL mã nguồn mở, nó lưu trữ dữ liệu vào một
tập tin văn bản trên một thiết bị. Nó mặc định đã được tích hợp trên thiết bị
Android. Để truy cập dữ liệu này, bạn không cần phải thiết lập bất kỳ loại kết nối
nào cho nó như JDBC, ODBC, ... SQLite được Richard Hipp viết dưới dạng thư
viện bằng ngôn ngữ lập trình C.
SQLite có các ưu điểm sau:
- Tin cậy: các hoạt động transaction (chuyển giao) nội trong cơ sở dữ
liệu được thực hiện trọn vẹn, không gây lỗi khi xảy ra sự cố phần
cứng
- Tuân theo chuẩn SQL92 (chỉ có một vài đặc điểm không hỗ trợ)
- Không cần cài đặt cấu hình
- Kích thước chương trình gọn nhẹ, với cấu hình đầy đủ chỉ khơng đầy
300 kB
- Thực hiện các thao tác đơn giản nhanh hơn các hệ thống cơ sở dữ liệu
khách/chủ khác
- Không cần phần mềm phụ trợ
- Phần mềm tự do với mã nguồn mở, được chú thích rõ ràng

1.6 Cảm biến trong Android
Một trong những khác biệt khi phát triển các ứng dụng giữa pc và mobile mà
chúng ta có thể dễ dàng nhận thấy đó là mobile có cung cấp cho chúng ta các loại
cảm biến. Việc sử dụng cảm biến này có thể tạo ra những ứng dụng hữu ích và
thực tế đã có rất nhiều các nhà phát triển thêm nó vào trong các ứng dụng của
mình.
Cảm biến là thiết bị điện tử cảm nhận những trạng thái hay quá trình vật lý,
hóa học hay sinh học của mơi trường cần khảo sát, và biến đổi thành tín hiệu điện
để thu thập thơng tin về trạng thái hay q trình đó.
Thơng tin được xử lý để rút ra tham số định tính hoặc định lượng của môi
trường, phục vụ các nhu cầu nghiên cứu khoa học kỹ thuật hay dân sinh và gọi
ngắn gọn là đo đạc, phục vụ trong truyền và xử lý thơng tin, hay trong điều khiển

các q trình khác.

13


1.7 Kiến thức tính lượng năng lượng đốt cháy
1.7.1 Tỉ lệ trao đổi chất cơ bản (BRM)
Cơ thể con người cũng giống như động cơ hoạt động liên tục, luôn đốt cháy
nhiên liệu hoặc calo (ngay cả khi đang ngủ). Tỉ lệ BMR là lượng calo tối thiểu cơ
thể đốt cháy mỗi ngày để duy trì chức năng sống.
Chỉ số BMR của cơ thể bạn có thể thay đổi tùy theo tuổi tác, giới tính, thể
trạng, và đặc điểm di truyền. Để có chính xác lượng calo cơ thể đốt cháy mỗi
ngày, đầu tiên cần tính giá trị BMR.

1.7.2 Giá trị MET
Giá trị Metabolic Equivalent of Task (MET) là một cách để ước tính lượng
calo được đốt cháy trong một hoạt động thể chất cụ thể, theo Hội đồng Tập thể
dục Hoa Kỳ. Bảng này cho thấy các giá trị MET mà các nhà nghiên cứu đã chỉ
định cho các hoạt động khác nhau. Giá trị cao hơn tương quan với lượng oxy được
cơ thể sử dụng nhiều hơn trong hoạt động đó, vì vậy, ví dụ như chạy có giá trị
MET cao hơn so với ngồi yên.

Hình Cơ sở lý thuyết.7 Bảng giá trị MET

14


Chương 2

Nghiên cứu tổng quan


2.1 Các ứng dụng cùng chức năng đã có trên thị trường

Hình Nghiên cứu tổng quan.8 Ứng dụng “Trình theo dõi bước – Đo bước chân”

Hình Nghiên cứu tổng quan.9 Ứng dụng “Bộ đếm bước – Đo bước chân và đo
calo”

2.2 Cảm biến đếm bước chân trên điện thoại
Cảm biến đếm bước được sử dụng để lấy tổng số bước mà người dùng đã
thực hiện kể từ lần khởi động lại (bật nguồn) gần đây nhất của điện thoại. Khi điện
15


thoại được khởi động lại, giá trị của cảm biến bộ đếm bước được đặt lại về không.
Trong phương thức onSensorChanged() , số bước được đưa ra bởi event.value [0],
mặc dù đó là một giá trị float, nhưng phần phân số luôn bằng 0. Dấu thời gian của
sự kiện thể hiện thời gian mà bước cuối cùng được thực hiện. Cảm biến này đặc
biệt hữu ích cho những ứng dụng khơng muốn chạy nền và tự duy trì lịch sử các
bước. Cảm biến này hoạt động theo lô và ở chế độ liên tục. Nếu chúng ta chỉ định
0 hoặc khơng có độ trễ trong phương pháp SensorManager.registerListener (), sau
đó nó hoạt động trong một chế độ liên tục; ngược lại, nếu chúng ta chỉ định bất kỳ
độ trễ nào, thì nó sẽ nhóm các sự kiện theo lơ và báo cáo chúng ở độ trễ đã chỉ
định. Để sử dụng lâu dài cảm biến này, bạn nên sử dụng chế độ hàng loạt vì nó tiết
kiệm điện. Bộ đếm bước sử dụng chế độ báo cáo khi thay đổi, có nghĩa là nó báo
cáo sự kiện ngay khi có thay đổi về giá trị.

2.3 GPS
Theo Android Central, GPS viết tắt cho Global Positioning System (hệ thống
định vị toàn cầu). Đó là cơng nghệ do chính phủ Mỹ sở hữu và do lực lượng

Không quân của nước này giám sát. GPS hồn tồn miễn phí và bất kỳ ai cũng có
thể sử dụng, và cái tên GPS cũng thường được dùng để chỉ những hệ thống định vị
tương tự tại các khu vực khác.
GPS là hệ thống dẫn đường qua radio. Nó sử dụng sóng radio giữa các vệ
tinh và một bộ thu trong điện thoại sẽ cung cấp thông tin về vị trí và thời gian cho
bất kỳ phần mềm nào cần sử dụng nó. Bạn khơng phải gửi bất kỳ dữ liệu nào vào
không gian để GPS hoạt động, bạn chỉ cần có thể nhận được dữ liệu từ bốn vệ tinh
hoặc nhiều hơn trong số 28 vệ tinh trên quỹ đạo được dành riêng cho việc xác
định vị trí địa lý.
Mỗi vệ tinh có đồng hồ ngun tử riêng bên trong nó và gửi đi tín hiệu về
mã thời gian theo một tần suất cụ thể. Chip thu tín hiệu của bạn sẽ xác định vệ
tinh nào đang nhìn thấy và khơng bị cản trở, và sau đó bắt đầu thu thập dữ liệu từ
các vệ tinh có mức tín hiệu mạnh nhất.
Bộ thu GPS trong điện thoại của bạn sử dụng dữ liệu từ các tín hiệu này để
lập lưới tam giác về vị trí của bạn và thời gian. Nhưng tại sao lập "lưới tam giác"
lại cần đến 4 vệ tinh? Vì tín hiệu thứ 4 được sử dụng để xác định độ cao, nên về lý
thuyết, chỉ cần 3 tín hiệu sóng là đủ, nhưng nếu bạn muốn có thơng tin chính xác
tuyệt đối, rõ ràng dữ liệu độ cao cũng là cần thiết.

2.4 Các thuật tốn xử lý dữ liệu
2.4.1 Thuật tốn tính quãng đường di chuyển
Thuật toán này khá đơn giản khi sử dụng 2 nguồn dữ liệu đầu vào đó là số
bước chân đi được từ bảng cơ sở dữ liệu pedometer, khi cảm biến đếm bước chân
16


phát hiện thay đổi, dữ liệu sẽ được cập nhật liên tục vào bảng cơ sở dữ liệu này.
Dữ liệu đầu vào thứ hai là thông số sải bước chân được lấy từ bảng cơ sở dữ liệu
thông tin cá nhân của người dùng, thông số này sẽ được chuyển đổi về đơn vị là
mét để thực hiện phép nhân với số bước chân, cuối cùng ta thu được dữ liệu đầu ra

là quãng đường di chuyển có đơn vị là mét.

2.4.2 Thuật tốn tính thời gian di chuyển
Thời gian di chuyển của một người là tương đối, khơng có thiết bị hay
phương pháp nào có thể đo lường và tính tốn một cách chính xác được vì vậy
thuật tốn này chỉ mang tính chất tương đối. Khi cảm biến phát hiện thay đổi, một
biến dữ liệu changeTime sẽ được gọi để lấy thời gian tại thời điểm đó và khởi
động đồng hồ đếm thời gian, tiếp đó tạo một tiến trình chạy liên tục với độ trễ là 1
giây để lấy thời gian tại lúc tiến trình chạy và lưu vào biến dữ liệu delayTime, tiếp
đó so sánh 2 biến dữ liệu delayTime và changeTime tức là thực hiện phép trừ lấy
delayTime trừ đi changeTime, nếu kết quả phép trừ lớn hơn hoặc bằng 1 giây tức
là đã 1 giây không phát hiện cảm biến đo bước chân thay đổi thì đồng hồ đếm thời
gian sẽ dừng lại và cập nhật thay đổi vào cơ sở dữ liệu.

2.4.3 Thuật tốn tính vận tốc trung bình di chuyển được
Vận tốc trung bình được tính tốn sau khi qng đường di chuyển và thời
gian di chuyển được tính xong, sau đó chúng sẽ trở thành dữ liệu đầu vào để đưa
vào thuật tốn tính vận tốc trung bình, qng đường di chuyển và thời gian di
chuyển sẽ được chuyển đổi lần lượt sang đơn vị mét và giây sau đó thực hiện phép
chia lấy quãng đường chia cho thời gian từ đó cho đầu ra là vận tốc trung bình
tính bằng đơn vị mét/giây.

2.4.4 Thuật tốn tính số năng lượng đốt cháy
Đối với cơ thể của mỗi người và cường độ vận động của họ mà số năng
lượng đốt cháy sẽ có sự khác biệt, vì vậy thuật tốn này sẽ có một sai số nhất định.
Đầu tiên tiến hành phép tốn tính tỉ lệ trao đổi chất cơ bản HARRIS-BENEDICT
với đầu vào là giới tính, cân nặng, độ tuổi và chiều cao, kết quả cho ra được tính
bằng đơn vị Kcal/ngày tiếp đến thực hiện hàm chuyển đồi sang đơn vị Kcal/phút
với đầu vào là tỉ lệ trao đổi chất cơ bản và cân nặng sau đó thưc hiện chuyển đổi
đơn vị tốc độ trung bình từ mét/giây sang dặm/giờ, kết tiếp ta tính tốn giá trị

Metabolic Equivalent of Task (MET), giá trị này là một cách để ước tính lượng
calo được đốt cháy trong một hoạt động thể chất cụ thể, theo Hội đồng Tập thể
dục Hoa Kỳ, phép tính này sử dụng đầu vào là tốc độ trung bình ở đơn vị giặm/giờ
vừa tính được. Sau khi thực hiện các thuật tốn nhỏ hơn để tính tốn các giá trị
cần thiết, ta tiến hành phép tính cuối cùng với dữ liệu đầu vào là tỉ lệ trao đổi chất,

17


×