SlideShare a Scribd company logo
1 of 83
Download to read offline
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐỒNG NAI
HỒ HỮU CHIẾN
APP MOBILE QUÉT MÃ QR TRUY XUẤT
NGUỒN GỐC SẢN PHẨM
KHÓA LUẬN TỐT NGHIỆP
Chuyên ngành: CÔNG NGHỆ THÔNG TIN
Khóa học: 2017 – 2021
Người hướng dẫn: ThS. Trần Văn Ninh
ĐỒNG NAI - 2021
i
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐỒNG NAI
HỒ HỮU CHIẾN
APP MOBILE QUÉT MÃ QR TRUY XUẤT
NGUỒN GỐC SẢN PHẨM
KHÓA LUẬN TỐT NGHIỆP
Chuyên ngành: CÔNG NGHỆ THÔNG TIN
Khóa học: 2017 – 2021
Người hướng dẫn: ThS. Trần Văn Ninh
ĐỒNG NAI - 2021
ii
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐỒNG NAI CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
KHOA CÔNG NGHỆ Độc lập – Tự do – Hạnh phúc
NHIỆM VỤ KHÓA LUẬN TỐT NGHIỆP
Sinh viên thực hiện: HỒ HỮU CHIẾN
- Chuyên ngành: CÔNG NGHỆ THÔNG TIN
STT MSSV Họ Tên Lớp Khóa học Ghi chú
1. 131700197 Hồ Hữu Chiến 17DTH1 2017-2021
1. Tên đề tài:
.....................................................................................................................................
.....................................................................................................................................
2. Cấu trúc của khóa luận tốt nghiệp
Chương 1. Tổng quan về đề tài
- Giới thiệu đề tài
- Lý do chọn đề tài
- Nội dung đề tài
- Mục tiêu đề tài
- Phạm vi đề tài
- Phương pháp nghiên cứu và hướng giải quyết đề tài
- Kết quả dự kiến
Chương 2. Cơ sở lý thuyết
- Các lý thuyết liên quan
- Giới thiệu mã vạch, mã qr code
- Tìm hiểu cách thức hoạt động mã vạch, mã qr code
- Nền tảng Android phát triển ứng dụng
- Phát hành ứng dụng
Chương 3. Nội dung và phương pháp nghiên cứu
- Các công cụ phát triển
- Phân tích thiết kế hệ thống
- Thiết kế giao diện
- Thuật toán thực hiện các chức năng ứng dụng
iii
Chương 4. Kết quả, nhận xét và kết luận
- Kết quả đạt được
- Nhận xét
- Kết luận
3. Ngày giao nhiệm vụ khóa luận: …/…/20…
4. Ngày hoàn thành nhiệm vụ: …/…/20…
5. Họ tên người hướng dẫn: ThS/TS …………………………
Nội dung và yêu cầu khóa luận tốt nghiệp đã được thông qua bộ môn và khoa.
Đồng nai, ngày … tháng … năm 20…
NGƯỜI HƯỚNG DẪN TRƯỞNG KHOA
(Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên)
TỔ TRƯỞNG BỘ MÔN
(Ký và ghi rõ họ tên)
PHẦN GHI KẾT QUẢ KLTN
Ngày bảo vệ: …………………
Điểm tổng kết: ……………….
iv
LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu riêng của tôi. Các số liệu và
kết quả của luận văn là trung thực và các thông tin trích dẫn trong luận văn đã được
ghi rõ nguồn gốc.
v
LỜI CẢM ƠN
Trong suốt thời gian 4 năm học tập và rèn luyện tại Trường Đại học Công
Nghệ Đồng Nai cho đến nay, em đã nhận được rất nhiều sự quan tâm, giúp đỡ của
quý Thầy Cô và bạn bè. Với lòng biết ơn sâu sắc và chân thành nhất, em xin gửi đến
quý Thầy Cô ở Khoa Công Nghệ – Trường Đại học Công Nghệ Đồng Nai đã cùng
với tri thức và tâm huyết của mình để truyền đạt vốn kiến thức quý báu cho em trong
suốt thời gian học tập tại trường.
Và đặc biệt, trong học kỳ này, Khoa đã tổ chức cho em được thực hiện luận
án tốt nghiệp, là một cơ hội rất hữu ích đối với sinh viên ngành Công Nghệ Thông
Tin cũng như tất cả các sinh viên thuộc các chuyên ngành khác, kiến thức của 4 năm
học tập và rèn luyện tại trường. Với đề tài “APP mobile quét mã qr truy xuất nguồn
gốc sản phẩm”. Em xin chân thành cảm ơn Th.s Trần Văn Ninh đã tận tâm hướng
dẫn em qua từng buổi học trên lớp cũng như những buổi nói chuyện, thảo luận về lĩnh
vực sáng tạo trong nghiên cứu khoa học.
Em cũng xin bày tỏ lòng biết ơn đến ban lãnh đạo của Trường Đại học Công
Nghệ Đồng Nai và các Khoa Phòng ban chức năng đã trực tiếp và gián tiếp giúp đỡ
em trong suốt quá trình học tập và nghiên cứu đề tài này.
Với điều kiện thời gian cũng như kinh nghiệm còn hạn chế của một học viên,
bài báo cáo này không thể tránh được những thiếu sót. Em rất mong nhận được sự
chỉ bảo, đóng góp ý kiến của các quý thầy cô để tôi có điều kiện bổ sung, nâng cao ý
thức của bản thân, phục vụ tốt hơn công tác thực tế sau này.
Em xin chân thành cảm ơn !
vi
BỘ GIÁO DỤC VÀ ĐÀO TẠO CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐỒNG NAI Độc lập – Tự do – Hạnh phúc
Đồng nai, ngày … tháng … năm 20…
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
Họ tên sinh viên: ................................................................................................
Về đề tài: .............................................................................................................
..............................................................................................................................
..............................................................................................................................
Họ và tên giảng viên nhẫn xét: .........................................................................
Học hàm, học vị: ................................................................................................
Đơn vị: ................................................................................................................
1. Về tính cấp thiết của đề tài
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
2. Về nội dung
2.1. Những ưu điểm
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
2.2. Những nhược điểm
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
vii
3. Về thái độ, tinh thần thực hiện việc trong quá trình thực hiện khóa luận tốt
nghiệp
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
4. Kết luận
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
NGƯỜI HƯỚNG DẪN
(Ký và ghi rõ họ tên)
viii
MỤC LỤC
DANH MỤC CÁC BIỂU ĐỒ, LƯU ĐỒ, HÌNH ẢNH....................................... X
DANH MỤC CÁC BẢNG BIỂU .......................................................................XII
DANH MỤC THUẬT NGỮ VÀ CÁC TỪ VIẾT TẮT.................................. XIII
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI ..................................................... 1
1.1. GIỚI THIỆU ĐỀ TÀI.....................................................................................1
1.2. LÝ DO CHỌN ĐỀ TÀI ..................................................................................1
1.3. NỘI DUNG ĐỀ TÀI........................................................................................1
1.4. MỤC TIÊU ĐỀ TÀI........................................................................................2
1.5. PHẠM VI ĐỀ TÀI ..........................................................................................2
1.6. PHƯƠNG PHÁP NGHIÊN CỨU VÀ HƯỚNG GIẢI QUYẾT ĐỀ TÀI ...2
1.7. KẾT QUẢ DỰ KIẾN......................................................................................3
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT .............................................................. 4
2.1. MÃ VẠCH, MÃ QR CODE VÀ CÁCH THỨC HOẠT ĐỘNG..................4
2.1.1. Giới thiệu mã vạch ..................................................................................4
2.1.2. Lịch sử phát triển....................................................................................4
2.1.3. Ý nghĩa của việc dùng mã vạch..............................................................5
2.1.4. Cấu tạo của mã số hàng hóa...................................................................6
2.1.5. Các dạng mã vạch phổ biến hiện nay....................................................8
2.1.5.1. Mã vạch một chiều (mã vạch tuyến tính)...........................................8
2.1.5.2. Mã vạch hai chiều (mã vạch 2D).......................................................9
2.1.5.3. Mã vạch cụm ....................................................................................11
2.1.5.4. Mã vạch ba chiều (mã vạch 3D)......................................................11
2.1.6. Làm sao mà các doanh nghiệp phải đăng ký mã số - mã vạch........12
2.1.7. Ứng dụng của mã vạch .........................................................................13
2.1.8. Sự khác biệt giữa mã số mã vạch và mã QR code .............................16
2.1.8.1. Truy xuất thông tin bằng mã số mã vạch.........................................16
2.1.8.2. Truy xuất thông tin bằng mã QR Code ...........................................17
2.1.9. Cấu tạo và cách hoạt động của QR code.............................................18
2.1.10. Các bước truy xuất nguồn gốc sản phẩm .........................................20
2.2. NỀN TẢNG ANDROID ..............................................................................20
2.2.1. Hệ điều hành Android ..........................................................................20
2.2.2. Lịch sử phát triển..................................................................................21
2.2.3. Các tính năng.........................................................................................22
2.2.4. Cấu hình phần cứng..............................................................................23
2.2.5. Môi trường phát triển ứng dụng trên nền tảng Android..................23
2.2.6. Ứng dụng Android ................................................................................25
2.2.6.1. Các thành phần trong ứng dụng Android........................................25
ix
2.2.6.2. Activity trong android......................................................................27
2.2.6.3. Service trong Android......................................................................32
2.2.6.4. Broadcast Receiver trong Android ..................................................33
2.2.6.5. Content provider trong Android ......................................................33
2.2.7. Công cụ phát triển.................................................................................34
2.2.8. Phát hành ứng dụng Androi ................................................................37
CHƯƠNG 3: NỘI DUNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU............ 41
3.1. CÁC CÔNG CỤ PHÁT TRIỂN ..................................................................41
3.1.1. Cài đặt công cụ Android Studio...........................................................41
3.1.2. Tiến hành cài đặt JDK..........................................................................41
3.2. PHÂN TÍCH THIẾT KẾ HỆ THỐNG.......................................................43
3.2.1. Biểu đồ Use case ....................................................................................43
3.2.2. Biểu đồ lớp .............................................................................................44
3.3. THIẾT KẾ GIAO DIỆN ..............................................................................45
3.3.1. Giao diện chức năng chính...................................................................46
3.3.1.1. Giao diện màn hình chính................................................................46
3.3.1.2. Giao diện lựa chọn các chức năng ..................................................47
3.3.1.3. Truy cập vào camera để thực hiện chức năng quét mã qr...............48
3.3.1.4. Truy cập vào thư viện ảnh để thực hiện chức năng quét mã qr......49
3.3.1.5. Giao diện xem thông tin 1 sản phẩm ...............................................50
3.3.2. Giao diện chức năng phụ......................................................................51
3.3.2.1. Giao diện đăng nhập cho admin......................................................51
3.3.2.2. Giao diện xem liệt kê các sản phẩm.................................................52
3.3.2.3. Giao diện tạo mã vạch cho sản phẩm..............................................53
3.3.2.4. Giao diện thêm 1 sản phẩm..............................................................54
3.3.2.5. Giao diện chỉnh sửa thông tin 1 sản phẩm ......................................55
3.3.2.6. Giao diện xóa 1 sản phẩm................................................................56
3.4. THUẬT TOÁN THỰC HIỆN CÁC CHỨC NĂNG ỨNG DỤNG............57
3.4.1. Lưu đồ thuật toán thực hiện các chức năng chính.............................57
3.4.2. Lưu đồ thuật toán thực hiện các chức năng phụ ...............................61
CHƯƠNG 4: KẾT QUẢ, NHẬN XÉT VÀ KẾT LUẬN........................... 65
4.1. KẾT QUẢ.....................................................................................................65
4.2. NHẬN XÉT ..................................................................................................65
4.3. KẾT LUẬN...................................................................................................66
DANH MỤC TÀI LIỆU THAM KHẢO..................................................... 69
x
DANH MỤC CÁC BIỂU ĐỒ, LƯU ĐỒ, HÌNH ẢNH
Hình 2.1. Cấu trúc của mã vạch hàng hóa.......................................................................................... 7
Hình 2.2. Mã vạch 1 chiều ................................................................................................................. 8
Hình 2.3. Một loại mã vạch 2D.......................................................................................................... 9
Hình 2.4. Một loại mã vạch cụm.......................................................................................................11
Hình 2.5. Mã vạch 3D.......................................................................................................................12
Hình 2.6. Mã vạch hai chiều ở mặt trước thẻ bảo hiểm y tế .............................................................15
Hình 2.7. Mã vạch lưu trữ thông tin sản phẩm .................................................................................16
Hinh 2.8. Mã QR code lưu trữ thông tin sản phẩm...........................................................................18
Hinh 2.9. Cấu tạo mã qr code............................................................................................................19
Hình 2.10. Lịch sử phát triển Android ..............................................................................................22
Hình 2.11. Các hệ điều hành phát triển ứng dụng androi..................................................................23
Hình 2.12. Biểu tượng Java...............................................................................................................24
Hình 2.13. Biểu tượng hệ điều hành android ....................................................................................24
Hình 2.14. Biểu tượng Android studio..............................................................................................25
Hình 2.15. Các thành phần trong ứng dụng Android........................................................................25
Hình 2.16. Vòng đời của 1 activity ...................................................................................................28
Hình 3.1. Cài đặt Android Studio......................................................................................................41
Hình 3.2. Cài đặt JDK.......................................................................................................................42
Hình 3.3. Cài đặt môi trường ............................................................................................................43
Hình 3.4. Biểu đồ Use case người dùng............................................................................................43
Hình 3.5. Biểu đồ Use case quản trị viên..........................................................................................44
Hình 3.6. Biểu đồ lớp........................................................................................................................44
Hình 3.7. Giao diện màn hình chính .................................................................................................46
Hình 3.8. Giao diện lựa chọn các chức năng.....................................................................................47
Hình 3.9. Giao diện quét mã vạch bằng camera................................................................................48
Hình 3.10. Giao diện quét mã vạch bằng hình ảnh ...........................................................................49
Hình 3.11. Giao diện xem thông tin 1 sản phẩm...............................................................................50
Hình 3.12. Giao diện đăng nhập cho admin......................................................................................51
Hình 3.13. Giao diện xem liệt kê các sản phẩm................................................................................52
Hình 3.14. Giao diện tạo mã vạch cho sản phẩm..............................................................................53
Hình 3.15. Giao diện thêm 1 sản phẩm.............................................................................................54
Hình 3.16. Giao diện chỉnh sửa thông tin 1 sản phẩm ......................................................................55
Hình 3.17. Giao diện xóa 1 sản phẩm ...............................................................................................56
Hình 3.18. Lưu đồ thực hiện các chức năng chính của ứng dụng.....................................................57
Hình 3.19. Lưu đồ thuật toán thực hiện truy cập vào camera trên điện thoại để quét mã vạch .58
Hình 3.20. Lưu đồ thuật toán thực hiện truy cập vào thư viện ảnh trên điện thoại để quét mã vạch59
xi
Hình 3.21. Lưu đồ thuật toán thực hiện chức năng quét mã vạch xem thông tin sản phẩm .............60
Hình 3.22. Lưu đồ thuật toán thực hiện chức năng đăng nhập .........................................................61
Hình 2.23. Lưu đồ thuật toán thực hiện chức năng hiển thị danh sách sản phẩm.............................62
Hình 3.24. Lưu đồ thuật toán thực hiện chức năng quản lí sản phẩm...............................................63
Hình 3.25. Lưu đồ thuật toán tạo ra mã Qr .......................................................................................64
xii
DANH MỤC CÁC BẢNG BIỂU
Bảng 1: Các loại mã vạch một chiều phổ biến....................................................................................8
Bảng 2: Các loại mã vạch hai chiều phổ biến ...................................................................................10
Bảng 3: Các loại mã vạch cụm phổ biến...........................................................................................11
xiii
DANH MỤC THUẬT NGỮ VÀ CÁC TỪ VIẾT TẮT
STT Cụm từ Viết tắt
1 Cơ sở dữ liệu CSDL
2 Điện thoại di động ĐTDĐ
3 Quick response code (Mã phản hồi nhanh) QR code
4 Uniform Resource Locator (Địa chỉ web) URL
5 Mạch bán dẫn IC
6 Đầu nối điện RCA
7 Mã sản phẩm chung UPC
8 Mã số hàng hóa MSHH
9 Mã vạch MV
10 Mã số MS
11 The European Article Numbering system (1 loại mã vạch) EAN
12 Hội Mã số Mã vạch Việt Nam MSMV
13
American Standard Code for Information Interchange
(Chuẩn mã trao đổi thông tin Hoa Kỳ)
ASCII
14 Mạng 3G/4G GSM/HSDPA
15
Evolution-Data Optimized (Tối ưu hóa dữ liệu được cải
tiến)
CDMA/EV-DO
16 Central Processing Unit (Bộ xử lý trung tâm) CPU
17 Java Development Kit JDK
18 Android Software Development Kit SDK
19
Application Programming Interface (Giao diện lập trình
ứng dụng)
API
20
Integrated Development Environment (Môi trường tích
hợp dùng để viết code để phát triển ứng dụng)
IDE
21 Android Development Tools ADT
22 Android Package Kit (Gói ứng dụng Android) APK
23 Application (Ứng dụng trên điện thoại) App
24 User Interface (Giao diện người dùng) UI
25 Operating System (Hệ Điều Hành) OS
1
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI
1.1. GIỚI THIỆU ĐỀ TÀI
Hiện nay trên thị trường các loại sản phẩm có nguồn gốc lẫn lộn mà các khó có
thể phân biệt bằng mắt được. Tuy nhiên có thể kiểm tra nguồn gốc sản phẩm, giá cả
bằng cách quét mã vạch sản phẩm qua các phần mềm chuyên dụng. Thông tin mã
vạch được in trên các loại bao bì sản phẩm để gắn các thông tin của sản phẩm được
bán tại các cửa hàng, chợ, siêu thị,.... Nếu các sản phẩm được làm nhái, giả mạo về
bao bì nhãn mác và sản phẩm bên trong thì cũng có thể dễ dàng in sao chép mã vạch
của hàng thật rồi gắn lên bao bì của hàng giả giống y hệt. Khi dùng phần mềm quét
mã vạch vẫn hiện đầy đủ thông tin mà không hề có sự khác biệt. Chính vì vậy, không
thể nhận biết hàng thật hay hàng giả bằng phần mềm quét mã vạch. Phần mềm này
chỉ để tra cứu thông tin sản phẩm thông qua mã vạch chứ không thể phân biệt được
đâu là hàng giả và đâu là hàng thật.
1.2. LÝ DO CHỌN ĐỀ TÀI
Trong thời buổi hội nhập thì các mặt hàng không chỉ được sản xuất tại Việt Nam
mà có rất nhiều hàng hóa khác nhau được nhập khẩu ở nhiều các quốc gia trên thế
giới. Trong đó phải kể đến các nước mà ta thường nhập khẩu như: Mỹ, Trung Quốc,
Nhật Bản, Hàn Quốc,… Để nhận biết được các hàng hóa được sản xuất ở đâu, nhận
biết hàng giả hàng thật, thuế đối với mỗi loại hàng hóa thì ta có thể biết qua “mã
vạch”, “mã qr”. Vậy “mã vạch”, “mã qr” là gì, có ý nghĩa ra sao, các số mã vạch của
các nước trên thế giới là gì… trong bài báo cáo này em sẽ giải đáp những thắc mắc
đó và đưa ra giải pháp phần mềm quét mã qr để truy xuất nguồn gốc sản phẩm.
1.3. NỘI DUNG ĐỀ TÀI
Theo tìm hiểu của em, các nghiên cứu phát triển có liên quan đến đề tài này như
sau:
 Phần mềm mã nguồn mở Zxing công bố năm 2008 hỗ trợ phát triển
ứng dụng dùng smartphone hoặc tablet quét các loại mã vạch.
 Trên thế giới, khả năng đọc mã vạch của smartphone đã được khai thác trong
những năm gần đây. Tìm trên Google Play, chúng ta thấy có một số
2
ứng dụng quét mã vạch xây dựng trên thư viện Zxing. Những ứng dụng này
tập trung vào mục đích nhận dạng sản phẩm, giá thành, tìm kiếm trên web như
dùng ĐTDĐ quét mã vạch 1D in trên các sản phẩm hoặc đọc dữ liệu (URL và
các thông tin liên lạc) chứa trong các mã vạch 2D được nhúng trên các trang
web. Trong đề tài này tôi xây dựng ứng dụng quét mã qr để truy xuất nguồn
gốc của sản phẩm.
1.4. MỤC TIÊU ĐỀ TÀI
 Gồm 3 mục tiêu chính:
 Củng cố kiến thức, rèn luyện và mở rộng khả năng lập trình.
 Xây dựng App mobile quét mã qr truy xuất nguồn gốc của sản phẩm trên nền
tảng Android.
 Hoàn thành khóa luận tốt nghiệp và được thực hành nghiên cứu, lập trình trên
thiết bị di động dựa trên nền tảng Android với niềm đam mê, yêu thích.
1.5. PHẠM VI ĐỀ TÀI
Sử dụng điện thoại hoặc máy tính bảng Android có hệ điều hành 8.0 và có camera
5Mp trở lên.
Xây dựng phần mềm ứng dụng trên ĐTDĐ sử dụng thư viện Zxing dùng để quét
mã qr để truy xuất nguồn gốc sản phẩm.
1.6. PHƯƠNG PHÁP NGHIÊN CỨU VÀ HƯỚNG GIẢI QUYẾT ĐỀ TÀI
 Phương pháp nghiên cứu
 Tìm hiểu về hệ điều hành Android, ngôn ngữ lập trình Java và một số công
nghệ liên quan để phục vụ cho việc phát triển ứng dụng.
 Tham khảo tài liệu hướng dẫn lập trình trên mạng, trên youtube và các tài
liệu liên quan trên nền tảng Android.
 Tìm hiểu thư viện Zxing điều khiển camera trên ĐTDĐ để chuyển hình
và giải mã mã qr.
 Kế hoạch làm việc theo dự tính
3
 Bước 1: Tìm hiểu về mã vạch và nguyên lý hoạt động của mã vạch.
 Bước 2: Tìm hiểu thư viện Zxing và cách điều khiển camera của điện thoại
Smart Phone.
 Bước 3: Xây dựng ứng quét mã vạch truy xuất nguồn gốc sán phẩm.
 Bước 4: Chỉnh sửa giao diện và kiểm thử sửa lỗi chương trình.
1.7. KẾT QUẢ DỰ KIẾN
Phân tích được hệ thống hoạt động của mã vạch, đồng thờ hiểu biết được ý
nghĩa của mã vạch và cách thức tạo ra một mã vạch.
Hiểu được nền tảng android và từ đó áp dụng để tạo ra phần mềm dựa trên nền
tảng này.
Biết được cách thức hoạt động của phần mềm quét mã vạch, từ đó xây dựng
được phần mềm quét mã qr truy xuất nguồn gốc sản phẩm cho công ty.
Thiết kế giao diện ứng dụng thân thiện, dễ sử dụng cho người dùng.
Hoàn thành việc thiết kế xây dựng chức năng và giao diện phần mềm quét mã
qr:
+ Tìm kiếm và hiển thị thông tin sản phẩm.
+ Quản lý được cơ sở dữ liệu thêm, xóa, sửa.
4
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1. MÃ VẠCH, MÃ QR CODE VÀ CÁCH THỨC HOẠT ĐỘNG
2.1.1. Giới thiệu mã vạch
Mã vạch (Mã vạch) theo định nghĩa là phương pháp lưu trữ và truyền tải thông
tin bằng một lọai ký hiệu gọi là ký mã vạch (Mã vạch symbology). Mã vạch là 1 ký
hiệu tổ hợp các khoảng trắng và vạch thẳng để biểu diễn các mẫu tự, ký hiệu và các
con số. Sự thay đổi trong độ rộng của vạch và khoảng trắng biểu diễn thông tin số
hay chữ số dưới dạng mà máy có thể đọc được.
Mã số mã vạch được thu nhận bằng một máy quét mã vạch, là một máy thu
nhận hình ảnh của mã vạch in trên các bề mặt và chuyển thông tin chứa trong mã
vạch đến máy tính hay các thiết bị cần thông tin này.
2.1.2. Lịch sử phát triển
Năm 1948, mã vạch được Norman Joseph Woodland và Bernard Silver sinh
viên Đại học tổng hợp Drexel, xuất phát từ mong ước của vị chủ tịch của một công
ty buôn bán đồ ăn. Ông này muốn có một hệ thống tự động kiểm tra toàn bộ quy trình.
Đầu tiên họ sử dụng mã Morse để in những vạch rộng hay hẹp thẳng đứng. Sau đó,
họ chuyển sang sử dụng dạng "điểm đen" của mã vạch với các vòng tròn đồng tâm.
Năm 1952, công trình của ông về "Dụng cụ và phương pháp phân loại" được
chứng nhận bản quyền. Mã vạch ra đời và được sử dụng đến ngày nay.
Năm 1952, thiết bị đọc mã vạch đầu tiên được thiết kế và xây dựng bởi
Woodland và Silver. Nó bao gồm một đèn dây tóc 500 W và một ống chân không
nhân quang tử để in theo phương pháp quang học lên trên phim. Thiết bị này đã không
được áp dụng trong thực tế.
Năm 1960 Silver tiếp tục phát minh ra tia laser đã làm cho các thiết bị đọc mã
vạch trở nên rẻ tiền hơn, và sự phát triển của mạch bán dẫn (IC) làm cho việc giải mã
các tín hiệu thu được từ mã vạch có ý nghĩa thực tiễn.
5
Năm 1972, RCA thử nghiệm việc sử dụng đầu đọc mã vạch điểm đen nhưng
khi in ra nó rất dễ nhòe. Năm 1973, Woodland đã phát triển mã vạch tuyến tính được
chấp nhận như là Mã sản phẩm chung (tiếng Anh: Universal Product Code, hay UPC).
Năm 1974, đầu đọc mã vạch đã được sử dụng tại siêu thị Marsh ở Troy, Ohio.
Ngày nay, mã vạch đã phát triển nhanh chóng, rộng khắp, nhiều loại mã vạch
ra đời và trở thành một phương thức đơn giản, tiện lợi để lưu trữ thông tin cho các hệ
thống tự động.
2.1.3. Ý nghĩa của việc dùng mã vạch
Mã vạch giống như một chứng minh thư của hàng hóa. Thông qua mã vạch ta
có thể biết chính xác nguồn gốc xuất xứ của hàng hóa. Tùy vào quốc gia và vùng lãnh
thổ mà quy định về mã vạch sẽ khác nhau. Mã vạch của hàng hóa sẽ bao gồm hai
phần, bao gồm: mã số của hàng hóa để con người nhận diện và mã vạch để các loại
máy quét đọc nhận diện.
Tùy theo dung lượng thông tin, dạng thức thông tin được mã hóa và mục đích
sử dụng mà người ta chia ra làm rất nhiều loại. Trong đó phổ biến nhất trên thị trường
gồm: UPC, EAN, Code 39, Interleaved 2 of 5, Codabar và Code 128.
Hiện nay, ở Việt Nam hàng hóa trên thị trường đa phần được áp dụng chuẩn
mã vạch EAN. Mã vạch EAN gồm 13 con số chia làm 4 nhóm, gồm: mã quốc gia
hoặc vùng lãnh thổ gồm 3 chữ số đầu, mã số doanh nghiệp gồm 4 chữ số tiếp theo,
mã số hàng hóa gồm 5 chữ số tiếp theo và số cuối cùng là số về kiểm tra (tính từ trái
qua).
 Một số mã vạch các nước phổ biến thường gặp
 000 – 019 GS1 Mỹ (United States) USA
 030 – 039 GS1 Mỹ (United States)
 050 – 059 Coupons
 060 – 139 GS1 Mỹ (United States)
 300 – 379 GS1 Pháp (France)
 400 – 440 GS1 Đức (Germany)
6
 450 – 459 và 490 – 499 GS1 Nhật Bản
 690 – 695 GS1 Trung Quốc
 760 – 769 GS1 Thụy Sĩ
 880 GS1 Hàn Quốc
 885 GS1 Thái Lan (Thailand)
 893 GS1 Việt Nam
 930 – 939 GS1 Úc (Australia)
2.1.4. Cấu tạo của mã số hàng hóa
Đến nay, trong giao dịch thương mại tồn tại 2 hệ thống cơ bản về mã số hàng
hoá:
Một là, hệ thống mã số hàng hoá được sử dụng tại thị trường Hoa Kỳ và
Canada. Đó là hệ thống UPC (Universal Product Code), được lưu hành từ thập kỷ 70
của thế kỷ XX cho đến nay.
Hai là, hệ thống mã số hàng hoá được sử dụng rộng rãi ở các thị trường còn
lại của thế giới, đặc biệt là châu Âu, châu Á,...; trong đó phổ biến là hệ thống EAN
(European Article Number). Trong hệ thống mã số hàng hoá EAN có 2 loại ký hiệu
con số: Loại EAN-13 và EAN-8.
+ Cấu trúc của EAN-13:
Mã số EAN-13 là 1 dãy số gồm 13 chữ số nguyên (từ số 0 đến số 9), trong dãy
số chia làm 4 nhóm, mỗi nhóm có ý nghĩa như sau (xem hình 1.1):
7
Hình 2.1. Cấu trúc của mã vạch hàng hóa
Nhóm 1: Từ trái sang phải, ba chữ số đầu là mã số về quốc gia (vùng lãnh thổ).
Nhóm 2: Tiếp theo gồm bốn chữ số là mã số về doanh nghiệp.
Nhóm 3: Tiếp theo gồm năm chữ số là mã số về hàng hóa.
Nhóm 4: Số cuối cùng (bên phải) là số về kiểm tra.
Ví dụ theo quy ước trên, số kiểm tra (C) có ý nghĩa về quản lý đối với việc
đăng nhập, đăng xuất của các loại sản phẩm hàng hóa của từng loại doanh nghiệp.
Ví dụ: Mã số 8 9 3 3 4 8 1 0 0 1 0 6 - C:
Bước 1 - Xác định nguồn gốc hàng hóa: 893 là mã số hàng hoá của quốc gia Việt
Nam; 3481 là mã số doanh nghiệp thuộc quốc gia Việt Nam; 00106 là mã số hàng
hoá của doanh nghiệp.
Bước 2 - Xác định C.
Cộng tổng giá trị của các số ở thứ tự lẻ bắt đầu được tính từ phải sang trái của dãy mã
số (trừ số C), ta có : 6 + 1 + 0 + 8 + 3 + 9 = 27 (1)
Nhân tổng của (1) với 3, ta có: 27 x 3 = 81 (2)
P -893 - nhóm 1.
M -4602 - nhóm 2.
I -00107 - nhóm 3.
8
C -8 - nhóm 4.
Cộng tổng giá trị của các số ở thứ tự chẵn còn lại, ta có:
0 + 0 + 1 + 4 + 3 + 8 = 16 (3)
Cộng giá trị (2) với (3), ta có : 81 + 16 = 97 (4)
Lấy giá trị của (4) làm tròn theo bội số của 10 (tức là 100) sát nhất với giá trị của (4)
trừ đi giá trị của (4) ta có: 100 - 97 = 3. Như vậy C = 3.
Trong trường hợp này mã số EAN - VN 13 có MSHH đầy đủ là:
893 3481 00106 3
2.1.5. Các dạng mã vạch phổ biến hiện nay
2.1.5.1. Mã vạch một chiều (mã vạch tuyến tính)
Là chuẩn mã vạch trên các sản phẩm mọi người thường thấy, được tổ chức
GS1 (One global Standard) chứng nhận và sử dụng trong ngành công nghiệp bán lẻ
trên toàn thế giới.
Hình 2.2. Mã vạch 1 chiều
Bảng 1: Các loại mã vạch một chiều phổ biến
Loại Thuộc tính Độ rộng Sử dụng
Plessey Liên tục 2
Catalog, các giá hàng trong cửa hàng,
hàng tồn kho
UPC Liên tục Nhiều Bán lẻ ở Mỹ
9
EAN-UCC Liên tục Nhiều Bán lẻ khắp thế giới
Codabar Rời rạc 2 Thư viện, ngân hàng máu, vé máy bay
Interleaved 2 of 5 Liên tục 2 Bán buôn, thư viện
Code 39 Rời rạc 2 Đa dạng
Code 93 Liên tục 2 Đa dạng
Code 128 Liên tục Nhiều Đa dạng
Code 11 Rời rạc 2 Điện thoại
POSTNET Liên tục Cao/Thấp Bưu điện
PostBar Rời rạc Nhiều Bưu điện
CPC Binary Rời rạc 2 Bưu điện
Telepen Liên tục 2 Thư viện v.v (Vương quốc Anh)
2.1.5.2. Mã vạch hai chiều (mã vạch 2D)
Là một kỹ thuật mã hóa thông tin thành dạng dữ liệu mà máy có thể đọc được.
Mã vạch 2D xuất hiện lần đầu tiên vào năm 1988, do tập đoàn Intermec tạo ra, và
được gọi là Mã 49. Đó là một loại mã vạch có hình ảnh đồ họa có chứa cả 2 loại là
mã vạch một chiều và mã vạch theo chiều dọc. Chính vì thế, nên mã vạch 2D có thể
lưu trữ lên đến 7.089 ký tự so với mã vạch thông thường chỉ lưu trữ 20 ký tự. Khi
tiến hành đọc mã code, thì mã vạch 2D có phản ứng rất nhanh và truy cập dữ liệu chỉ
trong vài giây.
Hình 2.3. Một loại mã vạch 2D
10
Bảng 2: Các loại mã vạch hai chiều phổ biến
Loại Ghi chú
3-DI Phát triển bởi Lynn Ltd.
ArrayTag Từ ArrayTech Systems.
Aztec Code Từ Welch Allyn (hiện nay là Handheld Products). Phạm vi công
cộng.
Code 1 Phạm vi công cộng.
CP Code Từ CP Tron, Inc.
DataGlyphs Từ Xerox PARC.
Datamatrix Từ RVSI Acuity CiMatrix. Hiện nay thuộc phạm vi công cộng.
Điểm đen
Mã vạch này đã được thử nghiệm ở cửa hàng Kroger ở
Cincinnati. Nó sử dụng các vạch đồng tâm.
HueCode Từ Robot Design Associates. Sử dụng thang màu xám hoặc nhiều
màu.
INTACTA.CODE Từ INTACTA Technologies, Inc.
MaxiCode
Sử dụng bởi Dịch vụ chuyển phát hàng hóa Mỹ (United Parcel
Service).
MiniCode Từ Omniplanar, Inc.
PDF417 Có nguồn gốc từ Symbol Technologies. Phạm vi công cộng.
QR Code Từ Nippondenso ID Systems. Phạm vi công cộng.
SpotCode Mã vòng từ High Energy Magic Ltd.
SuperCode Phạm vi công cộng.
UltraCode Có các phiên bản đen trắng và màu. Phạm vi công cộng.
11
2.1.5.3. Mã vạch cụm
Là trung gian giữa mã vạch 2D thực thụ và mã vạch tuyến tính, chúng được
tạo ra bằng cách đặt các mã vạch tuyến tính truyền thống trên các loại giấy hay các
vật liệu có thể in mà cho phép có nhiều hàng.
Hình 2.4. Một loại mã vạch cụm
Bảng 3: Các loại mã vạch cụm phổ biến
Loại Ghi chú
Codeblock Mã vạch cụm 1D.
Code 16K Dựa trên Code 128 1D.
Code 49 Mã vạch cụm 1D từ Intermec Corp.
PDF417 Mã vạch 2D phổ biến nhất. Phạm vi công cộng.
2.1.5.4. Mã vạch ba chiều (mã vạch 3D)
Là một loại mã vạch được dập nổi hay khắc chìm trên bề mặt của vật thể mang
mã. Các mã được đọc bằng cách sử dụng sự khác biệt về chiều sâu của vùng, chứ
không xác định bới các vạch và khoảng cách giữa các vạch. Mã vạch ba chiều có thể
được sử dụng nơi mà bản in thường của mã dễ bị phá huỷ bởi điều kiện của môi
trường hay những điều kiện dễ bị mài mòn.
12
Hình 2.5. Mã vạch 3D
2.1.6. Làm sao mà các doanh nghiệp phải đăng ký mã số - mã vạch
Trong mỗi quốc gia, các doanh nghiệp, các nhà cung cấp sẽ thuận lợi khi quản
lý, phân phối; biết được xuất xứ, nguồn gốc của mỗi loại sản phẩm.
Trong giao lưu thương mại quốc tế, các nhà sản xuất, các nhà cung cấp tránh
được các hiện tượng gian lận thương mại, bảo vệ quyền lợi cho người tiêu dùng; sản
phẩm hàng hóa có thể lưu thông trôi nổi toàn cầu mà vẫn biết được lai lịch của nó
cũng như đảm bảo độ chính xác về giá cả và thời gian giao dịch rất nhanh.
Trong giao dịch mua bán, kiểm soát được tên hàng, mẫu mã, quy cách, giá cả
xuất, nhập kho hàng không bị nhầm lẫn và nhanh chóng, thuận tiện.
Tại Việt Nam, Chính phủ đã giao cho Bộ Khoa học và Công nghệ là cơ quan
quản lý nhà nước về EAN-VN. Tổng cục Tiêu chuẩn Đo lường Chất lượng là đại diện
của EAN-VN và là thành viên chính thức của EAN quốc tế. Việc đăng ký và cấp mã
số - mã vạch cho các doanh nghiệp để gắn trên các sản phẩm đều do cơ quan Tổng
cục Tiêu chuẩn Đo lường Chất lượng quản lý, phân phối cho các tổ chức hợp pháp
khác thực hiện hoặc cấp trực tiếp cho doanh nghiệp.
Đối với Việt Nam, đi theo MV là MS có 3 chữ số 893, Trung Quốc có mã số
690, Singapore có mã số 888, Vương quốc Anh có mã số 50, các quốc gia Bắc Mỹ
thì đăng ký mã số (UPC) của Hoa Kỳ.
13
Ngoài những nguyên tắc cơ bản về MS-MV trình bày ở trên, cũng có những
trường hợp ngoại lệ đối với một số sản phẩm hàng hóa: mã số tập hợp trên 13 chữ số
đi với mã vạch không có độ cao, độ dài nêu trên mà dải phân cách mã vạch dài hơn,
ngắn hơn. Ví dụ như vật phẩm điện thoại di động hiện nay, MSMV rất đặc trưng.
Đối với điện thoại di động, về mã số ta thấy có tới 15 chữ số mà chiều cao mã vạch
nhỏ hơn 10 mm. Biểu tượng mã số - mã vạch không in dán phía ngoài mà in dán phía
trong máy. Ngoài ra cũng có một số vật phẩm khác có mã số mã vạch không theo quy
tắc trên nhưng vẫn đảm bảo các tiện ích cho doanh nghiệp và người tiêu dùng, được
EAN quốc tế cho lưu hành.
2.1.7. Ứng dụng của mã vạch
Mã vạch được sử dụng ở những nơi mà các đồ vật cần phải đánh số với các
thông tin liên quan để các máy tính có thể xử lý. Thay vì việc phải đánh một chuỗi
dữ liệu vào phần nhập liệu của máy tính thì người thao tác chỉ cần quét mã vạch cho
thiết bị đọc mã vạch. Chúng cũng làm việc tốt trong điều kiện tự động hóa hoàn toàn,
chẳng hạn như trong luân chuyển hành lý ở các sân bay.
Các dữ liệu chứa trong mã vạch thay đổi tùy theo ứng dụng. Trong trường hợp
đơn giản nhất là một chuỗi số định danh được sử dụng như là chỉ mục trong cơ sở dữ
liệu trong đó toàn bộ các thông tin khác được lưu trữ. Các mã EAN-13 và UPC tìm
thấy phổ biến trên hàng bán lẻ làm việc theo phương thức này.
Mã vạch còn chứa toàn bộ thông tin về sản phẩm, mà không cần cơ sở dữ liệu
ngoài. Điều này dẫn tới việc phát triển mã vạch tượng trưng mà có khả năng biểu diễn
nhiều hơn là chỉ các số thập phân, có thể là bổ sung thêm các ký tự hoa và thường
của bảng chữ cái cho đến toàn bộ bảng mã ký tự ASCII và nhiều hơn thế. Việc lưu
trữ nhiều thông tin hơn đã dẫn đến việc phát triển của các ma trận mã (một dạng của
mã vạch 2D), trong đó không chứa các vạch mà là một lưới các ô vuông.
Ngày này, mã vạch hai chiều được ưa chuộng nhiều và ứng dụng rộng rãi, đặc
biệt là đối với những người sở hữu smartphone. Đơn giản và hiệu quả, người sử dụng
chỉ cần nhận dạng mã vạch hai chiều thông qua camera được trang bị với một đầu
đọc mã vạch gắn trên điện thoại. Qua đó, đầu đọc sẽ trả về kết quả là những đoạn
14
URL đã được phân tích, và lập tức truy cập vào các trình duyệt có liên quan trên một
website.
Do vậy, mã vạch hai chiều rất có ích cho lĩnh vực tiếp thị qua di động. Một
số hệ thống mã vạch hai chiều khác thì lại trực tiếp cung cấp thông tin cho khách
hàng nhận được mà không cần phải truy cập website.
Mã vạch hai chiều ngày càng được ưa chuộng vì người ta nhận ra những đặc
tính độc đáo của nó không có mặt trong các mã vạch tuyến tính truyền thống và được
nhằm vào ba ứng dụng chính:
1. Đối với các món hàng nhỏ: Nếu in mã vạch tuyến tính thông dụng trên các
món hàng nhỏ thì thường gặp trở ngại về kích thước của mã vạch vẫn còn quá lớn so
với các món hàng cực nhỏ. Với mã vạch hai chiều người ta có thể in mã vạch ngay
trên món hàng có kích thước rất nhỏ.
2. Nội dung thông tin: Công nghệ hai chiều cho phép mã hóa một lượng lớn
thông tin trong một diện tích nhỏ hẹp. Cả lượng thông tin lưu trong cùng một ký hiệu
mã vạch 2D có thể coi như là 1 file dữ liệu nhỏ gọn. Do đó khi sử dụng loại mã 2D,
có thể không cần đến cơ sở dữ liệu bên trong máy vi tính.
3. Quét tầm xa: Khi sử dụng các ký hiệu 2D, máy in không đòi hỏi in ở độ
phân giải cao mà có thể in ở độ phân giải thấp vì trong ký hiệu 2D, các mảng điểm
hoặc các vạch rất lớn. Điều này dẫn đến việc cho phép quét mã vạch 2D ở một khoảng
cách xa khoảng 15m.
Một số ứng dụng mã vạch hai chiều điển hình gồm:
- Hãng đồ thể thao nổi tiếng Nike đã sử dụng mã vạch hai chiều in trên các áp
phích dọc theo các tuyến đường của một cuộc đua thể thao mạo hiểm. Các vận động
viên sẽ sử dụng smartphone của mình thông qua các mã vạch để truy cập vào hình
ảnh, video và những dữ liệu được hỗ trợ;
- Mã vạch hai chiều được in lên nhiều sản phẩm trong các cửa hàng để người
mua dễ dàng đánh giá sản phẩm;
15
- Một số người gửi những mã vạch hai chiều lên trang blog của mình;
- Tổng cục Thuế đã triển khai phần mềm “Hỗ trợ kê khai thuế” áp dụng công
nghệ mã vạch hai chiều cho các doanh nghiệp đang hoạt động theo địa bàn các tỉnh.
Đây là phần mềm ứng dụng nhằm hỗ trợ doanh nghiệp trong việc xử lý tính toán lập
các tờ khai thuế. Phần mềm có hệ thống kiểm tra việc kê khai, với việc sử dụng phần
mềm hỗ trợ, việc kê khai thuế của doanh nghiệp sẽ được bảo đảm nhanh chóng, chính
xác, tránh được những sai sót thường gặp. Sau khi kê khai xong toàn bộ số liệu sẽ
được phần mềm mã hóa và lưu dưới dạng mã vạch hai chiều. Trước khi in, hệ thống
sẽ kiểm tra xem tất cả các mục bắt buộc phải nhập thông tin đã được nhập chưa?
Đồng thời đối chiếu kiểm tra giữa các chỉ tiêu có đúng với quy định kê khai hay
không? Nếu có lỗi thì vẫn được ghi nhưng không thể in hoặc kết xuất tờ khai được,
nếu kê khai sai hệ thống sẽ thông báo lỗi kê khai, hiển thị nội dung lỗi và hướng
dẫn cách sửa. Cơ quan thuế nhận tờ khai của doanh nghiệp sẽ dùng máy đọc mã
vạch để quét và lưu số liệu trên tờ khai thuế vào máy tính. Như vậy, việc nhập liệu
bằng mã vạch hai chiều đã khắc phục hoàn toàn việc sai lệch về số liệu giữa cơ quan
thuế và doanh nghiệp; giúp cho cơ quan thuế kiểm tra nhanh chóng xác nhận số liệu
cho doanh nghiệp khi hoàn thuế, hoặc khi cần tra cứu thông tin, số liệu khác tại cơ
quan thuế...
- Từ ngày 01/01/2014, Bảo hiểm xã hội Việt nam đã ban hành mẫu thẻ Bảo
hiểm y tế mới, có mã vạch hai chiều chứa các thông tin trên thẻ và chuỗi ký tự kiểm
tra. In thẻ có mã vạch hai chiều giúp quản lý được dữ liệu phát hành thẻ chính xác,
dễ dàng phát hiện thẻ giả, tránh được những sai sót về trùng dữ liệu thẻ, sai mã thẻ,
sai mã đối tượng hưởng quyền lợi, giúp tiết kiệm được chi phí hành chính đối với
cơ quan bảo hiểm xã hội và cả đối với các cơ sở khám chữa bệnh.
Hình 2.6. Mã vạch hai chiều ở mặt trước thẻ bảo hiểm y tế
16
2.1.8. Sự khác biệt giữa mã số mã vạch và mã QR code
Truy xuất nguồn gốc đang dần trở thành trở thành yếu tố bắt buộc đối với các
doanh nghiệp. Những sản phẩm dù chất lượng nhưng thiếu tem truy xuất nguồn gốc
rõ ràng vẫn không được đánh giá cao. Đó là lý do số lượng các doanh nghiệp triển
khai giải pháp này đang có sự gia tăng đáng kể. Bên cạnh một số đơn vị áp dụng truy
xuất nguồn gốc bằng mã qr code, thì vẫn còn một số ít bộ phận tiếp tục sử dụng các
loại mã số mã vạch cho sản phẩm của mình. Vậy đâu mới thực là phương án tối ưu
nhất, giữa mã qr code và mã số mã vạch liệu có sự khác biệt ?
2.1.8.1. Truy xuất thông tin bằng mã số mã vạch
Ra đời khá sớm, mã vạch được ứng dụng trên hầu hết tất cả các mặt hàng và
có tính phổ biến rộng rãi. Thông thường mã vạch được dùng để lưu trữ các thông tin
về sản phẩm như: tên doanh nghiệp, giá bán, quốc giá sản xuất,..Mã vạch đặc biệt
được dùng nhiều trong các siêu thị để thanh toán và nhận biết chủng loại sản phẩm.
Hình 2.7. Mã vạch lưu trữ thông tin sản phẩm
Về mặt trực quan, các mã vạch có kích thước là một hình chữ nhật với các
modun được mã hóa thành các vạch và mã số, chỉ có máy quét, thiết bị quét chuyện
dụng mới đọc được. Chúng có hình dáng và quy cách chuẩn, nên không thể tùy tiện
thay đổi hay sửa theo ý thích.
Về mặt nội dung, số lượng thông tin lưu trữ của mã mã vạch khoảng 20 ký tự
ở định dạng Aphabet và số. Nội dung khi đã được in và gắn vào mã vạch sẽ không
thể thay đổi được.
17
Xét vê mặt tính năng, mã vạch khá hạn chế trong việc thể hiện nội dung sản
phẩm cũng như không có các tính năng đa dạng, không thể thống kê được số lượt
check của người dùng.
2.1.8.2. Truy xuất thông tin bằng mã QR Code
Về bản chất, mã qr code cũng là một loại mã số mã vạch, chúng có hình dạng
hình vuông có các modun mã hóa 3 mắt ở các góc. Ra đời sau so với mã vạch, chính
vì thế mà mã qr code sở hữu những tính năng khá vượt trội mà mã vạch không thể có
được:
+ Về hình thức, kích thước, màu sắc của mã qr code có thể thay đổi theo ý thích cho
phù hợp với thiết kế tem nhãn của người dùng
+ Một trong những sự khác biệt lớn giữa qr code và mã vạch đó chính là lượng thông
tin chứa được trong mã QR Code có thể lên tới hơn 7000 ký tự bao gồm cả các chữ
tượng hình, số và các ký tự đặc biệt, ngoài ra có thể tạo mã QR Code để gắn được
facebook, slide, video,PDF, ảnh… giúp đa thông tin đến khách hàng đa dạng, thu hút
hơn.
+ Những thông tin được gắn trên mã qr code hoàn toàn có thể thay đổi được theo ý
muốn nhà sản xuất.
+ Thống kê được các lượt check của khách hàng, vị trí check, ở đâu, khi nào, bao
nhiêu lần, giúp kiểm soát định vị đường đi sản phẩm một cách hiệu quả.
Với sự phát triển như vũ bão của công nghệ hiện nay, cùng với đó là nhu cầu
người dùng đang ngày càng đòi hỏi khắt khe hơn về mặt tính năng, thẩm mỹ, việc sử
dụng ứng dụng phần mềm truy xuất nguồn gốc bằng mã qr code chính là xu hướng
tất yếu dần thay thế hoàn toàn cho việc sử dụng mã số mã vạch.
18
Hinh 2.8. Mã QR code lưu trữ thông tin sản phẩm
Có thể nói, việc thực hiện truy xuất nguồn gốc sản phẩm bằng mã qr code là
điều vô cùng cần thiết, nó không chỉ thể hiện sự minh bạch trong quá trình sản xuất
của doanh nghiệp mà còn thể hiện sự tôn trọng đối với nhu cầu về thông tin của người
tiêu dùng, đặc biệt là truy xuất nguồn gốc sản phẩm trong lĩnh vực nông sản, truy
xuất nguồn gốc thực phẩm đồ uống.
2.1.9. Cấu tạo và cách hoạt động của QR code
Mã QR có cấu tạo hình vuông, ở bên trong bao gồm nhiều ô caro đen trắng
xen nhau. Nhìn qua có vẻ như các ô vuông nhỏ này được sắp xếp ngẫu nhiên. Tuy
nhiên, nếu nhìn kỹ, có thể thấy tất cả sự lộn xộn đó đều theo một cấu trúc nhất định.
QR được tạo thành từ 6 phần khác nhau.
+ Vùng yên tĩnh: Đây là viền trắng trống bao bên ngoài mã. Nếu không có mã này thì
máy đọc mã sẽ không thể xác định được thông tin nào nằm trong và thông tin nào
nằm ngoài vùng quét.
+ Vùng thời gian: Đây là một đường hình chữ L chạy qua 3 ô vuông ngoài mã QR.
Giúp xác định các ô vuông riêng lẻ trong toàn bộ mã. Và giúp người dùng có thể quét
được nếu như mã bị hỏng.
+ Vùng tìm kiếm: Mỗi mã QR đều có 3 ô vuông riêng biệt nằm ở góc và phía trên
bên trái và phía trên bên phải. Nó giúp máy quét mã QR có thể xác định được đâu là
vùng cần quét.
19
+ Thông tin phiên bản: Đây là một vùng thông tin nhỏ nằm ở góc phải mã QR. Giúp
xác định đây là phiên bản mã QR nào. Có 4 phiên bản mã QR đó là số, chữ và số,
bytes và cuối cùng là kanji hay chữ Hán.
+ Ô dữ liệu: Đây là vùng truyền thông tin chính của mã.
+ Vùng căn chỉnh: Đây là vùng dữ liệu nhỏ nằm dưới cùng bên phải của mã QR. Nó
đảm bảo rằng nếu bị lệch về một góc thì mã vẫn đọc được bình thường.
Hinh 2.9. Cấu tạo mã qr code
Thoạt nhìn tưởng vô nghĩa nhưng trong mã QR Code này đang được mã hóa
một thông tin nào đó. Để đọc được dãy mã này, cần phải cài ứng dụng đọc mã, khởi
chạy chương trình, chỉnh và giữ điện thoại sao cho QR code nằm gọn trong khung
hình. Sau đó phải chờ cho đến khi có tiếng bíp phát ra. Mọi thông tin mã hóa trong
QR Code sẽ được truyền tải đến chiếc smartphone và hiển thị trên màn hình. Khi quét
mã, trên màn hình điện thoại có thể xuất hiện ra một trang web, thông tin liên hệ, tin
nhắn, thông tin sản phẩm hoặc thanh toán.
Máy quét mã QR sẽ dựa vào hình dáng, nhận diện 3 ô vuông trong mã từ đó
định hình được hình dáng và vị ví nội dung có thể quét.
20
Tiếp đến nó sẽ bắt đầu phân tích. Lúc đầu máy quét sẽ biến hình ảnh thành
những ô vuông nhỏ khác nhau. Mỗi ô vuông riêng lẻ này đều chưa một vùng dữ liệu
riêng dựa trên việc nó trắng hay đen. Và sau đó nó sẽ ghép những mảnh hình vuông
nhỏ đó lại và tạo thành một vùng dữ liệu lớn hơn.
2.1.10. Các bước truy xuất nguồn gốc sản phẩm
Bước 1:
Cài đặt ứng dụng quét QR Code
Bước 2:
Mở ứng dụng, hướng màn hình camera đến chỗ có mã QR Code trên tem
được dán lên sản phẩm để quét.
Bước 3:
Sau đó sẽ hiển thị các thông tin chi tiết về sản phẩm và doanh nghiệp sản xuất.
– Hàng thật: xác thực hàng chính hãng và chi tiết các thông tin về tên sản
phẩm, tên công ty sản xuất, địa chỉ, email, số điện thoại…
– Hàng giả: thông báo sản phẩm không có trên hệ thống, khách hàng có nguy
cơ mua phải hàng giả.
2.2. NỀN TẢNG ANDROID
2.2.1. Hệ điều hành Android
Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho
các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính
bảng. Ban đầu, Android được phát triển bởi Android, Inc. với sự hỗ trợ tài chính từ
Google và sau này được chính Google mua lại vào năm 2005.
Android ra mắt vào năm 2007 cùng với tuyên bố thành lập Liên minh thiết bị
cầm tay mở: một hiệp hội gồm các công ty phần cứng, phần mềm, và viễn thông với
mục tiêu đẩy mạnh các tiêu chuẩn mở cho các thiết bị di động. Chiếc điện thoại đầu
tiên chạy Android được bán vào năm 2008.
21
Android có mã nguồn mở và Google phát hành mã nguồn theo Giấy phép
Apache. Chính mã nguồn mở cùng với một giấy phép không có nhiều ràng buộc đã
cho phép các nhà phát triển thiết bị, mạng di động và các lập trình viên nhiệt huyết
được điều chỉnh và phân phối Android một cách tự do. Ngoài ra, Android còn có một
cộng đồng lập trình viên đông đảo chuyên viết các ứng dụng để mở rộng chức năng
của thiết bị, bằng một loại ngôn ngữ lập trình Java có sửa đổi. Tháng 10 năm 2012,
có khoảng 700.000 ứng dụng trên Android, và số lượt tải ứng dụng từ Google Play,
cửa hàng ứng dụng chính của Android, ước tính khoảng 25 tỷ lượt.
2.2.2. Lịch sử phát triển
Hệ điều hành Android có nguồn gốc tên từ Android, Inc. – chính công ty cha
đẻ của Android. Công ty chính thức thành lập ở Palo Alto, California khoảng tháng
10 năm 2003 do Andy Rubin – đồng sáng lập công ty Danger, Rich Miner – đồng
sáng lập công ty Viễn thông Wildfire, Nick Sears – cựu Phó giám đốc T-Mobile, và
Chris White – trưởng thiết kế và giao diện tại WebTV.
Đến 17/08/2005 Google chính thức thu mua lại Android, Inc., từ đó Android
chính thức thuộc quyền sở hữu của Google. Bộ phận cốt cán nhân sự chính của
Android, Inc. có Rubin, Miner và White, vẫn duy trì chức vụ sau lần mua bán này.
Vào thời điểm đó không có quá nhiều thông tin về công ty này nhưng ngầm dự báo
về tương lai Google sẽ lấn sân sang thị trường điện thoại di động.
Phát triển tại Google, nhóm do Rubin đứng đầu chính thức cho thành lập và
phát triển nền tảng thiết bị di động trên nền tảng Linux. Google mang tới lời hứa với
nhà sản xuất điện thoại và các nhà mạng cho tương lai nâng cấp hệ thống và cho nền
tảng tích hợp mươt mà.
22
Hình 2.10. Lịch sử phát triển Android
2.2.3. Các tính năng
Giao diện người dùng mặc định của Android sử dụng các thao tác trực tiếp
như chạm, vuốt và kéo để bắt đầu giao tiếp. Thiết bị cung cấp phản hồi xúc giác cho
người dùng thông qua các cảnh báo như rung để phản hồi các hành động. Ví dụ: nếu
người dùng nhấn vào nút điều hướng, thiết bị sẽ rung.
Khi người dùng khởi động thiết bị, hệ điều hành Android sẽ hiển thị màn hình
chính, đây là trung tâm điều hướng chính cho thiết bị Android, bao gồm các tiện ích
và biểu tượng ứng dụng. Widget là màn hình thông tin tự động cập nhật nội dung như
thời tiết hoặc tin tức. Màn hình chính có thể khác nhau tùy theo nhà sản xuất của thiết
bị. Người dùng cũng có thể chọn các chủ đề khác nhau cho màn hình chính thông qua
các ứng dụng của bên thứ ba trên Google Play .
Thanh trạng thái ở phía trên cùng màn hình chính hiển thị các thông tin và
trạng thái kết nối của thiết bị: mạng Wi-Fi đang kết nối, sóng 3G, cường độ sóng điện
thoại. Người dùng có thể vuốt thanh trạng thái theo chiều đi xuống để xem màn hình
thông báo.
Hệ điều hành Android cũng sở hữu các tính năng giúp tiết kiệm pin. Hệ điều
hành tạm dừng các ứng dụng không được sử dụng để tiết kiệm pin và mức sử dụng
CPU. Android có các tính năng quản lý bộ nhớ giúp tự động đóng các trình xử lý
không hoạt động lưu trong bộ nhớ.
23
Android chạy trên cả hai tiêu chuẩn cellular (thiết bị hỗ trợ khe cắm sim) được
triển khai rộng rãi nhất là GSM/HSDPA và CDMA/EV-DO.
2.2.4. Cấu hình phần cứng
Android sử dụng ARM cho nền tảng phần cứng; các phiên bản sau của hệ điều
hành Android hỗ trợ kiến trúc x86 và x86-64. Bắt đầu từ năm 2012, các nhà sản xuất
thiết bị đã phát hành điện thoại thông minh và máy tính bảng Android với bộ vi xử lý
Intel.
Yêu cầu phần cứng tối thiểu của Android phụ thuộc vào kích thước màn hình
của thiết bị, loại và mật độ CPU. Ban đầu, Google yêu cầu bộ xử lý 200MHz, 32MB
bộ nhớ và 32 MB RAM.
2.2.5. Môi trường phát triển ứng dụng trên nền tảng Android
Môi Trường Phát Triển Phần Mềm là một môi trường mà ở đó nhà Phát Triển
Phần Mềm có được những công cụ cần thiết nhất để viết ra một ứng dụng hoàn chỉnh.
Bài học liên quan đến Android, do đó ta tập trung vào tìm hiểu Môi Trường Phát
Triển Phần Mềm Android (Android Development Environment) bao gồm những công
cụ cần thiết:
- Hệ Điều Hành (Operating System)
Hình 2.11. Các hệ điều hành phát triển ứng dụng androi
Ứng dụng Android có thể được lập trình trên cả 3 nền tảng hệ điều hành phổ
biến nhất hiện nay: Microsoft Windows, Linux và Mac.
- Java Development Kit (JDK)
24
Hình 2.12. Biểu tượng Java
Bộ Công Cụ Phát Triển Cho Java, vì ứng dụng Android được viết dựa trên
ngôn ngữ Java, do đó ta cần phải có bộ JDK này để các công cụ khác có thể dùng nó
để biên dịch mã nguồn Java. Ngay cả như dùng Kotlin để thay thế cho Java trong các
ứng dụng, thì vẫn cần đến bộ JDK này, vì Kotlin vẫn tận dụng máy ảo JVM bên trong
JDK.
- Android Software Development Kit (SDK)
Hình 2.13. Biểu tượng hệ điều hành android
Tương tự như JDK, Android SDK là Bộ Công Cụ Phát Triển Cho Android.
SDK này sẽ cung cấp cho ta một bộ các thư viện và công cụ cần thiết để ta có thể
build, kiểm tra và debug cho các ứng dụng Android mà ta lập trình.
- Android Studio
25
Hình 2.14. Biểu tượng Android studio
Cuối cùng ta phải cần công cụ này, đây là công cụ mà ta sẽ tương tác trực tiếp
và dài lâu. Android Studio cung cấp cho ta một giao diện trực quan để ta có thể viết
code, chỉnh sửa, biên dịch, debug, quản lý bộ nhớ,… tất cả mọi thứ cần thiết để ta có
thể tạo nên một phần mềm.
2.2.6. Ứng dụng Android
2.2.6.1. Các thành phần trong ứng dụng Android
Hình 2.15. Các thành phần trong ứng dụng Android
26
Có 4 kiểu thành phần trong ứng dụng của Android bao gồm:
 Activities.
 Services.
 Content providers.
 Broadcast receivers.
Mỗi thành phần này được sử dụng cho mỗi mục đích khác nhau và có một
vòng đời khác nhau.
 Activities
Một Activity được xem như một điểm tiếp xúc với người dùng. Nó là một màn
hình đơn với giao diện trên đó. Ví dụ cài và chạy lên ứng dụng này thì màn hình chạy
lên sẽ thấy giao diện hiện thị cho ta xem, đó là một Activity. Activty giúp người dùng
tương tác với hệ thống, thực hiện các chức năng cần thiết trên đó, chuyển đổi qua lại
giữa các màn hình giao diện/ chức năng.
Thường thường khi sử dụng Activity ta sẽ kết thừa từ lớp cha của nó là Activity
(tất nhiên hiện tại Android SDK ở các phiên bản mới đã có nhiều subActivity hỗ trợ
trong từng trường hợp thuận tiện ).
 Services
Service có chức năng giúp ứng dụng vẫn chạy được, nhưng không cần hiện thị
trên giao diện (gọi là chạy ngầm bên dưới ). Ví dụ dùng các ứng nghe nhạc, mặc dù
tắt ứng dụng rồi nhưng vẫn nghe được nhạc ( đó là vì nó đang chạy dưới nền
/background ). Ta có thể liên kết/ kết nối giữa một Activity với một service, ví dụ:
khi download một file từ trên mạng, việc download thực hiện ở service, sau đó sẽ trả
kết quả phần trăm download lên activity để hiện thị cho người dùng biết.
Chú ý: mặc dù service chạy ở chế độ background nhưng cần phân biệt giữa
service và thread. Service không phải thread, do đó tùy trường hợp mà ta sử dụng và
xử lý cho phù hợp để tránh trường hợp sử dụng service làm ứng dụng bị đơ/ chậm
khi sử lý các luồng dữ liệu/ giao diện khác.
Khi sử dụng service ta sẽ kế thừa từ lớp cha là: Service
27
 Broadcast receivers
Broadcast Receiver là một trong 4 thành phần lớn trong Android, với mục đích
là lắng nghe các sự kiện, trạng thái của hệ thống phát ra thông qua Intent nhờ đó mà
các lập trình viên có thể xử lí được các sự kiện hệ thống ở bên trong ứng dụng của
mình.
Broadcast Receiver có thể hoạt động được cả khi ứng dụng bị tắt đi, nghĩa là
ở background chính vì vậy nó thường được sử dụng với service..
 Content providers
Content provider quản lý các cách để ứng dụng có thể lưu trữ dữ liệu trên hệ
thống. Ta sẽ biết cụ thể về thành phần này khi xây dựng các ứng dụng cần lưu trữ vào
SQLite. Ví dụ các ứng dụng từ điển, sẽ thấy dữ liệu, từ vựng ta tra hiện thị, thì dữ
liệu hiện thị đó được lưu trữ trong Slite và Content provider gọi để lấy ra cho người
dùng xem. Ngoài ra thành phần này còn thực hiện các chức năng, thêm, sửa, xóa dữ
liệu…
2.2.6.2. Activity trong android
Lớp Activity là thành phần quan trọng nhất của ứng dụng Android, cách mà
chúng hoạt động tạo thành nền tảng cơ bản của mô hình lập trình ứng dụng. Android
khởi chạy một ứng dụng thông thường bằng kích hoạt một Activity tương ứng với
vòng đời cụ thể của nó trong quá trình hoạt động.
Thường một Activity cung cấp một của sổ, ở đó ứng dụng sẽ dựng các thành
phần UI (User Interface - giao diện người dùng). Mặc định cửa sổ này có thể lấp đầy
mà hình thiết bị, nhỏ hơn hoặc nổi phía trên các cửa sổ khác. Hầu hết các ứng dụng
đều sử dụng nhiều màn hình khác nhau, có nghĩa nó sẽ phải có nhiều Activity khác
nhau. Khi một Activity chỉ định là Main Activity, nó sẽ là màn hình đầu tiên khi khởi
chạy ứng dụng. Activity này có thể gọi và kích hoạt một Activity khác.
 Vòng đời activity.
 Sơ đồ
28
Hình 2.16. Vòng đời của 1 activity
 Mô tả sơ đồ
Sơ đồ bắt đầu từ khi Activity launched, tức là khi Activity được kích hoạt, và
được hệ thống đẩy vào BackStack. Sau khi kích hoạt, lần lượt các callback onCreate(),
onStart(), onResume() sẽ được hệ thống gọi đến.
Sau khi gọi đến các callback trên, thì Activity mới chính thức được xem là
đang chạy (Activity running).
Lúc này, nếu có bất kỳ Activity nào khác chiếm quyền hiển thị, thì Activity
hiện tại sẽ rơi vào trạng thái onPause(). Nếu sự hiển thị của Activity khác làm cho
Activity mà ta đang nói đến không còn nhìn thấy nữa thì onStop() sẽ được gọi ngay
sau đó Nếu Acvitity đã vào onPause() rồi, tức là đang bị Activity khác đè lên, mà
người dùng sau đó quay về lại Activity cũ, thì onResume() được gọi. Còn nếu Activity
29
đã vào onStop() rồi, mà người dùng quay về lại Activity cũ thì onRestart() được gọi.
Trong cả hai trường hợp Activity rơi vào onPause() hoặc onStop(), nó sẽ rất dễ bị hệ
thống thu hồi (tức là bị hủy) để giải phóng tài nguyên, khi này nếu quay lại Activity
cũ, onCreate() sẽ được gọi chứ không phải onResume() hay onRestart(). Và cuối
cùng, nếu một Activity bị hủy một cách có chủ đích, chẳng hạn như người dùng nhấn
nút Back ở System Bar, hay hàm finish() được gọi,… thì onDestroy() sẽ được kích
hoạt và Activity kết thúc vòng đời của nó.
 Các trạng thái chính trong vòng đời activity
- Running
Khi Activity được kích hoạt, và được hệ thống để vào BackStack, nó sẽ bước
vào trạng thái active. Với trạng thái active, người dùng hoàn toàn có thể nhìn thấy và
tương tác với Activity của ứng dụng.
- Pause
Trạng thái này khá đặc biệt. Trạng thái tạm dừng. Như đã làm quen trên kia,
trạng thái này xảy ra khi mà Activity vẫn đang chạy, người dùng vẫn nhìn thấy, nhưng
Activity khi này lại bị che một phần bởi một thành phần nào đó. Chẳng hạn như khi
bị một dialog đè lên. Cái sự che Activity này không phải hoàn toàn. Chính vì vậy mà
Activity đó tuy được người dùng nhìn thấy nhưng không tương tác được.
- Stop
Trạng thái này khá giống với trạng thái tạm dừng trên kia. Nhưng khi này
Activity bị che khuất hoàn toàn bởi một thành phần giao diện nào đó, hoặc bởi một
ứng dụng khác. Và tất nhiên lúc này người dùng không thể nhìn thấy Activity được
nữa.
Hành động mà khi người dùng nhấn nút Home ở System Bar để đưa ứng dụng
về background, cũng khiến Activity đang hiển thị trong ứng dụng rơi vào trạng thái
dừng này.
- Dead
Nếu Activity được lấy ra khỏi BackStack, chúng sẽ bị hủy và rơi vào trạng
thái này. Trường hợp này xảy ra khi user nhấn nút Back ở System Bar để thoát một
30
Activity. Hoặc lời gọi hàm finish() từ một Activity để “kill chính nó”. Cũng có khi
ứng dụng ở trạng thái background quá lâu, hệ thống có thể sẽ thu hồi tài nguyên bằng
cách dừng hẳn các Activity trong ứng dụng, làm cho tất cả các Activity đều vào trạng
thái này.
Khi vào trạng thái dead, Activity sẽ kết thúc vòng đời của nó.
 Làm quen với từng callback
- onCreate()
Hàm này được gọi khá sớm, ngay khi activity được kích hoạt và thầm chí
người còn chưa thấy gì cả thì callback này đã đc gọi rồi. Ngoài ra thì nên biết là
callback này chỉ được gọi một lần duy nhất khi Activity được khởi tạo. Nó có thể
được gọi lại nếu hệ thống xóa Activity này đi để lấy lại tài nguyên của hệ thống,
nhưng rất hiếm khi xảy ra. Và nó còn có thể được gọi lại nếu xoay màn hình
(ngang/dọc).
Do đặc tính được gọi khá sớm và chỉ được gọi một lần duy nhất trong vòng
đời của nó như vậy, nên sẽ tận dụng để load giao diện cho Activity ở giai đoạn này,
thông qua phương thức setContentView().
Ngoài giao diện ra, có thể khởi tạo các logic nào đó chỉ chạy một lần ban đầu,
như các lời gọi API, load database, tạo item list, tạo Navigation Drawer, và nhiều
logic khác. onStart():
Sau khi gọi đến onCreate(), hệ thống sẽ gọi đến onStart(). Hoặc hệ thống cũng
sẽ gọi lại onStart() sau khi gọi onRestart() nếu trước đó nó bị che khuất bởi Activity
nào khác (một màn hình khác hoặc một ứng dụng khác) che hoàn toàn và rơi vào
onStop().
Khi hệ thống gọi đến callback này thì Activity được nhìn thấy bởi người dùng
và nhưng chưa tương tác được. Bởi đặc tính này mà onStart() ít được dùng đến.
- onResume()
Khi hệ thống gọi đến callback này thì yên tâm rằng người dùng đã nhìn thấy
và đã tương tác được với giao diện.
31
onResume() được gọi khi Activity được khởi tạo rồi và bước qua onStart() trên
kia. Hoặc khi Activity bị một giao diện nào khác che đi một phần (hoặc toàn phần),
rồi sau đó quay lại Activity hiện tại. Có thể thấy rằng callback này được gọi rất nhiều
lần trong một vòng đời của nó.
Chính đặc điểm này của onResume() mà có thể tận dụng để quay lại tác vụ mà
người dùng đang bị dang dở khi onPause() (được nói đến dưới đây) được gọi.
Chẳng hạn như đang soạn nội dung cho TourNote, mà có cuộc gọi đến, sẽ lưu
tạm nội dung này khi callback onPause(), để rồi khi onResume() được gọi lại sau đó
khi người dùng kết thúc cuộc gọi và quay lại TourNote, sẽ khôi phục nội dung đó để
người dùng tiếp tục sử dụng TourNote như chưa có bất kỳ gián đoạn nào.
- onPause()
Thông thường nếu có một thành phần nào đó che Activity hiện tại mà người
dùng vẫn nhìn thấy Activity đó (nhìn thấy chứ không tương tác được). Chẳng hạn
một popup hiện lên trên Activity. Thì onPause() của Activity sẽ được gọi. Sau này
khi người dùng quay lại Activity thì onResume() sẽ được gọi.
Có thể tưởng tượng rằng onPause() cũng sẽ được gọi khá nhiều lần trong một
vòng đời Activity. Theo như Google thì onPause() được gọi đến khá nhanh, nếu muốn
lưu trữ dữ liệu, thì nên lưu những gì nhanh gọn lẹ thôi. Nếu muốn lưu trữ các dữ liệu
nặng, hoặc gọi API kết nối server chỗ này, nhiều khả năng ứng dụng sẽ không kịp
thực hiện. Do đó, thay vì làm các thao tác nặng nề ở onPause(), có thể cân nhắc gọi
chúng ở onStop().
- onStop()
onStop() được gọi khi Activity không còn được nhìn thấy nữa, có thể một màn
hình nào khác che lên hoàn toàn, có thể một ứng dụng nào đó vào foreground, hoặc
người dùng nhấn nút Home để về màn hình chính.
Có thể tận dụng onStop() để lưu trữ dữ liệu ứng dụng. Hoặc để giải phóng các
tài nguyên đang dùng. Ngưng các API còn đang gọi dang dở.
32
Tuy nhiên khi onStop() được gọi không phải là lúc ta cũng nói lời tạm biệt
Activity. Người dùng hoàn toàn có thể quay lại sử dụng Activity sau đó mà không
cần phải khởi động lại Activity, khi này thì phương thức onRestart() và onStart() được
gọi kế tiếp nhau.
- onDestroy()
Có thể tận dụng callback này để giải phóng các tài nguyên hệ thống mà ở
onStop() chưa gọi đến.
Vòng đời của một Activity kết thúc ở đây.
2.2.6.3. Service trong Android
Một Service là một thành phần (component) có thể thực hiện các hoạt động
lâu dài trong background và nó không cung cấp một giao diện người dùng. Một thành
phần khác của ứng dụng có thể start nó, và nó tiếp tục chạy trong background ngay
cả khi người dùng chuyển sang ứng dụng khác. Ngoài ra một thành phần có thể liên
kết (bind) với một Service để tương tác với Service đó, thậm chí là thực hiện truyền
thông liên tiến trình IPC (interprocess communication – IPC có thể hiểu là một hoạt
động chia sẽ dữ liệu qua nhiều tiến trình, thông thường sử dụng giao thức truyền
thông và nó phải có Client và Server). Ví dụ: một Service có thể thực hiện các giao
dịch mạng, chơi nhạc, ra vào file I/O hoặc tương tác với một content provider, tất cả
đều từ background.
Service được chia làm 3 loại khác nhau:
 Foreground Service.
Một Foreground Service thực hiện một số thao tác mà người dùng chú ý, có
thể thấy rõ ràng. Ví dụ một ứng dụng nghe nhạc có thể chơi một bản nhạc và control
nó bằng Foreground Service. Một điều bắt buộc là Foreground Service phải hiện thị
một Notification. Foreground Service sẽ tiếp tục chạy ngay cả khi người dùng không
tương tác với ứng dụng.
 Background Service.
33
Một Background Service sẽ thực hiện các hoạt động mà không được người
dùng chú ý trực tiếp. Ví dụ một ứng dụng sử dụng một service để thu gom bộ nhớ
chẳng hạn thì service là một Background Service, hoạt động mà người dùng không
cần thiết phải để ý.
 Bound Service.
Một service được gọi là Bound khi một thành phần của ứng dụng ràng buộc
với nó bởi lời gọi bindService(). Một Bound Service cung cấp một giao diện Client -
Server cho phép các thành phần tương tác với nó: gửi yêu cầu, nhận kết quả và thậm
chí là IPC. Một Bound Service chỉ chạy miễn là có một thành phần ràng buộc với nó.
Có thể có nhiều thành phần ràng buộc với Bound Service cùng lúc, nhưng khi tất cả
tháo bỏ ràng buộc (unbound) thì nó sẽ Destroy. Trước đây Service thường được chia
là Started Service và Bound Service.
Một Started Service hay là Unbound Service là service được khởi động bằng
phương thức startService() từ thành phần khác. Và nó sẽ tiếp tục chạy trong
background kể cả khi thành phần khởi tạo nó bị phá hủy. Đây cũng là xem là một
Background Service theo cách chia trên.
2.2.6.4. Broadcast Receiver trong Android
Broadcast Receiver là một trong 4 component lớn trong Android, với mục đích
là lắng nghe các sự kiện, trạng thái của hệ thống phát ra thông qua Intent nhờ đó mà
các lập trình viên có thể xử lí được các sự kiện hệ thống ở bên trong ứng dụng của
mình.
Broadcast Receiver có thể hoạt động được cả khi ứng dụng bị tắt đi, nghĩa là
ở background chính vì vậy nó thường được sử dụng với service.
2.2.6.5. Content provider trong Android
Content provider là một thành phần để quản lý truy cập dữ liệu, nó cung cấp
các phương thức khác nhau để các ứng dụng có thể truy cập dữ liệu từ một ứng dụng
khác bằng cách sử dụng ContentResolver. Content Provider có thể giúp cho một ứng
dụng quản lý quyền truy cập đến dữ liệu được lưu bởi ứng dụng đó, hoặc các ứng
dụng khác, và đó là một cách để ta có thể chia sẻ dữ liệu cho các ứng dụng khác nhau.
34
Hình dưới đây biểu diễn cho việc cách content providers quản lý việc truy cập tới bộ
nhớ.
Content Provider điều phối việc truy cập tới bỗ lưu trữ dữ liệu thông qua các
API và các component như hình dưới, nó bao gồm:
- Chia sẻ dữ liệu từ ứng dụng của bán tới các ứng dụng khác
- Gửi dữ liệu sang widget
- Trả về một kết quả gợi ý khi search cho ứng dụng của bạn thông qua Seach
Framework sử dụng SearchRecentSuggestionsProvider
- Đồng bộ dữ liệu của ứng dụng với server bằng cách sử dụng
AbstractThreadedSyncAdapter
- Tải dữ liệu lên UI sử dụng CursorLoader
Content Provider hoạt động rất giống với một cơ sở dữ liệu, bạn có thể truy
vấn, chỉnh sửa nội dung, cũng như là thêm xóa các nội dung sử dụng các phương
thức: insert(), update(), delete(), query().
2.2.7. Công cụ phát triển
 Phát triển ứng dụng bằng công cụ Android studio
Android Studio là môi trường phát triển tích hợp (IDE) chính thức cho việc
phát triển ứng dụng Android. Nơi mà các nhà phát triển viết code và lắp ráp các ứng
dụng của họ từ các gói. Và thư viện khác nhau.
Thư viện phần mềm, công cụ lập trình tiện dụng, nhiều hơn để giúp xây dựng,
kiểm thử. Cũng như gỡ lỗi các ứng dụng Android.
Android Studio hỗ trợ một loạt các giả lập để xem trước ứng dụng, vì vậy ngay
cả khi không có thiết bị thử nghiệm, vẫn có thể chắc chắn rằng mọi thứ đều hoạt động
trơn tru.
Bên cạnh đó, loạt công cự như lời khuyên tối ưu hóa, đồ thị doanh số bán hàng,
và số liệu lấy từ phân tích sẽ giúp các nhà phát triển quản lý ứng dụng đang bán của
mình và tìm ra hướng đi cụ thể với từng thiết bị Android.
35
Android Studio hỗ trợ các hệ điều hành Windows, Mac OS X và Linux, và là
IDE chính thức của Google để phát triển ứng dụng Android gốc để thay thế cho
Android Development Tools (ADT) dựa trên Eclipse.
 Các tính năng nổi bật của Android studio
Android studio có rất nhiều lợi ích cũng như tính năng mà người dùng có thể
khai thác được và đặc biệt việc cài đặt android studio còn có thể giúp lập trình viên
mô phỏng để có thể tiến hành sửa lỗi và nâng cấp sản phẩm của mình khi cần thiết.
Trên trình soạn thảo mã và công cụ phát triển mạnh mẽ của IntelliJ, Android
Studio cung cấp nhiều tính năng nâng cao hiệu suất khi xây dựng ứng dụng Android,
chẳng hạn như:
+ Một hệ thống xây dựng Gradle linh hoạt
+ Trình mô phỏng nhanh và tính năng phong phú
+ Một môi trường hợp nhất có thể phát triển cho tất cả các thiết bị Android
+ Instant Run để đẩy các thay đổi vào ứng dụng đang chạy mà không cần xây dựng
một APK mới
+ Tích hợp GitHub để giúp xây dựng các tính năng ứng dụng phổ biến và nhập mã
mẫu
+ Các công cụ và khuôn khổ thử nghiệm mở rộng
Lint công cụ để bắt hiệu suất, khả năng sử dụng, tương thích phiên bản, và các
vấn đề khác
Hỗ trợ C ++ và NDK
Tích hợp hỗ trợ Google Cloud Platform , giúp dễ dàng tích hợp Google Cloud
Messaging và App Engine
Hỗ trợ tích hợp sâu Firebase vào trong các ứng dụng chỉ sau một click chuột.
 Cách thức cài đặt và sử dụng Android studio
36
Việc cài đặt Android Studio trên Windows khá đơn giản. Sau khi tải xong nhấp
đúp vào file cài đặt để tiến hành cài đặt. Quá trình cài đặt không có gì đặc biệt và có
thể tự mình hoàn tất công đoạn này.
Sau khi cài đặt xong máy tính sẽ khởi động chương trình Android Studio để
có thể bắt đầu phát triển ứng dụng Android đầu tiên.
+ Bước 1: Chuẩn bị laptop. Như đã nói ở phần trước, để trong quá trình lập
trình không xảy ra những khó chịu thì nên chuẩn bị một chiếc laptop RAM có dung
lượng lớn (> 8GB) và chip i5 (hoặc tương đương) trở lên. Nếu máy có cài ổ SSD thì
càng tốt.
+ Bước 2: Tải Java về máy. Như đã biết, để cài đặt android studio cần phải cài
đặt Java trước tiên.
+ Bước 3: Sau khi tải Java xong thì hãy nhấn vào Install để cài Java vào máy
tính. Sẽ phải đợi khoảng 5 phút.
+ Bước 4: Khi máy tính hoàn tất tải Java về máy thì không cần thao tác gì thêm
với Java nữa mà chỉ cần để nó một chỗ là được.
+ Bước 5: Nhấn nút Next ở phần cửa sổ chào mừng của phần mềm android
studio.
+ Bước 6: Tiếp tục nhấn nút Next để tiếp tục, sau đó vẫn ấn Next ở cửa sổ tiếp
theo.
+ Bước 7: Lựa chọn tên hiển thị trên Start menu rồi nhấn Install để cài đặt.
+ Bước 8: Nhấn Install để cài đặt. Sau đó bấm tiếp Finish. Tuy nhiên đây chưa
phải bước cuối cùng.
+ Bước 9: Sẽ xuất hiện một bảng và chỉ cần đợi ô update biến mất rồi sau đó
nhấn tiếp phím Next.
+ Bước 10: Chọn giao diện trắng hoặc đen cho android studio.
+ Bước 11: Sẽ phải đợi một lúc lâu để hệ thống tải dữ liệu. và Xong!
37
2.2.8. Phát hành ứng dụng Androi
Bước 1: Tạo tài khoản Developer
Trước khi phát hành bất cứ ứng dụng nào lên Google Play, cần tạo cho mình
tài khoản Nhà phát triển. Có thể dễ dàng đăng ký tài khoản Developer bằng tài khoản
Google hiện tại của mình.
Quá trình đăng ký khá đơn giản, tuy nhiên phải trả một khoản phí là $25 (tương
đương với khoảng 600.000 VND). Sau khi đã đồng ý với các điều khoản và chấp
nhận thỏa thuận phân phối từ phía nhà phát triển, có thể tiến hành thanh toán bằng
thẻ tín dụng hoặc thẻ ghi nợ của mình.
Để hoàn tất quá trình đăng ký, hãy điền vào các thông tin cần thiết về tài khoản,
bao gồm cả Tên nhà phát triển, sẽ hiển thị cho khách hàng trên Google Play.
Có thể mất đến 48 giờ để đăng ký được xử lý đầy đủ.
Bước 2: Để bán sản phẩm, hãy liên kết tài khoản Merchant
Muốn xuất bản một ứng dụng phải trả tiền hoặc có kế hoạch bán hàng trong
ứng dụng, người dùng cần tạo hồ sơ trung tâm thanh toán. Chi tiết cách làm như sau:
 Đăng nhập vào Play Console
 Nhấp vào Tải xuống Báo cáo - Tài chính
 Chọn Thiết lập tài khoản người bán ngay bây giờ
 Điền thông tin doanh nghiệp
Khi tạo hồ sơ, hệ thống sẽ được tự động liên kết với tài khoản nhà phát triển .
Tài khoản người bán sẽ cho phép quản lý doanh số bán hàng ứng dụng và các khoản
thanh toán hàng tháng, cũng như phân tích các báo cáo bán hàng ngay trong Play
Console.
Bước 3: Tạo App
Sau khi đã thiết lập Play Console, có thể thêm ứng dụng của mình theo cách
sau:
38
 Điều hướng đến tab ‘Tất cả các ứng dụng Thẻ trong menu
 Nhấp vào 'Tạo ứng dụng'
 Chọn ngôn ngữ mặc định của ứng dụng từ menu thả xuống
 Nhập tiêu đề cho ứng dụng
 Nhấp vào Tạo
 Tiêu đề của ứng dụng sẽ hiển thị trên Google Play sau khi xuất bản, tuy nhiên
vẫn có thể thay tên ứng dụng sau này.
 Sau khi đã tạo thành công ứng dụng của mình, sẽ được đưa đến trang nhập cửa
hàng. Tại đây, sẽ cần điền các chi tiết cho danh sách cửa hàng ứng dụng.
Bước 4: Chuẩn bị danh sách cửa hàng
Trước khi phát hành ứng dụng trên Google Play, cần chuẩn bị danh sách cửa
hàng. Đây là tất cả các thông tin chi tiết sẽ hiển thị cho khách hàng trong danh sách
ứng dụng trên Google Play.
Lưu ý: Không nhất thiết phải hoàn thành bước này trước khi chuyển sang bước
tiếp theo. Luôn có thể lưu bản nháp và xem lại sau khi sẵn sàng xuất bản.
Thông tin cần thiết cho danh sách cửa hàng được chia thành nhiều loại:
 Product Details
 Graphic Assets
 Languages & Translations
 Categorization
 Contact Details
 Privacy Policy
Bước 5: Upload APK để phát hành ứng dụng trên Google Play
Google cung cấp cho nhiều cách để tải lên và phát hành APK. Tuy nhiên, trước
khi tải tệp lên, cần tạo một bản phát hành ứng dụng.
39
Để tạo một bản phát hành, hãy chọn ứng dụng đã tạo ở Bước 3. Sau đó, từ
menu bên trái, điều hướng đến Quản lý phát hành và Phát hành ứng dụng. Tại đây,
cần chọn cách phát hành cho ứng dụng của mình. Có thể chọn giữa thử nghiệm nội
bộ, thử nghiệm kín, thử nghiệm mở và phát hành sản xuất. Ba bản phát hành đầu tiên
cho phép kiểm tra ứng dụng của mình trong một nhóm người dùng được chọn, trước
khi phát hành trực tuyến cho mọi người truy cập.
Khi đã chọn xong, nhấp vào Tạo bản phát hành và làm theo các hướng dẫn
trên màn hình để thêm các tệp APK, đặt tên và mô tả bản phát hành.
Sau khi hoàn thành, nhấn Save.
Bước 6: Xếp hạng nội dung phù hợp
Đây là công đoạn vô cùng quan trọng để phát hành ứng dụng trên Google Play
bởi các app không được xếp hạng nội dung có thể bị xóa khỏi cửa hàng này.
Để đánh giá ứng dụng, cần điền vào bảng câu hỏi xếp hạng nội dung, có thể
chọn ứng dụng của mình trong Play Console. Hãy chắc chắn rằng nhập thông tin
chính xác. Việc trình bày sai nội dung ứng dụng có thể dẫn đến việc bị đình chỉ hoặc
xóa khỏi Cửa hàng Google Play. Bên cạnh đó, xếp hạng nội dung phù hợp cũng sẽ
giúp tiếp cận đúng đối tượng, điều này cuối cùng sẽ cải thiện tỷ lệ tương tác.
Bước 7: Thiết lập giá và phân phối
Khi đã xác định được từ chiến lược bán ứng dụng của mình, các ứng dụng sẽ
kiếm tiền ra sao, hãy tiếp tục và thiết lập ứng dụng của mình dưới dạng miễn phí hoặc
trả phí. Cũng có thể chọn các quốc gia muốn phân phối ứng dụng của mình và chọn
tham gia để phân phối cho các thiết bị và chương trình Android cụ thể.
Lưu ý: Luôn có thể chuyển trạng thái ứng dụng từ trả phí sang miễn phí nhưng
điều ngược lại thì không.
Bước 8: Phát hành ứng dụng trên Google Play
Đây là bước cuối cùng của quá trình. Hãy kiểm tra danh sách cửa hàng, xếp
hạng nội dung và các phần phân phối và giá cả của ứng dụng xem đã có dấu kiểm
40
màu xanh lục bên cạnh chúng hay chưa. Nếu đã có dấu, chỉ cần làm theo các hướng
dẫn của hệ thống là ứng dụng đã được phát hành thành công rồi.
41
CHƯƠNG 3: NỘI DUNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU
3.1. CÁC CÔNG CỤ PHÁT TRIỂN
3.1.1. Cài đặt công cụ Android Studio
Android Studio là môi trường phát triển tích hợp chính thức dành cho phát
triển nền tảng Android. Nó được ra mắt vào ngày 16 tháng 5 năm 2013 tại hội nghị
Google I/O. Android Studio được phát hành miễn phí theo giấy phép Apache
Licence 2.0
Tải Android Studio 1.12 theo đường dẫn:
https://developer.android.com/studio
Hình 3.1. Cài đặt Android Studio
Sau khi tải xong và tiến hành cài đặt, ta sẽ dùng Android Code Studio để xây
dựng ứng dụng
3.1.2. Tiến hành cài đặt JDK
Java Development Kit (Bộ công cụ phát triển Java - viết tắt là JDK) này cho
phép viết code và chạy các chương trình lập trình Java..
42
Truy cập trang web chính thức của jdk để download bộ cài đặt:
https://www.oracle.com/java/technologies/javase-downloads.html
Hình 3.2. Cài đặt JDK
Sau khi tải xong JDK, tiến hành cài đặt biến môi trường(Environment Variables)
trong JAVA:PATH và CLASSPATH
43
Hình 3.3. Cài đặt môi trường
3.2. PHÂN TÍCH THIẾT KẾ HỆ THỐNG
3.2.1. Biểu đồ Use case
Hình 3.4. Biểu đồ Use case người dùng
44
Hình 3.5. Biểu đồ Use case quản trị viên
3.2.2. Biểu đồ lớp
Hình 3.6. Biểu đồ lớp
45
3.3. THIẾT KẾ GIAO DIỆN
Giao diện ứng dụng nhằm đáp ứng nhu cầu truy xuất thông tin sản phẩm của
khách hàng.
Giúp công ty quản lý được sản phẩm với các chức năng thêm, xóa, sửa và tạo
ra mã vạch của 1 sản phẩm.
46
3.3.1. Giao diện chức năng chính
3.3.1.1. Giao diện màn hình chính
Hình 3.7. Giao diện màn hình chính
Màn hình chính giúp khách hàng xem được trang web chính của công ty, giới thiệu
về công ty, các sản phẩm của công ty, liên hệ với công ty và quét mã vạch sản phẩm.
Giúp khách hàng truy xuất thông tin nguồn gốc của sản phẩm.
47
3.3.1.2. Giao diện lựa chọn các chức năng
Hình 3.8. Giao diện lựa chọn các chức năng
Giúp khách hàng có thể truy xuất nguồn gốc sản phẩm bằng cách truy cập trực tiếp
camera hoặc thư viện ảnh trên điện thoại để lấy mã vạch và tiến hành quét mã vạch.
Chọn “SCAN NOW”, để quét mã trực tiếp bằng camera hoặc chọn “PICTURE
SCAN” để quét mả từ ảnh thư viện.
Admin có thế thông qua một nút bấm trên thanh toolbar để vào giao diện đăng nhập
và sau đó tiến hành quản lý sản phẩm
48
3.3.1.3. Truy cập vào camera để thực hiện chức năng quét mã qr
Hình 3.9. Giao diện quét mã vạch bằng camera
Khách hàng chọn chức năng quét mã “SCAN NOW”, hệ thỗng cho phép truy cập
vào camera trên điện thoại và thực hiện tiến trình quét lấy mã.
Chọn “TÌM KIẾM SP” để tìm kiếm sản phẩm tương ướng với mã vạch vừa quét
được., chọn “FINISH” để thoát chương trình quét hoặc chọn “SCAN AGAN” để
thực hiện quét lại.
49
3.3.1.4. Truy cập vào thư viện ảnh để thực hiện chức năng quét mã qr
Hình 3.10. Giao diện quét mã vạch bằng hình ảnh
Khách hàng chọn “PICTURE SCAN”chức năng quét mã qr bằng hình ảnh, hệ
thống cho phép truy cập vào thư viện hình ảnh trên điện thoại và thực hiện tiến trình
quét mã lấy mã.
Chọn “TÌM KIẾM SP” để tìm kiếm sản phẩm tương ướng với mã vạch vừa quét
được., chọn “FINISH” để thoát chương trình quét hoặc chọn “SCAN AGAN” để
chọn hình ảnh khác thực hiện quét lại.
50
3.3.1.5. Giao diện xem thông tin 1 sản phẩm
Hình 3.11. Giao diện xem thông tin 1 sản phẩm
Sau khi khách hàng quét mã vạch, nếu tìm thấy sản phẩm có mã vạch trùng với mã
vạch khách hàng dùng để quét, sẽ hiện lên một giao diện chứa đầy đủ các thông tin
mã vạch sản phẩm, tên sản phẩm, mô tả sản phẩm, ngay san xuất, lô hàng và hình ảnh
sản phẩm.
Nhấn “cancel” để thoát.
51
3.3.2. Giao diện chức năng phụ
3.3.2.1. Giao diện đăng nhập cho admin
Hình 3.12. Giao diện đăng nhập cho admin
Chỉ có admin mới có tài khoản và mật khẩu để đăng nhập vào để tiến hành quản lí
sản phẩm
52
3.3.2.2. Giao diện xem liệt kê các sản phẩm
Hình 3.13. Giao diện xem liệt kê các sản phẩm
Ở giao diện này là giao diện quản lí sản phẩm
Trên màn hình liệt kê tất cả các sản phẩm hiện tại công ty đang có.
Trên thanh toolbar có 1 nút bấm để chuyển sang giao hiện tạo mã vạch cho sản phẩm
và 1 nút bấm chuyển sang giao diện thêm sản phẩm
Trên mỗi dòng thông tin sản phẩm đã liệt kê ra, có 2 nút bấm: 1 nút cho ta có thể xóa
sản phẩm đó đi, và 1 nút giúp ta có thể chỉnh sửa, cập nhập lại thông tin sản phẩm.
53
3.3.2.3. Giao diện tạo mã vạch cho sản phẩm
Hình 3.14. Giao diện tạo mã vạch cho sản phẩm
Sau khi nhập mã mình muốn tạo ra mã vạch, ta nhấn nút “TẠO MÃ QR”. Hệ thống
sẽ tạo ra một mã vạch được hiển thị dưới dạng hình ảnh.
Ta có thể tải hình ảnh mã vạch đã tạo về máy bằng cách nhấn vào nút “LƯU MÃ
QR”.
54
3.3.2.4. Giao diện thêm 1 sản phẩm
Hình 3.15. Giao diện thêm 1 sản phẩm
Ở đây ta tiến hành thêm 1 sản phẩm bằng cách nhập đầy đủ thông tin sản phẩm và
lấy hình ảnh sản phẩm từ máy lên.
Nhấn nút “THÊM SP”để tiến hành thêm sản phẩm hoặc nhấn nút “HỦY” để thoát,
không thêm sản phẩm nữa.
Demo_chưa sửa hết.pdf
Demo_chưa sửa hết.pdf
Demo_chưa sửa hết.pdf
Demo_chưa sửa hết.pdf
Demo_chưa sửa hết.pdf
Demo_chưa sửa hết.pdf
Demo_chưa sửa hết.pdf
Demo_chưa sửa hết.pdf
Demo_chưa sửa hết.pdf
Demo_chưa sửa hết.pdf
Demo_chưa sửa hết.pdf
Demo_chưa sửa hết.pdf
Demo_chưa sửa hết.pdf
Demo_chưa sửa hết.pdf
Demo_chưa sửa hết.pdf

More Related Content

Similar to Demo_chưa sửa hết.pdf

ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...
ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...
ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...nataliej4
 
Luận Văn Tim Hiểu Dịch Vụ Web Cho Thiết Bị Di Dộng Va Ứng Dụng.doc
Luận Văn Tim Hiểu Dịch Vụ Web Cho Thiết Bị Di Dộng Va Ứng Dụng.docLuận Văn Tim Hiểu Dịch Vụ Web Cho Thiết Bị Di Dộng Va Ứng Dụng.doc
Luận Văn Tim Hiểu Dịch Vụ Web Cho Thiết Bị Di Dộng Va Ứng Dụng.docsividocz
 
Luận Văn Xây Dựng Chương Trình Quản Lý Bán Lẻ Cho Siêu Thị Mini Huong Mart Ở ...
Luận Văn Xây Dựng Chương Trình Quản Lý Bán Lẻ Cho Siêu Thị Mini Huong Mart Ở ...Luận Văn Xây Dựng Chương Trình Quản Lý Bán Lẻ Cho Siêu Thị Mini Huong Mart Ở ...
Luận Văn Xây Dựng Chương Trình Quản Lý Bán Lẻ Cho Siêu Thị Mini Huong Mart Ở ...sividocz
 
BÁO CÁO CUỐI KÌ ĐỀ TÀI THỰC TẬP
BÁO CÁO CUỐI KÌ ĐỀ TÀI THỰC TẬPBÁO CÁO CUỐI KÌ ĐỀ TÀI THỰC TẬP
BÁO CÁO CUỐI KÌ ĐỀ TÀI THỰC TẬPphanconghien
 
BÁO CÁO THỰC TẬP - CUỐI KỲ
BÁO CÁO THỰC TẬP - CUỐI KỲBÁO CÁO THỰC TẬP - CUỐI KỲ
BÁO CÁO THỰC TẬP - CUỐI KỲkakawpah0911
 
Báo cáo đồ án cơ sở đề tài xây dựng ứng dụng chat tự động với deep learning
Báo cáo đồ án cơ sở đề tài  xây dựng ứng dụng chat tự động với deep learningBáo cáo đồ án cơ sở đề tài  xây dựng ứng dụng chat tự động với deep learning
Báo cáo đồ án cơ sở đề tài xây dựng ứng dụng chat tự động với deep learningnataliej4
 
Luận văn ngàng công nghệ thông tin Hệ Thống Quản Lý Dịch Vụ Đi Chợ Thuê.doc
Luận văn ngàng công nghệ thông tin Hệ Thống Quản Lý Dịch Vụ Đi Chợ Thuê.docLuận văn ngàng công nghệ thông tin Hệ Thống Quản Lý Dịch Vụ Đi Chợ Thuê.doc
Luận văn ngàng công nghệ thông tin Hệ Thống Quản Lý Dịch Vụ Đi Chợ Thuê.docsividocz
 
Xây dựng hệ thống hỗ trợ tìm kiếm và gợi ý học bổng du học, Nguyễn Thị Thuỳ D...
Xây dựng hệ thống hỗ trợ tìm kiếm và gợi ý học bổng du học, Nguyễn Thị Thuỳ D...Xây dựng hệ thống hỗ trợ tìm kiếm và gợi ý học bổng du học, Nguyễn Thị Thuỳ D...
Xây dựng hệ thống hỗ trợ tìm kiếm và gợi ý học bổng du học, Nguyễn Thị Thuỳ D...Man_Ebook
 
Do an ly thuyet nhóm 06
Do an ly thuyet nhóm 06Do an ly thuyet nhóm 06
Do an ly thuyet nhóm 06an902000
 
Đồ Án Tốt Nghiệp Xây Dựng Website Hỗ Trợ Lập Lịch Trình Kế Hoạch Giảng Dạy Củ...
Đồ Án Tốt Nghiệp Xây Dựng Website Hỗ Trợ Lập Lịch Trình Kế Hoạch Giảng Dạy Củ...Đồ Án Tốt Nghiệp Xây Dựng Website Hỗ Trợ Lập Lịch Trình Kế Hoạch Giảng Dạy Củ...
Đồ Án Tốt Nghiệp Xây Dựng Website Hỗ Trợ Lập Lịch Trình Kế Hoạch Giảng Dạy Củ...sividocz
 
Khóa Luận Công Tác Tổ Chức Quản Lý Về Văn Thư Lưu Trữ Tại Viện Hàn Lâm
Khóa Luận Công Tác Tổ Chức Quản  Lý Về Văn Thư Lưu Trữ Tại Viện Hàn LâmKhóa Luận Công Tác Tổ Chức Quản  Lý Về Văn Thư Lưu Trữ Tại Viện Hàn Lâm
Khóa Luận Công Tác Tổ Chức Quản Lý Về Văn Thư Lưu Trữ Tại Viện Hàn LâmDịch vụ Làm Luận Văn 0936885877
 

Similar to Demo_chưa sửa hết.pdf (20)

ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...
ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...
ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...
 
Luận Văn Tim Hiểu Dịch Vụ Web Cho Thiết Bị Di Dộng Va Ứng Dụng.doc
Luận Văn Tim Hiểu Dịch Vụ Web Cho Thiết Bị Di Dộng Va Ứng Dụng.docLuận Văn Tim Hiểu Dịch Vụ Web Cho Thiết Bị Di Dộng Va Ứng Dụng.doc
Luận Văn Tim Hiểu Dịch Vụ Web Cho Thiết Bị Di Dộng Va Ứng Dụng.doc
 
Đề tài: Mô hình đếm, phân loại sản phẩm theo cân nặng màu sắc
Đề tài: Mô hình đếm, phân loại sản phẩm theo cân nặng màu sắcĐề tài: Mô hình đếm, phân loại sản phẩm theo cân nặng màu sắc
Đề tài: Mô hình đếm, phân loại sản phẩm theo cân nặng màu sắc
 
Luận Văn Xây Dựng Chương Trình Quản Lý Bán Lẻ Cho Siêu Thị Mini Huong Mart Ở ...
Luận Văn Xây Dựng Chương Trình Quản Lý Bán Lẻ Cho Siêu Thị Mini Huong Mart Ở ...Luận Văn Xây Dựng Chương Trình Quản Lý Bán Lẻ Cho Siêu Thị Mini Huong Mart Ở ...
Luận Văn Xây Dựng Chương Trình Quản Lý Bán Lẻ Cho Siêu Thị Mini Huong Mart Ở ...
 
BÁO CÁO CUỐI KÌ ĐỀ TÀI THỰC TẬP
BÁO CÁO CUỐI KÌ ĐỀ TÀI THỰC TẬPBÁO CÁO CUỐI KÌ ĐỀ TÀI THỰC TẬP
BÁO CÁO CUỐI KÌ ĐỀ TÀI THỰC TẬP
 
BÁO CÁO THỰC TẬP - CUỐI KỲ
BÁO CÁO THỰC TẬP - CUỐI KỲBÁO CÁO THỰC TẬP - CUỐI KỲ
BÁO CÁO THỰC TẬP - CUỐI KỲ
 
Kỹ thuật mô hình hóa luồng tương tác IFML trong ứng dụng di động
Kỹ thuật mô hình hóa luồng tương tác IFML trong ứng dụng di độngKỹ thuật mô hình hóa luồng tương tác IFML trong ứng dụng di động
Kỹ thuật mô hình hóa luồng tương tác IFML trong ứng dụng di động
 
Báo cáo đồ án cơ sở đề tài xây dựng ứng dụng chat tự động với deep learning
Báo cáo đồ án cơ sở đề tài  xây dựng ứng dụng chat tự động với deep learningBáo cáo đồ án cơ sở đề tài  xây dựng ứng dụng chat tự động với deep learning
Báo cáo đồ án cơ sở đề tài xây dựng ứng dụng chat tự động với deep learning
 
Luận văn xử phạt vi phạm hành chính trong lĩnh vực đất đai
Luận văn xử phạt vi phạm hành chính trong lĩnh vực đất đaiLuận văn xử phạt vi phạm hành chính trong lĩnh vực đất đai
Luận văn xử phạt vi phạm hành chính trong lĩnh vực đất đai
 
Luận văn ngàng công nghệ thông tin Hệ Thống Quản Lý Dịch Vụ Đi Chợ Thuê.doc
Luận văn ngàng công nghệ thông tin Hệ Thống Quản Lý Dịch Vụ Đi Chợ Thuê.docLuận văn ngàng công nghệ thông tin Hệ Thống Quản Lý Dịch Vụ Đi Chợ Thuê.doc
Luận văn ngàng công nghệ thông tin Hệ Thống Quản Lý Dịch Vụ Đi Chợ Thuê.doc
 
Hệ thống tự động phân luồng câu hỏi và giải đáp yêu cầu, 9đ
Hệ thống tự động phân luồng câu hỏi và giải đáp yêu cầu, 9đHệ thống tự động phân luồng câu hỏi và giải đáp yêu cầu, 9đ
Hệ thống tự động phân luồng câu hỏi và giải đáp yêu cầu, 9đ
 
Ly thuyết
Ly thuyếtLy thuyết
Ly thuyết
 
Đề tài: Xây dựng ứng dụng Android truy xuất cơ sở dữ liệu, 9đ
Đề tài: Xây dựng ứng dụng Android truy xuất cơ sở dữ liệu, 9đĐề tài: Xây dựng ứng dụng Android truy xuất cơ sở dữ liệu, 9đ
Đề tài: Xây dựng ứng dụng Android truy xuất cơ sở dữ liệu, 9đ
 
Đề tài: Xây dựng ứng dụng Android truy xuất cơ sở dữ liệu, HAY
Đề tài: Xây dựng ứng dụng Android truy xuất cơ sở dữ liệu, HAYĐề tài: Xây dựng ứng dụng Android truy xuất cơ sở dữ liệu, HAY
Đề tài: Xây dựng ứng dụng Android truy xuất cơ sở dữ liệu, HAY
 
Đề tài: Thiết kế và thi công máy in nhiệt cầm tay, HAY, 9đ
Đề tài: Thiết kế và thi công máy in nhiệt cầm tay, HAY, 9đĐề tài: Thiết kế và thi công máy in nhiệt cầm tay, HAY, 9đ
Đề tài: Thiết kế và thi công máy in nhiệt cầm tay, HAY, 9đ
 
Xây dựng hệ thống hỗ trợ tìm kiếm và gợi ý học bổng du học, Nguyễn Thị Thuỳ D...
Xây dựng hệ thống hỗ trợ tìm kiếm và gợi ý học bổng du học, Nguyễn Thị Thuỳ D...Xây dựng hệ thống hỗ trợ tìm kiếm và gợi ý học bổng du học, Nguyễn Thị Thuỳ D...
Xây dựng hệ thống hỗ trợ tìm kiếm và gợi ý học bổng du học, Nguyễn Thị Thuỳ D...
 
Do an ly thuyet nhóm 06
Do an ly thuyet nhóm 06Do an ly thuyet nhóm 06
Do an ly thuyet nhóm 06
 
Đồ Án Tốt Nghiệp Xây Dựng Website Hỗ Trợ Lập Lịch Trình Kế Hoạch Giảng Dạy Củ...
Đồ Án Tốt Nghiệp Xây Dựng Website Hỗ Trợ Lập Lịch Trình Kế Hoạch Giảng Dạy Củ...Đồ Án Tốt Nghiệp Xây Dựng Website Hỗ Trợ Lập Lịch Trình Kế Hoạch Giảng Dạy Củ...
Đồ Án Tốt Nghiệp Xây Dựng Website Hỗ Trợ Lập Lịch Trình Kế Hoạch Giảng Dạy Củ...
 
Khóa Luận Công Tác Tổ Chức Quản Lý Về Văn Thư Lưu Trữ Tại Viện Hàn Lâm
Khóa Luận Công Tác Tổ Chức Quản  Lý Về Văn Thư Lưu Trữ Tại Viện Hàn LâmKhóa Luận Công Tác Tổ Chức Quản  Lý Về Văn Thư Lưu Trữ Tại Viện Hàn Lâm
Khóa Luận Công Tác Tổ Chức Quản Lý Về Văn Thư Lưu Trữ Tại Viện Hàn Lâm
 
Đề tài: Thiết kế bãi giữ xe ứng dụng công nghệ RFID và xử lý ảnh
Đề tài: Thiết kế bãi giữ xe ứng dụng công nghệ RFID và xử lý ảnhĐề tài: Thiết kế bãi giữ xe ứng dụng công nghệ RFID và xử lý ảnh
Đề tài: Thiết kế bãi giữ xe ứng dụng công nghệ RFID và xử lý ảnh
 

Demo_chưa sửa hết.pdf

  • 1. BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐỒNG NAI HỒ HỮU CHIẾN APP MOBILE QUÉT MÃ QR TRUY XUẤT NGUỒN GỐC SẢN PHẨM KHÓA LUẬN TỐT NGHIỆP Chuyên ngành: CÔNG NGHỆ THÔNG TIN Khóa học: 2017 – 2021 Người hướng dẫn: ThS. Trần Văn Ninh ĐỒNG NAI - 2021
  • 2. i BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐỒNG NAI HỒ HỮU CHIẾN APP MOBILE QUÉT MÃ QR TRUY XUẤT NGUỒN GỐC SẢN PHẨM KHÓA LUẬN TỐT NGHIỆP Chuyên ngành: CÔNG NGHỆ THÔNG TIN Khóa học: 2017 – 2021 Người hướng dẫn: ThS. Trần Văn Ninh ĐỒNG NAI - 2021
  • 3. ii TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐỒNG NAI CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA CÔNG NGHỆ Độc lập – Tự do – Hạnh phúc NHIỆM VỤ KHÓA LUẬN TỐT NGHIỆP Sinh viên thực hiện: HỒ HỮU CHIẾN - Chuyên ngành: CÔNG NGHỆ THÔNG TIN STT MSSV Họ Tên Lớp Khóa học Ghi chú 1. 131700197 Hồ Hữu Chiến 17DTH1 2017-2021 1. Tên đề tài: ..................................................................................................................................... ..................................................................................................................................... 2. Cấu trúc của khóa luận tốt nghiệp Chương 1. Tổng quan về đề tài - Giới thiệu đề tài - Lý do chọn đề tài - Nội dung đề tài - Mục tiêu đề tài - Phạm vi đề tài - Phương pháp nghiên cứu và hướng giải quyết đề tài - Kết quả dự kiến Chương 2. Cơ sở lý thuyết - Các lý thuyết liên quan - Giới thiệu mã vạch, mã qr code - Tìm hiểu cách thức hoạt động mã vạch, mã qr code - Nền tảng Android phát triển ứng dụng - Phát hành ứng dụng Chương 3. Nội dung và phương pháp nghiên cứu - Các công cụ phát triển - Phân tích thiết kế hệ thống - Thiết kế giao diện - Thuật toán thực hiện các chức năng ứng dụng
  • 4. iii Chương 4. Kết quả, nhận xét và kết luận - Kết quả đạt được - Nhận xét - Kết luận 3. Ngày giao nhiệm vụ khóa luận: …/…/20… 4. Ngày hoàn thành nhiệm vụ: …/…/20… 5. Họ tên người hướng dẫn: ThS/TS ………………………… Nội dung và yêu cầu khóa luận tốt nghiệp đã được thông qua bộ môn và khoa. Đồng nai, ngày … tháng … năm 20… NGƯỜI HƯỚNG DẪN TRƯỞNG KHOA (Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên) TỔ TRƯỞNG BỘ MÔN (Ký và ghi rõ họ tên) PHẦN GHI KẾT QUẢ KLTN Ngày bảo vệ: ………………… Điểm tổng kết: ……………….
  • 5. iv LỜI CAM ĐOAN Tôi xin cam đoan đây là công trình nghiên cứu riêng của tôi. Các số liệu và kết quả của luận văn là trung thực và các thông tin trích dẫn trong luận văn đã được ghi rõ nguồn gốc.
  • 6. v LỜI CẢM ƠN Trong suốt thời gian 4 năm học tập và rèn luyện tại Trường Đại học Công Nghệ Đồng Nai cho đến nay, em đã nhận được rất nhiều sự quan tâm, giúp đỡ của quý Thầy Cô và bạn bè. Với lòng biết ơn sâu sắc và chân thành nhất, em xin gửi đến quý Thầy Cô ở Khoa Công Nghệ – Trường Đại học Công Nghệ Đồng Nai đã cùng với tri thức và tâm huyết của mình để truyền đạt vốn kiến thức quý báu cho em trong suốt thời gian học tập tại trường. Và đặc biệt, trong học kỳ này, Khoa đã tổ chức cho em được thực hiện luận án tốt nghiệp, là một cơ hội rất hữu ích đối với sinh viên ngành Công Nghệ Thông Tin cũng như tất cả các sinh viên thuộc các chuyên ngành khác, kiến thức của 4 năm học tập và rèn luyện tại trường. Với đề tài “APP mobile quét mã qr truy xuất nguồn gốc sản phẩm”. Em xin chân thành cảm ơn Th.s Trần Văn Ninh đã tận tâm hướng dẫn em qua từng buổi học trên lớp cũng như những buổi nói chuyện, thảo luận về lĩnh vực sáng tạo trong nghiên cứu khoa học. Em cũng xin bày tỏ lòng biết ơn đến ban lãnh đạo của Trường Đại học Công Nghệ Đồng Nai và các Khoa Phòng ban chức năng đã trực tiếp và gián tiếp giúp đỡ em trong suốt quá trình học tập và nghiên cứu đề tài này. Với điều kiện thời gian cũng như kinh nghiệm còn hạn chế của một học viên, bài báo cáo này không thể tránh được những thiếu sót. Em rất mong nhận được sự chỉ bảo, đóng góp ý kiến của các quý thầy cô để tôi có điều kiện bổ sung, nâng cao ý thức của bản thân, phục vụ tốt hơn công tác thực tế sau này. Em xin chân thành cảm ơn !
  • 7. vi BỘ GIÁO DỤC VÀ ĐÀO TẠO CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐỒNG NAI Độc lập – Tự do – Hạnh phúc Đồng nai, ngày … tháng … năm 20… NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN Họ tên sinh viên: ................................................................................................ Về đề tài: ............................................................................................................. .............................................................................................................................. .............................................................................................................................. Họ và tên giảng viên nhẫn xét: ......................................................................... Học hàm, học vị: ................................................................................................ Đơn vị: ................................................................................................................ 1. Về tính cấp thiết của đề tài ..................................................................................................................................... ..................................................................................................................................... ..................................................................................................................................... 2. Về nội dung 2.1. Những ưu điểm ..................................................................................................................................... ..................................................................................................................................... ..................................................................................................................................... 2.2. Những nhược điểm ..................................................................................................................................... ..................................................................................................................................... .....................................................................................................................................
  • 8. vii 3. Về thái độ, tinh thần thực hiện việc trong quá trình thực hiện khóa luận tốt nghiệp ..................................................................................................................................... ..................................................................................................................................... ..................................................................................................................................... 4. Kết luận ..................................................................................................................................... ..................................................................................................................................... ..................................................................................................................................... NGƯỜI HƯỚNG DẪN (Ký và ghi rõ họ tên)
  • 9. viii MỤC LỤC DANH MỤC CÁC BIỂU ĐỒ, LƯU ĐỒ, HÌNH ẢNH....................................... X DANH MỤC CÁC BẢNG BIỂU .......................................................................XII DANH MỤC THUẬT NGỮ VÀ CÁC TỪ VIẾT TẮT.................................. XIII CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI ..................................................... 1 1.1. GIỚI THIỆU ĐỀ TÀI.....................................................................................1 1.2. LÝ DO CHỌN ĐỀ TÀI ..................................................................................1 1.3. NỘI DUNG ĐỀ TÀI........................................................................................1 1.4. MỤC TIÊU ĐỀ TÀI........................................................................................2 1.5. PHẠM VI ĐỀ TÀI ..........................................................................................2 1.6. PHƯƠNG PHÁP NGHIÊN CỨU VÀ HƯỚNG GIẢI QUYẾT ĐỀ TÀI ...2 1.7. KẾT QUẢ DỰ KIẾN......................................................................................3 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT .............................................................. 4 2.1. MÃ VẠCH, MÃ QR CODE VÀ CÁCH THỨC HOẠT ĐỘNG..................4 2.1.1. Giới thiệu mã vạch ..................................................................................4 2.1.2. Lịch sử phát triển....................................................................................4 2.1.3. Ý nghĩa của việc dùng mã vạch..............................................................5 2.1.4. Cấu tạo của mã số hàng hóa...................................................................6 2.1.5. Các dạng mã vạch phổ biến hiện nay....................................................8 2.1.5.1. Mã vạch một chiều (mã vạch tuyến tính)...........................................8 2.1.5.2. Mã vạch hai chiều (mã vạch 2D).......................................................9 2.1.5.3. Mã vạch cụm ....................................................................................11 2.1.5.4. Mã vạch ba chiều (mã vạch 3D)......................................................11 2.1.6. Làm sao mà các doanh nghiệp phải đăng ký mã số - mã vạch........12 2.1.7. Ứng dụng của mã vạch .........................................................................13 2.1.8. Sự khác biệt giữa mã số mã vạch và mã QR code .............................16 2.1.8.1. Truy xuất thông tin bằng mã số mã vạch.........................................16 2.1.8.2. Truy xuất thông tin bằng mã QR Code ...........................................17 2.1.9. Cấu tạo và cách hoạt động của QR code.............................................18 2.1.10. Các bước truy xuất nguồn gốc sản phẩm .........................................20 2.2. NỀN TẢNG ANDROID ..............................................................................20 2.2.1. Hệ điều hành Android ..........................................................................20 2.2.2. Lịch sử phát triển..................................................................................21 2.2.3. Các tính năng.........................................................................................22 2.2.4. Cấu hình phần cứng..............................................................................23 2.2.5. Môi trường phát triển ứng dụng trên nền tảng Android..................23 2.2.6. Ứng dụng Android ................................................................................25 2.2.6.1. Các thành phần trong ứng dụng Android........................................25
  • 10. ix 2.2.6.2. Activity trong android......................................................................27 2.2.6.3. Service trong Android......................................................................32 2.2.6.4. Broadcast Receiver trong Android ..................................................33 2.2.6.5. Content provider trong Android ......................................................33 2.2.7. Công cụ phát triển.................................................................................34 2.2.8. Phát hành ứng dụng Androi ................................................................37 CHƯƠNG 3: NỘI DUNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU............ 41 3.1. CÁC CÔNG CỤ PHÁT TRIỂN ..................................................................41 3.1.1. Cài đặt công cụ Android Studio...........................................................41 3.1.2. Tiến hành cài đặt JDK..........................................................................41 3.2. PHÂN TÍCH THIẾT KẾ HỆ THỐNG.......................................................43 3.2.1. Biểu đồ Use case ....................................................................................43 3.2.2. Biểu đồ lớp .............................................................................................44 3.3. THIẾT KẾ GIAO DIỆN ..............................................................................45 3.3.1. Giao diện chức năng chính...................................................................46 3.3.1.1. Giao diện màn hình chính................................................................46 3.3.1.2. Giao diện lựa chọn các chức năng ..................................................47 3.3.1.3. Truy cập vào camera để thực hiện chức năng quét mã qr...............48 3.3.1.4. Truy cập vào thư viện ảnh để thực hiện chức năng quét mã qr......49 3.3.1.5. Giao diện xem thông tin 1 sản phẩm ...............................................50 3.3.2. Giao diện chức năng phụ......................................................................51 3.3.2.1. Giao diện đăng nhập cho admin......................................................51 3.3.2.2. Giao diện xem liệt kê các sản phẩm.................................................52 3.3.2.3. Giao diện tạo mã vạch cho sản phẩm..............................................53 3.3.2.4. Giao diện thêm 1 sản phẩm..............................................................54 3.3.2.5. Giao diện chỉnh sửa thông tin 1 sản phẩm ......................................55 3.3.2.6. Giao diện xóa 1 sản phẩm................................................................56 3.4. THUẬT TOÁN THỰC HIỆN CÁC CHỨC NĂNG ỨNG DỤNG............57 3.4.1. Lưu đồ thuật toán thực hiện các chức năng chính.............................57 3.4.2. Lưu đồ thuật toán thực hiện các chức năng phụ ...............................61 CHƯƠNG 4: KẾT QUẢ, NHẬN XÉT VÀ KẾT LUẬN........................... 65 4.1. KẾT QUẢ.....................................................................................................65 4.2. NHẬN XÉT ..................................................................................................65 4.3. KẾT LUẬN...................................................................................................66 DANH MỤC TÀI LIỆU THAM KHẢO..................................................... 69
  • 11. x DANH MỤC CÁC BIỂU ĐỒ, LƯU ĐỒ, HÌNH ẢNH Hình 2.1. Cấu trúc của mã vạch hàng hóa.......................................................................................... 7 Hình 2.2. Mã vạch 1 chiều ................................................................................................................. 8 Hình 2.3. Một loại mã vạch 2D.......................................................................................................... 9 Hình 2.4. Một loại mã vạch cụm.......................................................................................................11 Hình 2.5. Mã vạch 3D.......................................................................................................................12 Hình 2.6. Mã vạch hai chiều ở mặt trước thẻ bảo hiểm y tế .............................................................15 Hình 2.7. Mã vạch lưu trữ thông tin sản phẩm .................................................................................16 Hinh 2.8. Mã QR code lưu trữ thông tin sản phẩm...........................................................................18 Hinh 2.9. Cấu tạo mã qr code............................................................................................................19 Hình 2.10. Lịch sử phát triển Android ..............................................................................................22 Hình 2.11. Các hệ điều hành phát triển ứng dụng androi..................................................................23 Hình 2.12. Biểu tượng Java...............................................................................................................24 Hình 2.13. Biểu tượng hệ điều hành android ....................................................................................24 Hình 2.14. Biểu tượng Android studio..............................................................................................25 Hình 2.15. Các thành phần trong ứng dụng Android........................................................................25 Hình 2.16. Vòng đời của 1 activity ...................................................................................................28 Hình 3.1. Cài đặt Android Studio......................................................................................................41 Hình 3.2. Cài đặt JDK.......................................................................................................................42 Hình 3.3. Cài đặt môi trường ............................................................................................................43 Hình 3.4. Biểu đồ Use case người dùng............................................................................................43 Hình 3.5. Biểu đồ Use case quản trị viên..........................................................................................44 Hình 3.6. Biểu đồ lớp........................................................................................................................44 Hình 3.7. Giao diện màn hình chính .................................................................................................46 Hình 3.8. Giao diện lựa chọn các chức năng.....................................................................................47 Hình 3.9. Giao diện quét mã vạch bằng camera................................................................................48 Hình 3.10. Giao diện quét mã vạch bằng hình ảnh ...........................................................................49 Hình 3.11. Giao diện xem thông tin 1 sản phẩm...............................................................................50 Hình 3.12. Giao diện đăng nhập cho admin......................................................................................51 Hình 3.13. Giao diện xem liệt kê các sản phẩm................................................................................52 Hình 3.14. Giao diện tạo mã vạch cho sản phẩm..............................................................................53 Hình 3.15. Giao diện thêm 1 sản phẩm.............................................................................................54 Hình 3.16. Giao diện chỉnh sửa thông tin 1 sản phẩm ......................................................................55 Hình 3.17. Giao diện xóa 1 sản phẩm ...............................................................................................56 Hình 3.18. Lưu đồ thực hiện các chức năng chính của ứng dụng.....................................................57 Hình 3.19. Lưu đồ thuật toán thực hiện truy cập vào camera trên điện thoại để quét mã vạch .58 Hình 3.20. Lưu đồ thuật toán thực hiện truy cập vào thư viện ảnh trên điện thoại để quét mã vạch59
  • 12. xi Hình 3.21. Lưu đồ thuật toán thực hiện chức năng quét mã vạch xem thông tin sản phẩm .............60 Hình 3.22. Lưu đồ thuật toán thực hiện chức năng đăng nhập .........................................................61 Hình 2.23. Lưu đồ thuật toán thực hiện chức năng hiển thị danh sách sản phẩm.............................62 Hình 3.24. Lưu đồ thuật toán thực hiện chức năng quản lí sản phẩm...............................................63 Hình 3.25. Lưu đồ thuật toán tạo ra mã Qr .......................................................................................64
  • 13. xii DANH MỤC CÁC BẢNG BIỂU Bảng 1: Các loại mã vạch một chiều phổ biến....................................................................................8 Bảng 2: Các loại mã vạch hai chiều phổ biến ...................................................................................10 Bảng 3: Các loại mã vạch cụm phổ biến...........................................................................................11
  • 14. xiii DANH MỤC THUẬT NGỮ VÀ CÁC TỪ VIẾT TẮT STT Cụm từ Viết tắt 1 Cơ sở dữ liệu CSDL 2 Điện thoại di động ĐTDĐ 3 Quick response code (Mã phản hồi nhanh) QR code 4 Uniform Resource Locator (Địa chỉ web) URL 5 Mạch bán dẫn IC 6 Đầu nối điện RCA 7 Mã sản phẩm chung UPC 8 Mã số hàng hóa MSHH 9 Mã vạch MV 10 Mã số MS 11 The European Article Numbering system (1 loại mã vạch) EAN 12 Hội Mã số Mã vạch Việt Nam MSMV 13 American Standard Code for Information Interchange (Chuẩn mã trao đổi thông tin Hoa Kỳ) ASCII 14 Mạng 3G/4G GSM/HSDPA 15 Evolution-Data Optimized (Tối ưu hóa dữ liệu được cải tiến) CDMA/EV-DO 16 Central Processing Unit (Bộ xử lý trung tâm) CPU 17 Java Development Kit JDK 18 Android Software Development Kit SDK 19 Application Programming Interface (Giao diện lập trình ứng dụng) API 20 Integrated Development Environment (Môi trường tích hợp dùng để viết code để phát triển ứng dụng) IDE 21 Android Development Tools ADT 22 Android Package Kit (Gói ứng dụng Android) APK 23 Application (Ứng dụng trên điện thoại) App 24 User Interface (Giao diện người dùng) UI 25 Operating System (Hệ Điều Hành) OS
  • 15. 1 CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 1.1. GIỚI THIỆU ĐỀ TÀI Hiện nay trên thị trường các loại sản phẩm có nguồn gốc lẫn lộn mà các khó có thể phân biệt bằng mắt được. Tuy nhiên có thể kiểm tra nguồn gốc sản phẩm, giá cả bằng cách quét mã vạch sản phẩm qua các phần mềm chuyên dụng. Thông tin mã vạch được in trên các loại bao bì sản phẩm để gắn các thông tin của sản phẩm được bán tại các cửa hàng, chợ, siêu thị,.... Nếu các sản phẩm được làm nhái, giả mạo về bao bì nhãn mác và sản phẩm bên trong thì cũng có thể dễ dàng in sao chép mã vạch của hàng thật rồi gắn lên bao bì của hàng giả giống y hệt. Khi dùng phần mềm quét mã vạch vẫn hiện đầy đủ thông tin mà không hề có sự khác biệt. Chính vì vậy, không thể nhận biết hàng thật hay hàng giả bằng phần mềm quét mã vạch. Phần mềm này chỉ để tra cứu thông tin sản phẩm thông qua mã vạch chứ không thể phân biệt được đâu là hàng giả và đâu là hàng thật. 1.2. LÝ DO CHỌN ĐỀ TÀI Trong thời buổi hội nhập thì các mặt hàng không chỉ được sản xuất tại Việt Nam mà có rất nhiều hàng hóa khác nhau được nhập khẩu ở nhiều các quốc gia trên thế giới. Trong đó phải kể đến các nước mà ta thường nhập khẩu như: Mỹ, Trung Quốc, Nhật Bản, Hàn Quốc,… Để nhận biết được các hàng hóa được sản xuất ở đâu, nhận biết hàng giả hàng thật, thuế đối với mỗi loại hàng hóa thì ta có thể biết qua “mã vạch”, “mã qr”. Vậy “mã vạch”, “mã qr” là gì, có ý nghĩa ra sao, các số mã vạch của các nước trên thế giới là gì… trong bài báo cáo này em sẽ giải đáp những thắc mắc đó và đưa ra giải pháp phần mềm quét mã qr để truy xuất nguồn gốc sản phẩm. 1.3. NỘI DUNG ĐỀ TÀI Theo tìm hiểu của em, các nghiên cứu phát triển có liên quan đến đề tài này như sau:  Phần mềm mã nguồn mở Zxing công bố năm 2008 hỗ trợ phát triển ứng dụng dùng smartphone hoặc tablet quét các loại mã vạch.  Trên thế giới, khả năng đọc mã vạch của smartphone đã được khai thác trong những năm gần đây. Tìm trên Google Play, chúng ta thấy có một số
  • 16. 2 ứng dụng quét mã vạch xây dựng trên thư viện Zxing. Những ứng dụng này tập trung vào mục đích nhận dạng sản phẩm, giá thành, tìm kiếm trên web như dùng ĐTDĐ quét mã vạch 1D in trên các sản phẩm hoặc đọc dữ liệu (URL và các thông tin liên lạc) chứa trong các mã vạch 2D được nhúng trên các trang web. Trong đề tài này tôi xây dựng ứng dụng quét mã qr để truy xuất nguồn gốc của sản phẩm. 1.4. MỤC TIÊU ĐỀ TÀI  Gồm 3 mục tiêu chính:  Củng cố kiến thức, rèn luyện và mở rộng khả năng lập trình.  Xây dựng App mobile quét mã qr truy xuất nguồn gốc của sản phẩm trên nền tảng Android.  Hoàn thành khóa luận tốt nghiệp và được thực hành nghiên cứu, lập trình trên thiết bị di động dựa trên nền tảng Android với niềm đam mê, yêu thích. 1.5. PHẠM VI ĐỀ TÀI Sử dụng điện thoại hoặc máy tính bảng Android có hệ điều hành 8.0 và có camera 5Mp trở lên. Xây dựng phần mềm ứng dụng trên ĐTDĐ sử dụng thư viện Zxing dùng để quét mã qr để truy xuất nguồn gốc sản phẩm. 1.6. PHƯƠNG PHÁP NGHIÊN CỨU VÀ HƯỚNG GIẢI QUYẾT ĐỀ TÀI  Phương pháp nghiên cứu  Tìm hiểu về hệ điều hành Android, ngôn ngữ lập trình Java và một số công nghệ liên quan để phục vụ cho việc phát triển ứng dụng.  Tham khảo tài liệu hướng dẫn lập trình trên mạng, trên youtube và các tài liệu liên quan trên nền tảng Android.  Tìm hiểu thư viện Zxing điều khiển camera trên ĐTDĐ để chuyển hình và giải mã mã qr.  Kế hoạch làm việc theo dự tính
  • 17. 3  Bước 1: Tìm hiểu về mã vạch và nguyên lý hoạt động của mã vạch.  Bước 2: Tìm hiểu thư viện Zxing và cách điều khiển camera của điện thoại Smart Phone.  Bước 3: Xây dựng ứng quét mã vạch truy xuất nguồn gốc sán phẩm.  Bước 4: Chỉnh sửa giao diện và kiểm thử sửa lỗi chương trình. 1.7. KẾT QUẢ DỰ KIẾN Phân tích được hệ thống hoạt động của mã vạch, đồng thờ hiểu biết được ý nghĩa của mã vạch và cách thức tạo ra một mã vạch. Hiểu được nền tảng android và từ đó áp dụng để tạo ra phần mềm dựa trên nền tảng này. Biết được cách thức hoạt động của phần mềm quét mã vạch, từ đó xây dựng được phần mềm quét mã qr truy xuất nguồn gốc sản phẩm cho công ty. Thiết kế giao diện ứng dụng thân thiện, dễ sử dụng cho người dùng. Hoàn thành việc thiết kế xây dựng chức năng và giao diện phần mềm quét mã qr: + Tìm kiếm và hiển thị thông tin sản phẩm. + Quản lý được cơ sở dữ liệu thêm, xóa, sửa.
  • 18. 4 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1. MÃ VẠCH, MÃ QR CODE VÀ CÁCH THỨC HOẠT ĐỘNG 2.1.1. Giới thiệu mã vạch Mã vạch (Mã vạch) theo định nghĩa là phương pháp lưu trữ và truyền tải thông tin bằng một lọai ký hiệu gọi là ký mã vạch (Mã vạch symbology). Mã vạch là 1 ký hiệu tổ hợp các khoảng trắng và vạch thẳng để biểu diễn các mẫu tự, ký hiệu và các con số. Sự thay đổi trong độ rộng của vạch và khoảng trắng biểu diễn thông tin số hay chữ số dưới dạng mà máy có thể đọc được. Mã số mã vạch được thu nhận bằng một máy quét mã vạch, là một máy thu nhận hình ảnh của mã vạch in trên các bề mặt và chuyển thông tin chứa trong mã vạch đến máy tính hay các thiết bị cần thông tin này. 2.1.2. Lịch sử phát triển Năm 1948, mã vạch được Norman Joseph Woodland và Bernard Silver sinh viên Đại học tổng hợp Drexel, xuất phát từ mong ước của vị chủ tịch của một công ty buôn bán đồ ăn. Ông này muốn có một hệ thống tự động kiểm tra toàn bộ quy trình. Đầu tiên họ sử dụng mã Morse để in những vạch rộng hay hẹp thẳng đứng. Sau đó, họ chuyển sang sử dụng dạng "điểm đen" của mã vạch với các vòng tròn đồng tâm. Năm 1952, công trình của ông về "Dụng cụ và phương pháp phân loại" được chứng nhận bản quyền. Mã vạch ra đời và được sử dụng đến ngày nay. Năm 1952, thiết bị đọc mã vạch đầu tiên được thiết kế và xây dựng bởi Woodland và Silver. Nó bao gồm một đèn dây tóc 500 W và một ống chân không nhân quang tử để in theo phương pháp quang học lên trên phim. Thiết bị này đã không được áp dụng trong thực tế. Năm 1960 Silver tiếp tục phát minh ra tia laser đã làm cho các thiết bị đọc mã vạch trở nên rẻ tiền hơn, và sự phát triển của mạch bán dẫn (IC) làm cho việc giải mã các tín hiệu thu được từ mã vạch có ý nghĩa thực tiễn.
  • 19. 5 Năm 1972, RCA thử nghiệm việc sử dụng đầu đọc mã vạch điểm đen nhưng khi in ra nó rất dễ nhòe. Năm 1973, Woodland đã phát triển mã vạch tuyến tính được chấp nhận như là Mã sản phẩm chung (tiếng Anh: Universal Product Code, hay UPC). Năm 1974, đầu đọc mã vạch đã được sử dụng tại siêu thị Marsh ở Troy, Ohio. Ngày nay, mã vạch đã phát triển nhanh chóng, rộng khắp, nhiều loại mã vạch ra đời và trở thành một phương thức đơn giản, tiện lợi để lưu trữ thông tin cho các hệ thống tự động. 2.1.3. Ý nghĩa của việc dùng mã vạch Mã vạch giống như một chứng minh thư của hàng hóa. Thông qua mã vạch ta có thể biết chính xác nguồn gốc xuất xứ của hàng hóa. Tùy vào quốc gia và vùng lãnh thổ mà quy định về mã vạch sẽ khác nhau. Mã vạch của hàng hóa sẽ bao gồm hai phần, bao gồm: mã số của hàng hóa để con người nhận diện và mã vạch để các loại máy quét đọc nhận diện. Tùy theo dung lượng thông tin, dạng thức thông tin được mã hóa và mục đích sử dụng mà người ta chia ra làm rất nhiều loại. Trong đó phổ biến nhất trên thị trường gồm: UPC, EAN, Code 39, Interleaved 2 of 5, Codabar và Code 128. Hiện nay, ở Việt Nam hàng hóa trên thị trường đa phần được áp dụng chuẩn mã vạch EAN. Mã vạch EAN gồm 13 con số chia làm 4 nhóm, gồm: mã quốc gia hoặc vùng lãnh thổ gồm 3 chữ số đầu, mã số doanh nghiệp gồm 4 chữ số tiếp theo, mã số hàng hóa gồm 5 chữ số tiếp theo và số cuối cùng là số về kiểm tra (tính từ trái qua).  Một số mã vạch các nước phổ biến thường gặp  000 – 019 GS1 Mỹ (United States) USA  030 – 039 GS1 Mỹ (United States)  050 – 059 Coupons  060 – 139 GS1 Mỹ (United States)  300 – 379 GS1 Pháp (France)  400 – 440 GS1 Đức (Germany)
  • 20. 6  450 – 459 và 490 – 499 GS1 Nhật Bản  690 – 695 GS1 Trung Quốc  760 – 769 GS1 Thụy Sĩ  880 GS1 Hàn Quốc  885 GS1 Thái Lan (Thailand)  893 GS1 Việt Nam  930 – 939 GS1 Úc (Australia) 2.1.4. Cấu tạo của mã số hàng hóa Đến nay, trong giao dịch thương mại tồn tại 2 hệ thống cơ bản về mã số hàng hoá: Một là, hệ thống mã số hàng hoá được sử dụng tại thị trường Hoa Kỳ và Canada. Đó là hệ thống UPC (Universal Product Code), được lưu hành từ thập kỷ 70 của thế kỷ XX cho đến nay. Hai là, hệ thống mã số hàng hoá được sử dụng rộng rãi ở các thị trường còn lại của thế giới, đặc biệt là châu Âu, châu Á,...; trong đó phổ biến là hệ thống EAN (European Article Number). Trong hệ thống mã số hàng hoá EAN có 2 loại ký hiệu con số: Loại EAN-13 và EAN-8. + Cấu trúc của EAN-13: Mã số EAN-13 là 1 dãy số gồm 13 chữ số nguyên (từ số 0 đến số 9), trong dãy số chia làm 4 nhóm, mỗi nhóm có ý nghĩa như sau (xem hình 1.1):
  • 21. 7 Hình 2.1. Cấu trúc của mã vạch hàng hóa Nhóm 1: Từ trái sang phải, ba chữ số đầu là mã số về quốc gia (vùng lãnh thổ). Nhóm 2: Tiếp theo gồm bốn chữ số là mã số về doanh nghiệp. Nhóm 3: Tiếp theo gồm năm chữ số là mã số về hàng hóa. Nhóm 4: Số cuối cùng (bên phải) là số về kiểm tra. Ví dụ theo quy ước trên, số kiểm tra (C) có ý nghĩa về quản lý đối với việc đăng nhập, đăng xuất của các loại sản phẩm hàng hóa của từng loại doanh nghiệp. Ví dụ: Mã số 8 9 3 3 4 8 1 0 0 1 0 6 - C: Bước 1 - Xác định nguồn gốc hàng hóa: 893 là mã số hàng hoá của quốc gia Việt Nam; 3481 là mã số doanh nghiệp thuộc quốc gia Việt Nam; 00106 là mã số hàng hoá của doanh nghiệp. Bước 2 - Xác định C. Cộng tổng giá trị của các số ở thứ tự lẻ bắt đầu được tính từ phải sang trái của dãy mã số (trừ số C), ta có : 6 + 1 + 0 + 8 + 3 + 9 = 27 (1) Nhân tổng của (1) với 3, ta có: 27 x 3 = 81 (2) P -893 - nhóm 1. M -4602 - nhóm 2. I -00107 - nhóm 3.
  • 22. 8 C -8 - nhóm 4. Cộng tổng giá trị của các số ở thứ tự chẵn còn lại, ta có: 0 + 0 + 1 + 4 + 3 + 8 = 16 (3) Cộng giá trị (2) với (3), ta có : 81 + 16 = 97 (4) Lấy giá trị của (4) làm tròn theo bội số của 10 (tức là 100) sát nhất với giá trị của (4) trừ đi giá trị của (4) ta có: 100 - 97 = 3. Như vậy C = 3. Trong trường hợp này mã số EAN - VN 13 có MSHH đầy đủ là: 893 3481 00106 3 2.1.5. Các dạng mã vạch phổ biến hiện nay 2.1.5.1. Mã vạch một chiều (mã vạch tuyến tính) Là chuẩn mã vạch trên các sản phẩm mọi người thường thấy, được tổ chức GS1 (One global Standard) chứng nhận và sử dụng trong ngành công nghiệp bán lẻ trên toàn thế giới. Hình 2.2. Mã vạch 1 chiều Bảng 1: Các loại mã vạch một chiều phổ biến Loại Thuộc tính Độ rộng Sử dụng Plessey Liên tục 2 Catalog, các giá hàng trong cửa hàng, hàng tồn kho UPC Liên tục Nhiều Bán lẻ ở Mỹ
  • 23. 9 EAN-UCC Liên tục Nhiều Bán lẻ khắp thế giới Codabar Rời rạc 2 Thư viện, ngân hàng máu, vé máy bay Interleaved 2 of 5 Liên tục 2 Bán buôn, thư viện Code 39 Rời rạc 2 Đa dạng Code 93 Liên tục 2 Đa dạng Code 128 Liên tục Nhiều Đa dạng Code 11 Rời rạc 2 Điện thoại POSTNET Liên tục Cao/Thấp Bưu điện PostBar Rời rạc Nhiều Bưu điện CPC Binary Rời rạc 2 Bưu điện Telepen Liên tục 2 Thư viện v.v (Vương quốc Anh) 2.1.5.2. Mã vạch hai chiều (mã vạch 2D) Là một kỹ thuật mã hóa thông tin thành dạng dữ liệu mà máy có thể đọc được. Mã vạch 2D xuất hiện lần đầu tiên vào năm 1988, do tập đoàn Intermec tạo ra, và được gọi là Mã 49. Đó là một loại mã vạch có hình ảnh đồ họa có chứa cả 2 loại là mã vạch một chiều và mã vạch theo chiều dọc. Chính vì thế, nên mã vạch 2D có thể lưu trữ lên đến 7.089 ký tự so với mã vạch thông thường chỉ lưu trữ 20 ký tự. Khi tiến hành đọc mã code, thì mã vạch 2D có phản ứng rất nhanh và truy cập dữ liệu chỉ trong vài giây. Hình 2.3. Một loại mã vạch 2D
  • 24. 10 Bảng 2: Các loại mã vạch hai chiều phổ biến Loại Ghi chú 3-DI Phát triển bởi Lynn Ltd. ArrayTag Từ ArrayTech Systems. Aztec Code Từ Welch Allyn (hiện nay là Handheld Products). Phạm vi công cộng. Code 1 Phạm vi công cộng. CP Code Từ CP Tron, Inc. DataGlyphs Từ Xerox PARC. Datamatrix Từ RVSI Acuity CiMatrix. Hiện nay thuộc phạm vi công cộng. Điểm đen Mã vạch này đã được thử nghiệm ở cửa hàng Kroger ở Cincinnati. Nó sử dụng các vạch đồng tâm. HueCode Từ Robot Design Associates. Sử dụng thang màu xám hoặc nhiều màu. INTACTA.CODE Từ INTACTA Technologies, Inc. MaxiCode Sử dụng bởi Dịch vụ chuyển phát hàng hóa Mỹ (United Parcel Service). MiniCode Từ Omniplanar, Inc. PDF417 Có nguồn gốc từ Symbol Technologies. Phạm vi công cộng. QR Code Từ Nippondenso ID Systems. Phạm vi công cộng. SpotCode Mã vòng từ High Energy Magic Ltd. SuperCode Phạm vi công cộng. UltraCode Có các phiên bản đen trắng và màu. Phạm vi công cộng.
  • 25. 11 2.1.5.3. Mã vạch cụm Là trung gian giữa mã vạch 2D thực thụ và mã vạch tuyến tính, chúng được tạo ra bằng cách đặt các mã vạch tuyến tính truyền thống trên các loại giấy hay các vật liệu có thể in mà cho phép có nhiều hàng. Hình 2.4. Một loại mã vạch cụm Bảng 3: Các loại mã vạch cụm phổ biến Loại Ghi chú Codeblock Mã vạch cụm 1D. Code 16K Dựa trên Code 128 1D. Code 49 Mã vạch cụm 1D từ Intermec Corp. PDF417 Mã vạch 2D phổ biến nhất. Phạm vi công cộng. 2.1.5.4. Mã vạch ba chiều (mã vạch 3D) Là một loại mã vạch được dập nổi hay khắc chìm trên bề mặt của vật thể mang mã. Các mã được đọc bằng cách sử dụng sự khác biệt về chiều sâu của vùng, chứ không xác định bới các vạch và khoảng cách giữa các vạch. Mã vạch ba chiều có thể được sử dụng nơi mà bản in thường của mã dễ bị phá huỷ bởi điều kiện của môi trường hay những điều kiện dễ bị mài mòn.
  • 26. 12 Hình 2.5. Mã vạch 3D 2.1.6. Làm sao mà các doanh nghiệp phải đăng ký mã số - mã vạch Trong mỗi quốc gia, các doanh nghiệp, các nhà cung cấp sẽ thuận lợi khi quản lý, phân phối; biết được xuất xứ, nguồn gốc của mỗi loại sản phẩm. Trong giao lưu thương mại quốc tế, các nhà sản xuất, các nhà cung cấp tránh được các hiện tượng gian lận thương mại, bảo vệ quyền lợi cho người tiêu dùng; sản phẩm hàng hóa có thể lưu thông trôi nổi toàn cầu mà vẫn biết được lai lịch của nó cũng như đảm bảo độ chính xác về giá cả và thời gian giao dịch rất nhanh. Trong giao dịch mua bán, kiểm soát được tên hàng, mẫu mã, quy cách, giá cả xuất, nhập kho hàng không bị nhầm lẫn và nhanh chóng, thuận tiện. Tại Việt Nam, Chính phủ đã giao cho Bộ Khoa học và Công nghệ là cơ quan quản lý nhà nước về EAN-VN. Tổng cục Tiêu chuẩn Đo lường Chất lượng là đại diện của EAN-VN và là thành viên chính thức của EAN quốc tế. Việc đăng ký và cấp mã số - mã vạch cho các doanh nghiệp để gắn trên các sản phẩm đều do cơ quan Tổng cục Tiêu chuẩn Đo lường Chất lượng quản lý, phân phối cho các tổ chức hợp pháp khác thực hiện hoặc cấp trực tiếp cho doanh nghiệp. Đối với Việt Nam, đi theo MV là MS có 3 chữ số 893, Trung Quốc có mã số 690, Singapore có mã số 888, Vương quốc Anh có mã số 50, các quốc gia Bắc Mỹ thì đăng ký mã số (UPC) của Hoa Kỳ.
  • 27. 13 Ngoài những nguyên tắc cơ bản về MS-MV trình bày ở trên, cũng có những trường hợp ngoại lệ đối với một số sản phẩm hàng hóa: mã số tập hợp trên 13 chữ số đi với mã vạch không có độ cao, độ dài nêu trên mà dải phân cách mã vạch dài hơn, ngắn hơn. Ví dụ như vật phẩm điện thoại di động hiện nay, MSMV rất đặc trưng. Đối với điện thoại di động, về mã số ta thấy có tới 15 chữ số mà chiều cao mã vạch nhỏ hơn 10 mm. Biểu tượng mã số - mã vạch không in dán phía ngoài mà in dán phía trong máy. Ngoài ra cũng có một số vật phẩm khác có mã số mã vạch không theo quy tắc trên nhưng vẫn đảm bảo các tiện ích cho doanh nghiệp và người tiêu dùng, được EAN quốc tế cho lưu hành. 2.1.7. Ứng dụng của mã vạch Mã vạch được sử dụng ở những nơi mà các đồ vật cần phải đánh số với các thông tin liên quan để các máy tính có thể xử lý. Thay vì việc phải đánh một chuỗi dữ liệu vào phần nhập liệu của máy tính thì người thao tác chỉ cần quét mã vạch cho thiết bị đọc mã vạch. Chúng cũng làm việc tốt trong điều kiện tự động hóa hoàn toàn, chẳng hạn như trong luân chuyển hành lý ở các sân bay. Các dữ liệu chứa trong mã vạch thay đổi tùy theo ứng dụng. Trong trường hợp đơn giản nhất là một chuỗi số định danh được sử dụng như là chỉ mục trong cơ sở dữ liệu trong đó toàn bộ các thông tin khác được lưu trữ. Các mã EAN-13 và UPC tìm thấy phổ biến trên hàng bán lẻ làm việc theo phương thức này. Mã vạch còn chứa toàn bộ thông tin về sản phẩm, mà không cần cơ sở dữ liệu ngoài. Điều này dẫn tới việc phát triển mã vạch tượng trưng mà có khả năng biểu diễn nhiều hơn là chỉ các số thập phân, có thể là bổ sung thêm các ký tự hoa và thường của bảng chữ cái cho đến toàn bộ bảng mã ký tự ASCII và nhiều hơn thế. Việc lưu trữ nhiều thông tin hơn đã dẫn đến việc phát triển của các ma trận mã (một dạng của mã vạch 2D), trong đó không chứa các vạch mà là một lưới các ô vuông. Ngày này, mã vạch hai chiều được ưa chuộng nhiều và ứng dụng rộng rãi, đặc biệt là đối với những người sở hữu smartphone. Đơn giản và hiệu quả, người sử dụng chỉ cần nhận dạng mã vạch hai chiều thông qua camera được trang bị với một đầu đọc mã vạch gắn trên điện thoại. Qua đó, đầu đọc sẽ trả về kết quả là những đoạn
  • 28. 14 URL đã được phân tích, và lập tức truy cập vào các trình duyệt có liên quan trên một website. Do vậy, mã vạch hai chiều rất có ích cho lĩnh vực tiếp thị qua di động. Một số hệ thống mã vạch hai chiều khác thì lại trực tiếp cung cấp thông tin cho khách hàng nhận được mà không cần phải truy cập website. Mã vạch hai chiều ngày càng được ưa chuộng vì người ta nhận ra những đặc tính độc đáo của nó không có mặt trong các mã vạch tuyến tính truyền thống và được nhằm vào ba ứng dụng chính: 1. Đối với các món hàng nhỏ: Nếu in mã vạch tuyến tính thông dụng trên các món hàng nhỏ thì thường gặp trở ngại về kích thước của mã vạch vẫn còn quá lớn so với các món hàng cực nhỏ. Với mã vạch hai chiều người ta có thể in mã vạch ngay trên món hàng có kích thước rất nhỏ. 2. Nội dung thông tin: Công nghệ hai chiều cho phép mã hóa một lượng lớn thông tin trong một diện tích nhỏ hẹp. Cả lượng thông tin lưu trong cùng một ký hiệu mã vạch 2D có thể coi như là 1 file dữ liệu nhỏ gọn. Do đó khi sử dụng loại mã 2D, có thể không cần đến cơ sở dữ liệu bên trong máy vi tính. 3. Quét tầm xa: Khi sử dụng các ký hiệu 2D, máy in không đòi hỏi in ở độ phân giải cao mà có thể in ở độ phân giải thấp vì trong ký hiệu 2D, các mảng điểm hoặc các vạch rất lớn. Điều này dẫn đến việc cho phép quét mã vạch 2D ở một khoảng cách xa khoảng 15m. Một số ứng dụng mã vạch hai chiều điển hình gồm: - Hãng đồ thể thao nổi tiếng Nike đã sử dụng mã vạch hai chiều in trên các áp phích dọc theo các tuyến đường của một cuộc đua thể thao mạo hiểm. Các vận động viên sẽ sử dụng smartphone của mình thông qua các mã vạch để truy cập vào hình ảnh, video và những dữ liệu được hỗ trợ; - Mã vạch hai chiều được in lên nhiều sản phẩm trong các cửa hàng để người mua dễ dàng đánh giá sản phẩm;
  • 29. 15 - Một số người gửi những mã vạch hai chiều lên trang blog của mình; - Tổng cục Thuế đã triển khai phần mềm “Hỗ trợ kê khai thuế” áp dụng công nghệ mã vạch hai chiều cho các doanh nghiệp đang hoạt động theo địa bàn các tỉnh. Đây là phần mềm ứng dụng nhằm hỗ trợ doanh nghiệp trong việc xử lý tính toán lập các tờ khai thuế. Phần mềm có hệ thống kiểm tra việc kê khai, với việc sử dụng phần mềm hỗ trợ, việc kê khai thuế của doanh nghiệp sẽ được bảo đảm nhanh chóng, chính xác, tránh được những sai sót thường gặp. Sau khi kê khai xong toàn bộ số liệu sẽ được phần mềm mã hóa và lưu dưới dạng mã vạch hai chiều. Trước khi in, hệ thống sẽ kiểm tra xem tất cả các mục bắt buộc phải nhập thông tin đã được nhập chưa? Đồng thời đối chiếu kiểm tra giữa các chỉ tiêu có đúng với quy định kê khai hay không? Nếu có lỗi thì vẫn được ghi nhưng không thể in hoặc kết xuất tờ khai được, nếu kê khai sai hệ thống sẽ thông báo lỗi kê khai, hiển thị nội dung lỗi và hướng dẫn cách sửa. Cơ quan thuế nhận tờ khai của doanh nghiệp sẽ dùng máy đọc mã vạch để quét và lưu số liệu trên tờ khai thuế vào máy tính. Như vậy, việc nhập liệu bằng mã vạch hai chiều đã khắc phục hoàn toàn việc sai lệch về số liệu giữa cơ quan thuế và doanh nghiệp; giúp cho cơ quan thuế kiểm tra nhanh chóng xác nhận số liệu cho doanh nghiệp khi hoàn thuế, hoặc khi cần tra cứu thông tin, số liệu khác tại cơ quan thuế... - Từ ngày 01/01/2014, Bảo hiểm xã hội Việt nam đã ban hành mẫu thẻ Bảo hiểm y tế mới, có mã vạch hai chiều chứa các thông tin trên thẻ và chuỗi ký tự kiểm tra. In thẻ có mã vạch hai chiều giúp quản lý được dữ liệu phát hành thẻ chính xác, dễ dàng phát hiện thẻ giả, tránh được những sai sót về trùng dữ liệu thẻ, sai mã thẻ, sai mã đối tượng hưởng quyền lợi, giúp tiết kiệm được chi phí hành chính đối với cơ quan bảo hiểm xã hội và cả đối với các cơ sở khám chữa bệnh. Hình 2.6. Mã vạch hai chiều ở mặt trước thẻ bảo hiểm y tế
  • 30. 16 2.1.8. Sự khác biệt giữa mã số mã vạch và mã QR code Truy xuất nguồn gốc đang dần trở thành trở thành yếu tố bắt buộc đối với các doanh nghiệp. Những sản phẩm dù chất lượng nhưng thiếu tem truy xuất nguồn gốc rõ ràng vẫn không được đánh giá cao. Đó là lý do số lượng các doanh nghiệp triển khai giải pháp này đang có sự gia tăng đáng kể. Bên cạnh một số đơn vị áp dụng truy xuất nguồn gốc bằng mã qr code, thì vẫn còn một số ít bộ phận tiếp tục sử dụng các loại mã số mã vạch cho sản phẩm của mình. Vậy đâu mới thực là phương án tối ưu nhất, giữa mã qr code và mã số mã vạch liệu có sự khác biệt ? 2.1.8.1. Truy xuất thông tin bằng mã số mã vạch Ra đời khá sớm, mã vạch được ứng dụng trên hầu hết tất cả các mặt hàng và có tính phổ biến rộng rãi. Thông thường mã vạch được dùng để lưu trữ các thông tin về sản phẩm như: tên doanh nghiệp, giá bán, quốc giá sản xuất,..Mã vạch đặc biệt được dùng nhiều trong các siêu thị để thanh toán và nhận biết chủng loại sản phẩm. Hình 2.7. Mã vạch lưu trữ thông tin sản phẩm Về mặt trực quan, các mã vạch có kích thước là một hình chữ nhật với các modun được mã hóa thành các vạch và mã số, chỉ có máy quét, thiết bị quét chuyện dụng mới đọc được. Chúng có hình dáng và quy cách chuẩn, nên không thể tùy tiện thay đổi hay sửa theo ý thích. Về mặt nội dung, số lượng thông tin lưu trữ của mã mã vạch khoảng 20 ký tự ở định dạng Aphabet và số. Nội dung khi đã được in và gắn vào mã vạch sẽ không thể thay đổi được.
  • 31. 17 Xét vê mặt tính năng, mã vạch khá hạn chế trong việc thể hiện nội dung sản phẩm cũng như không có các tính năng đa dạng, không thể thống kê được số lượt check của người dùng. 2.1.8.2. Truy xuất thông tin bằng mã QR Code Về bản chất, mã qr code cũng là một loại mã số mã vạch, chúng có hình dạng hình vuông có các modun mã hóa 3 mắt ở các góc. Ra đời sau so với mã vạch, chính vì thế mà mã qr code sở hữu những tính năng khá vượt trội mà mã vạch không thể có được: + Về hình thức, kích thước, màu sắc của mã qr code có thể thay đổi theo ý thích cho phù hợp với thiết kế tem nhãn của người dùng + Một trong những sự khác biệt lớn giữa qr code và mã vạch đó chính là lượng thông tin chứa được trong mã QR Code có thể lên tới hơn 7000 ký tự bao gồm cả các chữ tượng hình, số và các ký tự đặc biệt, ngoài ra có thể tạo mã QR Code để gắn được facebook, slide, video,PDF, ảnh… giúp đa thông tin đến khách hàng đa dạng, thu hút hơn. + Những thông tin được gắn trên mã qr code hoàn toàn có thể thay đổi được theo ý muốn nhà sản xuất. + Thống kê được các lượt check của khách hàng, vị trí check, ở đâu, khi nào, bao nhiêu lần, giúp kiểm soát định vị đường đi sản phẩm một cách hiệu quả. Với sự phát triển như vũ bão của công nghệ hiện nay, cùng với đó là nhu cầu người dùng đang ngày càng đòi hỏi khắt khe hơn về mặt tính năng, thẩm mỹ, việc sử dụng ứng dụng phần mềm truy xuất nguồn gốc bằng mã qr code chính là xu hướng tất yếu dần thay thế hoàn toàn cho việc sử dụng mã số mã vạch.
  • 32. 18 Hinh 2.8. Mã QR code lưu trữ thông tin sản phẩm Có thể nói, việc thực hiện truy xuất nguồn gốc sản phẩm bằng mã qr code là điều vô cùng cần thiết, nó không chỉ thể hiện sự minh bạch trong quá trình sản xuất của doanh nghiệp mà còn thể hiện sự tôn trọng đối với nhu cầu về thông tin của người tiêu dùng, đặc biệt là truy xuất nguồn gốc sản phẩm trong lĩnh vực nông sản, truy xuất nguồn gốc thực phẩm đồ uống. 2.1.9. Cấu tạo và cách hoạt động của QR code Mã QR có cấu tạo hình vuông, ở bên trong bao gồm nhiều ô caro đen trắng xen nhau. Nhìn qua có vẻ như các ô vuông nhỏ này được sắp xếp ngẫu nhiên. Tuy nhiên, nếu nhìn kỹ, có thể thấy tất cả sự lộn xộn đó đều theo một cấu trúc nhất định. QR được tạo thành từ 6 phần khác nhau. + Vùng yên tĩnh: Đây là viền trắng trống bao bên ngoài mã. Nếu không có mã này thì máy đọc mã sẽ không thể xác định được thông tin nào nằm trong và thông tin nào nằm ngoài vùng quét. + Vùng thời gian: Đây là một đường hình chữ L chạy qua 3 ô vuông ngoài mã QR. Giúp xác định các ô vuông riêng lẻ trong toàn bộ mã. Và giúp người dùng có thể quét được nếu như mã bị hỏng. + Vùng tìm kiếm: Mỗi mã QR đều có 3 ô vuông riêng biệt nằm ở góc và phía trên bên trái và phía trên bên phải. Nó giúp máy quét mã QR có thể xác định được đâu là vùng cần quét.
  • 33. 19 + Thông tin phiên bản: Đây là một vùng thông tin nhỏ nằm ở góc phải mã QR. Giúp xác định đây là phiên bản mã QR nào. Có 4 phiên bản mã QR đó là số, chữ và số, bytes và cuối cùng là kanji hay chữ Hán. + Ô dữ liệu: Đây là vùng truyền thông tin chính của mã. + Vùng căn chỉnh: Đây là vùng dữ liệu nhỏ nằm dưới cùng bên phải của mã QR. Nó đảm bảo rằng nếu bị lệch về một góc thì mã vẫn đọc được bình thường. Hinh 2.9. Cấu tạo mã qr code Thoạt nhìn tưởng vô nghĩa nhưng trong mã QR Code này đang được mã hóa một thông tin nào đó. Để đọc được dãy mã này, cần phải cài ứng dụng đọc mã, khởi chạy chương trình, chỉnh và giữ điện thoại sao cho QR code nằm gọn trong khung hình. Sau đó phải chờ cho đến khi có tiếng bíp phát ra. Mọi thông tin mã hóa trong QR Code sẽ được truyền tải đến chiếc smartphone và hiển thị trên màn hình. Khi quét mã, trên màn hình điện thoại có thể xuất hiện ra một trang web, thông tin liên hệ, tin nhắn, thông tin sản phẩm hoặc thanh toán. Máy quét mã QR sẽ dựa vào hình dáng, nhận diện 3 ô vuông trong mã từ đó định hình được hình dáng và vị ví nội dung có thể quét.
  • 34. 20 Tiếp đến nó sẽ bắt đầu phân tích. Lúc đầu máy quét sẽ biến hình ảnh thành những ô vuông nhỏ khác nhau. Mỗi ô vuông riêng lẻ này đều chưa một vùng dữ liệu riêng dựa trên việc nó trắng hay đen. Và sau đó nó sẽ ghép những mảnh hình vuông nhỏ đó lại và tạo thành một vùng dữ liệu lớn hơn. 2.1.10. Các bước truy xuất nguồn gốc sản phẩm Bước 1: Cài đặt ứng dụng quét QR Code Bước 2: Mở ứng dụng, hướng màn hình camera đến chỗ có mã QR Code trên tem được dán lên sản phẩm để quét. Bước 3: Sau đó sẽ hiển thị các thông tin chi tiết về sản phẩm và doanh nghiệp sản xuất. – Hàng thật: xác thực hàng chính hãng và chi tiết các thông tin về tên sản phẩm, tên công ty sản xuất, địa chỉ, email, số điện thoại… – Hàng giả: thông báo sản phẩm không có trên hệ thống, khách hàng có nguy cơ mua phải hàng giả. 2.2. NỀN TẢNG ANDROID 2.2.1. Hệ điều hành Android Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng. Ban đầu, Android được phát triển bởi Android, Inc. với sự hỗ trợ tài chính từ Google và sau này được chính Google mua lại vào năm 2005. Android ra mắt vào năm 2007 cùng với tuyên bố thành lập Liên minh thiết bị cầm tay mở: một hiệp hội gồm các công ty phần cứng, phần mềm, và viễn thông với mục tiêu đẩy mạnh các tiêu chuẩn mở cho các thiết bị di động. Chiếc điện thoại đầu tiên chạy Android được bán vào năm 2008.
  • 35. 21 Android có mã nguồn mở và Google phát hành mã nguồn theo Giấy phép Apache. Chính mã nguồn mở cùng với một giấy phép không có nhiều ràng buộc đã cho phép các nhà phát triển thiết bị, mạng di động và các lập trình viên nhiệt huyết được điều chỉnh và phân phối Android một cách tự do. Ngoài ra, Android còn có một cộng đồng lập trình viên đông đảo chuyên viết các ứng dụng để mở rộng chức năng của thiết bị, bằng một loại ngôn ngữ lập trình Java có sửa đổi. Tháng 10 năm 2012, có khoảng 700.000 ứng dụng trên Android, và số lượt tải ứng dụng từ Google Play, cửa hàng ứng dụng chính của Android, ước tính khoảng 25 tỷ lượt. 2.2.2. Lịch sử phát triển Hệ điều hành Android có nguồn gốc tên từ Android, Inc. – chính công ty cha đẻ của Android. Công ty chính thức thành lập ở Palo Alto, California khoảng tháng 10 năm 2003 do Andy Rubin – đồng sáng lập công ty Danger, Rich Miner – đồng sáng lập công ty Viễn thông Wildfire, Nick Sears – cựu Phó giám đốc T-Mobile, và Chris White – trưởng thiết kế và giao diện tại WebTV. Đến 17/08/2005 Google chính thức thu mua lại Android, Inc., từ đó Android chính thức thuộc quyền sở hữu của Google. Bộ phận cốt cán nhân sự chính của Android, Inc. có Rubin, Miner và White, vẫn duy trì chức vụ sau lần mua bán này. Vào thời điểm đó không có quá nhiều thông tin về công ty này nhưng ngầm dự báo về tương lai Google sẽ lấn sân sang thị trường điện thoại di động. Phát triển tại Google, nhóm do Rubin đứng đầu chính thức cho thành lập và phát triển nền tảng thiết bị di động trên nền tảng Linux. Google mang tới lời hứa với nhà sản xuất điện thoại và các nhà mạng cho tương lai nâng cấp hệ thống và cho nền tảng tích hợp mươt mà.
  • 36. 22 Hình 2.10. Lịch sử phát triển Android 2.2.3. Các tính năng Giao diện người dùng mặc định của Android sử dụng các thao tác trực tiếp như chạm, vuốt và kéo để bắt đầu giao tiếp. Thiết bị cung cấp phản hồi xúc giác cho người dùng thông qua các cảnh báo như rung để phản hồi các hành động. Ví dụ: nếu người dùng nhấn vào nút điều hướng, thiết bị sẽ rung. Khi người dùng khởi động thiết bị, hệ điều hành Android sẽ hiển thị màn hình chính, đây là trung tâm điều hướng chính cho thiết bị Android, bao gồm các tiện ích và biểu tượng ứng dụng. Widget là màn hình thông tin tự động cập nhật nội dung như thời tiết hoặc tin tức. Màn hình chính có thể khác nhau tùy theo nhà sản xuất của thiết bị. Người dùng cũng có thể chọn các chủ đề khác nhau cho màn hình chính thông qua các ứng dụng của bên thứ ba trên Google Play . Thanh trạng thái ở phía trên cùng màn hình chính hiển thị các thông tin và trạng thái kết nối của thiết bị: mạng Wi-Fi đang kết nối, sóng 3G, cường độ sóng điện thoại. Người dùng có thể vuốt thanh trạng thái theo chiều đi xuống để xem màn hình thông báo. Hệ điều hành Android cũng sở hữu các tính năng giúp tiết kiệm pin. Hệ điều hành tạm dừng các ứng dụng không được sử dụng để tiết kiệm pin và mức sử dụng CPU. Android có các tính năng quản lý bộ nhớ giúp tự động đóng các trình xử lý không hoạt động lưu trong bộ nhớ.
  • 37. 23 Android chạy trên cả hai tiêu chuẩn cellular (thiết bị hỗ trợ khe cắm sim) được triển khai rộng rãi nhất là GSM/HSDPA và CDMA/EV-DO. 2.2.4. Cấu hình phần cứng Android sử dụng ARM cho nền tảng phần cứng; các phiên bản sau của hệ điều hành Android hỗ trợ kiến trúc x86 và x86-64. Bắt đầu từ năm 2012, các nhà sản xuất thiết bị đã phát hành điện thoại thông minh và máy tính bảng Android với bộ vi xử lý Intel. Yêu cầu phần cứng tối thiểu của Android phụ thuộc vào kích thước màn hình của thiết bị, loại và mật độ CPU. Ban đầu, Google yêu cầu bộ xử lý 200MHz, 32MB bộ nhớ và 32 MB RAM. 2.2.5. Môi trường phát triển ứng dụng trên nền tảng Android Môi Trường Phát Triển Phần Mềm là một môi trường mà ở đó nhà Phát Triển Phần Mềm có được những công cụ cần thiết nhất để viết ra một ứng dụng hoàn chỉnh. Bài học liên quan đến Android, do đó ta tập trung vào tìm hiểu Môi Trường Phát Triển Phần Mềm Android (Android Development Environment) bao gồm những công cụ cần thiết: - Hệ Điều Hành (Operating System) Hình 2.11. Các hệ điều hành phát triển ứng dụng androi Ứng dụng Android có thể được lập trình trên cả 3 nền tảng hệ điều hành phổ biến nhất hiện nay: Microsoft Windows, Linux và Mac. - Java Development Kit (JDK)
  • 38. 24 Hình 2.12. Biểu tượng Java Bộ Công Cụ Phát Triển Cho Java, vì ứng dụng Android được viết dựa trên ngôn ngữ Java, do đó ta cần phải có bộ JDK này để các công cụ khác có thể dùng nó để biên dịch mã nguồn Java. Ngay cả như dùng Kotlin để thay thế cho Java trong các ứng dụng, thì vẫn cần đến bộ JDK này, vì Kotlin vẫn tận dụng máy ảo JVM bên trong JDK. - Android Software Development Kit (SDK) Hình 2.13. Biểu tượng hệ điều hành android Tương tự như JDK, Android SDK là Bộ Công Cụ Phát Triển Cho Android. SDK này sẽ cung cấp cho ta một bộ các thư viện và công cụ cần thiết để ta có thể build, kiểm tra và debug cho các ứng dụng Android mà ta lập trình. - Android Studio
  • 39. 25 Hình 2.14. Biểu tượng Android studio Cuối cùng ta phải cần công cụ này, đây là công cụ mà ta sẽ tương tác trực tiếp và dài lâu. Android Studio cung cấp cho ta một giao diện trực quan để ta có thể viết code, chỉnh sửa, biên dịch, debug, quản lý bộ nhớ,… tất cả mọi thứ cần thiết để ta có thể tạo nên một phần mềm. 2.2.6. Ứng dụng Android 2.2.6.1. Các thành phần trong ứng dụng Android Hình 2.15. Các thành phần trong ứng dụng Android
  • 40. 26 Có 4 kiểu thành phần trong ứng dụng của Android bao gồm:  Activities.  Services.  Content providers.  Broadcast receivers. Mỗi thành phần này được sử dụng cho mỗi mục đích khác nhau và có một vòng đời khác nhau.  Activities Một Activity được xem như một điểm tiếp xúc với người dùng. Nó là một màn hình đơn với giao diện trên đó. Ví dụ cài và chạy lên ứng dụng này thì màn hình chạy lên sẽ thấy giao diện hiện thị cho ta xem, đó là một Activity. Activty giúp người dùng tương tác với hệ thống, thực hiện các chức năng cần thiết trên đó, chuyển đổi qua lại giữa các màn hình giao diện/ chức năng. Thường thường khi sử dụng Activity ta sẽ kết thừa từ lớp cha của nó là Activity (tất nhiên hiện tại Android SDK ở các phiên bản mới đã có nhiều subActivity hỗ trợ trong từng trường hợp thuận tiện ).  Services Service có chức năng giúp ứng dụng vẫn chạy được, nhưng không cần hiện thị trên giao diện (gọi là chạy ngầm bên dưới ). Ví dụ dùng các ứng nghe nhạc, mặc dù tắt ứng dụng rồi nhưng vẫn nghe được nhạc ( đó là vì nó đang chạy dưới nền /background ). Ta có thể liên kết/ kết nối giữa một Activity với một service, ví dụ: khi download một file từ trên mạng, việc download thực hiện ở service, sau đó sẽ trả kết quả phần trăm download lên activity để hiện thị cho người dùng biết. Chú ý: mặc dù service chạy ở chế độ background nhưng cần phân biệt giữa service và thread. Service không phải thread, do đó tùy trường hợp mà ta sử dụng và xử lý cho phù hợp để tránh trường hợp sử dụng service làm ứng dụng bị đơ/ chậm khi sử lý các luồng dữ liệu/ giao diện khác. Khi sử dụng service ta sẽ kế thừa từ lớp cha là: Service
  • 41. 27  Broadcast receivers Broadcast Receiver là một trong 4 thành phần lớn trong Android, với mục đích là lắng nghe các sự kiện, trạng thái của hệ thống phát ra thông qua Intent nhờ đó mà các lập trình viên có thể xử lí được các sự kiện hệ thống ở bên trong ứng dụng của mình. Broadcast Receiver có thể hoạt động được cả khi ứng dụng bị tắt đi, nghĩa là ở background chính vì vậy nó thường được sử dụng với service..  Content providers Content provider quản lý các cách để ứng dụng có thể lưu trữ dữ liệu trên hệ thống. Ta sẽ biết cụ thể về thành phần này khi xây dựng các ứng dụng cần lưu trữ vào SQLite. Ví dụ các ứng dụng từ điển, sẽ thấy dữ liệu, từ vựng ta tra hiện thị, thì dữ liệu hiện thị đó được lưu trữ trong Slite và Content provider gọi để lấy ra cho người dùng xem. Ngoài ra thành phần này còn thực hiện các chức năng, thêm, sửa, xóa dữ liệu… 2.2.6.2. Activity trong android Lớp Activity là thành phần quan trọng nhất của ứng dụng Android, cách mà chúng hoạt động tạo thành nền tảng cơ bản của mô hình lập trình ứng dụng. Android khởi chạy một ứng dụng thông thường bằng kích hoạt một Activity tương ứng với vòng đời cụ thể của nó trong quá trình hoạt động. Thường một Activity cung cấp một của sổ, ở đó ứng dụng sẽ dựng các thành phần UI (User Interface - giao diện người dùng). Mặc định cửa sổ này có thể lấp đầy mà hình thiết bị, nhỏ hơn hoặc nổi phía trên các cửa sổ khác. Hầu hết các ứng dụng đều sử dụng nhiều màn hình khác nhau, có nghĩa nó sẽ phải có nhiều Activity khác nhau. Khi một Activity chỉ định là Main Activity, nó sẽ là màn hình đầu tiên khi khởi chạy ứng dụng. Activity này có thể gọi và kích hoạt một Activity khác.  Vòng đời activity.  Sơ đồ
  • 42. 28 Hình 2.16. Vòng đời của 1 activity  Mô tả sơ đồ Sơ đồ bắt đầu từ khi Activity launched, tức là khi Activity được kích hoạt, và được hệ thống đẩy vào BackStack. Sau khi kích hoạt, lần lượt các callback onCreate(), onStart(), onResume() sẽ được hệ thống gọi đến. Sau khi gọi đến các callback trên, thì Activity mới chính thức được xem là đang chạy (Activity running). Lúc này, nếu có bất kỳ Activity nào khác chiếm quyền hiển thị, thì Activity hiện tại sẽ rơi vào trạng thái onPause(). Nếu sự hiển thị của Activity khác làm cho Activity mà ta đang nói đến không còn nhìn thấy nữa thì onStop() sẽ được gọi ngay sau đó Nếu Acvitity đã vào onPause() rồi, tức là đang bị Activity khác đè lên, mà người dùng sau đó quay về lại Activity cũ, thì onResume() được gọi. Còn nếu Activity
  • 43. 29 đã vào onStop() rồi, mà người dùng quay về lại Activity cũ thì onRestart() được gọi. Trong cả hai trường hợp Activity rơi vào onPause() hoặc onStop(), nó sẽ rất dễ bị hệ thống thu hồi (tức là bị hủy) để giải phóng tài nguyên, khi này nếu quay lại Activity cũ, onCreate() sẽ được gọi chứ không phải onResume() hay onRestart(). Và cuối cùng, nếu một Activity bị hủy một cách có chủ đích, chẳng hạn như người dùng nhấn nút Back ở System Bar, hay hàm finish() được gọi,… thì onDestroy() sẽ được kích hoạt và Activity kết thúc vòng đời của nó.  Các trạng thái chính trong vòng đời activity - Running Khi Activity được kích hoạt, và được hệ thống để vào BackStack, nó sẽ bước vào trạng thái active. Với trạng thái active, người dùng hoàn toàn có thể nhìn thấy và tương tác với Activity của ứng dụng. - Pause Trạng thái này khá đặc biệt. Trạng thái tạm dừng. Như đã làm quen trên kia, trạng thái này xảy ra khi mà Activity vẫn đang chạy, người dùng vẫn nhìn thấy, nhưng Activity khi này lại bị che một phần bởi một thành phần nào đó. Chẳng hạn như khi bị một dialog đè lên. Cái sự che Activity này không phải hoàn toàn. Chính vì vậy mà Activity đó tuy được người dùng nhìn thấy nhưng không tương tác được. - Stop Trạng thái này khá giống với trạng thái tạm dừng trên kia. Nhưng khi này Activity bị che khuất hoàn toàn bởi một thành phần giao diện nào đó, hoặc bởi một ứng dụng khác. Và tất nhiên lúc này người dùng không thể nhìn thấy Activity được nữa. Hành động mà khi người dùng nhấn nút Home ở System Bar để đưa ứng dụng về background, cũng khiến Activity đang hiển thị trong ứng dụng rơi vào trạng thái dừng này. - Dead Nếu Activity được lấy ra khỏi BackStack, chúng sẽ bị hủy và rơi vào trạng thái này. Trường hợp này xảy ra khi user nhấn nút Back ở System Bar để thoát một
  • 44. 30 Activity. Hoặc lời gọi hàm finish() từ một Activity để “kill chính nó”. Cũng có khi ứng dụng ở trạng thái background quá lâu, hệ thống có thể sẽ thu hồi tài nguyên bằng cách dừng hẳn các Activity trong ứng dụng, làm cho tất cả các Activity đều vào trạng thái này. Khi vào trạng thái dead, Activity sẽ kết thúc vòng đời của nó.  Làm quen với từng callback - onCreate() Hàm này được gọi khá sớm, ngay khi activity được kích hoạt và thầm chí người còn chưa thấy gì cả thì callback này đã đc gọi rồi. Ngoài ra thì nên biết là callback này chỉ được gọi một lần duy nhất khi Activity được khởi tạo. Nó có thể được gọi lại nếu hệ thống xóa Activity này đi để lấy lại tài nguyên của hệ thống, nhưng rất hiếm khi xảy ra. Và nó còn có thể được gọi lại nếu xoay màn hình (ngang/dọc). Do đặc tính được gọi khá sớm và chỉ được gọi một lần duy nhất trong vòng đời của nó như vậy, nên sẽ tận dụng để load giao diện cho Activity ở giai đoạn này, thông qua phương thức setContentView(). Ngoài giao diện ra, có thể khởi tạo các logic nào đó chỉ chạy một lần ban đầu, như các lời gọi API, load database, tạo item list, tạo Navigation Drawer, và nhiều logic khác. onStart(): Sau khi gọi đến onCreate(), hệ thống sẽ gọi đến onStart(). Hoặc hệ thống cũng sẽ gọi lại onStart() sau khi gọi onRestart() nếu trước đó nó bị che khuất bởi Activity nào khác (một màn hình khác hoặc một ứng dụng khác) che hoàn toàn và rơi vào onStop(). Khi hệ thống gọi đến callback này thì Activity được nhìn thấy bởi người dùng và nhưng chưa tương tác được. Bởi đặc tính này mà onStart() ít được dùng đến. - onResume() Khi hệ thống gọi đến callback này thì yên tâm rằng người dùng đã nhìn thấy và đã tương tác được với giao diện.
  • 45. 31 onResume() được gọi khi Activity được khởi tạo rồi và bước qua onStart() trên kia. Hoặc khi Activity bị một giao diện nào khác che đi một phần (hoặc toàn phần), rồi sau đó quay lại Activity hiện tại. Có thể thấy rằng callback này được gọi rất nhiều lần trong một vòng đời của nó. Chính đặc điểm này của onResume() mà có thể tận dụng để quay lại tác vụ mà người dùng đang bị dang dở khi onPause() (được nói đến dưới đây) được gọi. Chẳng hạn như đang soạn nội dung cho TourNote, mà có cuộc gọi đến, sẽ lưu tạm nội dung này khi callback onPause(), để rồi khi onResume() được gọi lại sau đó khi người dùng kết thúc cuộc gọi và quay lại TourNote, sẽ khôi phục nội dung đó để người dùng tiếp tục sử dụng TourNote như chưa có bất kỳ gián đoạn nào. - onPause() Thông thường nếu có một thành phần nào đó che Activity hiện tại mà người dùng vẫn nhìn thấy Activity đó (nhìn thấy chứ không tương tác được). Chẳng hạn một popup hiện lên trên Activity. Thì onPause() của Activity sẽ được gọi. Sau này khi người dùng quay lại Activity thì onResume() sẽ được gọi. Có thể tưởng tượng rằng onPause() cũng sẽ được gọi khá nhiều lần trong một vòng đời Activity. Theo như Google thì onPause() được gọi đến khá nhanh, nếu muốn lưu trữ dữ liệu, thì nên lưu những gì nhanh gọn lẹ thôi. Nếu muốn lưu trữ các dữ liệu nặng, hoặc gọi API kết nối server chỗ này, nhiều khả năng ứng dụng sẽ không kịp thực hiện. Do đó, thay vì làm các thao tác nặng nề ở onPause(), có thể cân nhắc gọi chúng ở onStop(). - onStop() onStop() được gọi khi Activity không còn được nhìn thấy nữa, có thể một màn hình nào khác che lên hoàn toàn, có thể một ứng dụng nào đó vào foreground, hoặc người dùng nhấn nút Home để về màn hình chính. Có thể tận dụng onStop() để lưu trữ dữ liệu ứng dụng. Hoặc để giải phóng các tài nguyên đang dùng. Ngưng các API còn đang gọi dang dở.
  • 46. 32 Tuy nhiên khi onStop() được gọi không phải là lúc ta cũng nói lời tạm biệt Activity. Người dùng hoàn toàn có thể quay lại sử dụng Activity sau đó mà không cần phải khởi động lại Activity, khi này thì phương thức onRestart() và onStart() được gọi kế tiếp nhau. - onDestroy() Có thể tận dụng callback này để giải phóng các tài nguyên hệ thống mà ở onStop() chưa gọi đến. Vòng đời của một Activity kết thúc ở đây. 2.2.6.3. Service trong Android Một Service là một thành phần (component) có thể thực hiện các hoạt động lâu dài trong background và nó không cung cấp một giao diện người dùng. Một thành phần khác của ứng dụng có thể start nó, và nó tiếp tục chạy trong background ngay cả khi người dùng chuyển sang ứng dụng khác. Ngoài ra một thành phần có thể liên kết (bind) với một Service để tương tác với Service đó, thậm chí là thực hiện truyền thông liên tiến trình IPC (interprocess communication – IPC có thể hiểu là một hoạt động chia sẽ dữ liệu qua nhiều tiến trình, thông thường sử dụng giao thức truyền thông và nó phải có Client và Server). Ví dụ: một Service có thể thực hiện các giao dịch mạng, chơi nhạc, ra vào file I/O hoặc tương tác với một content provider, tất cả đều từ background. Service được chia làm 3 loại khác nhau:  Foreground Service. Một Foreground Service thực hiện một số thao tác mà người dùng chú ý, có thể thấy rõ ràng. Ví dụ một ứng dụng nghe nhạc có thể chơi một bản nhạc và control nó bằng Foreground Service. Một điều bắt buộc là Foreground Service phải hiện thị một Notification. Foreground Service sẽ tiếp tục chạy ngay cả khi người dùng không tương tác với ứng dụng.  Background Service.
  • 47. 33 Một Background Service sẽ thực hiện các hoạt động mà không được người dùng chú ý trực tiếp. Ví dụ một ứng dụng sử dụng một service để thu gom bộ nhớ chẳng hạn thì service là một Background Service, hoạt động mà người dùng không cần thiết phải để ý.  Bound Service. Một service được gọi là Bound khi một thành phần của ứng dụng ràng buộc với nó bởi lời gọi bindService(). Một Bound Service cung cấp một giao diện Client - Server cho phép các thành phần tương tác với nó: gửi yêu cầu, nhận kết quả và thậm chí là IPC. Một Bound Service chỉ chạy miễn là có một thành phần ràng buộc với nó. Có thể có nhiều thành phần ràng buộc với Bound Service cùng lúc, nhưng khi tất cả tháo bỏ ràng buộc (unbound) thì nó sẽ Destroy. Trước đây Service thường được chia là Started Service và Bound Service. Một Started Service hay là Unbound Service là service được khởi động bằng phương thức startService() từ thành phần khác. Và nó sẽ tiếp tục chạy trong background kể cả khi thành phần khởi tạo nó bị phá hủy. Đây cũng là xem là một Background Service theo cách chia trên. 2.2.6.4. Broadcast Receiver trong Android Broadcast Receiver là một trong 4 component lớn trong Android, với mục đích là lắng nghe các sự kiện, trạng thái của hệ thống phát ra thông qua Intent nhờ đó mà các lập trình viên có thể xử lí được các sự kiện hệ thống ở bên trong ứng dụng của mình. Broadcast Receiver có thể hoạt động được cả khi ứng dụng bị tắt đi, nghĩa là ở background chính vì vậy nó thường được sử dụng với service. 2.2.6.5. Content provider trong Android Content provider là một thành phần để quản lý truy cập dữ liệu, nó cung cấp các phương thức khác nhau để các ứng dụng có thể truy cập dữ liệu từ một ứng dụng khác bằng cách sử dụng ContentResolver. Content Provider có thể giúp cho một ứng dụng quản lý quyền truy cập đến dữ liệu được lưu bởi ứng dụng đó, hoặc các ứng dụng khác, và đó là một cách để ta có thể chia sẻ dữ liệu cho các ứng dụng khác nhau.
  • 48. 34 Hình dưới đây biểu diễn cho việc cách content providers quản lý việc truy cập tới bộ nhớ. Content Provider điều phối việc truy cập tới bỗ lưu trữ dữ liệu thông qua các API và các component như hình dưới, nó bao gồm: - Chia sẻ dữ liệu từ ứng dụng của bán tới các ứng dụng khác - Gửi dữ liệu sang widget - Trả về một kết quả gợi ý khi search cho ứng dụng của bạn thông qua Seach Framework sử dụng SearchRecentSuggestionsProvider - Đồng bộ dữ liệu của ứng dụng với server bằng cách sử dụng AbstractThreadedSyncAdapter - Tải dữ liệu lên UI sử dụng CursorLoader Content Provider hoạt động rất giống với một cơ sở dữ liệu, bạn có thể truy vấn, chỉnh sửa nội dung, cũng như là thêm xóa các nội dung sử dụng các phương thức: insert(), update(), delete(), query(). 2.2.7. Công cụ phát triển  Phát triển ứng dụng bằng công cụ Android studio Android Studio là môi trường phát triển tích hợp (IDE) chính thức cho việc phát triển ứng dụng Android. Nơi mà các nhà phát triển viết code và lắp ráp các ứng dụng của họ từ các gói. Và thư viện khác nhau. Thư viện phần mềm, công cụ lập trình tiện dụng, nhiều hơn để giúp xây dựng, kiểm thử. Cũng như gỡ lỗi các ứng dụng Android. Android Studio hỗ trợ một loạt các giả lập để xem trước ứng dụng, vì vậy ngay cả khi không có thiết bị thử nghiệm, vẫn có thể chắc chắn rằng mọi thứ đều hoạt động trơn tru. Bên cạnh đó, loạt công cự như lời khuyên tối ưu hóa, đồ thị doanh số bán hàng, và số liệu lấy từ phân tích sẽ giúp các nhà phát triển quản lý ứng dụng đang bán của mình và tìm ra hướng đi cụ thể với từng thiết bị Android.
  • 49. 35 Android Studio hỗ trợ các hệ điều hành Windows, Mac OS X và Linux, và là IDE chính thức của Google để phát triển ứng dụng Android gốc để thay thế cho Android Development Tools (ADT) dựa trên Eclipse.  Các tính năng nổi bật của Android studio Android studio có rất nhiều lợi ích cũng như tính năng mà người dùng có thể khai thác được và đặc biệt việc cài đặt android studio còn có thể giúp lập trình viên mô phỏng để có thể tiến hành sửa lỗi và nâng cấp sản phẩm của mình khi cần thiết. Trên trình soạn thảo mã và công cụ phát triển mạnh mẽ của IntelliJ, Android Studio cung cấp nhiều tính năng nâng cao hiệu suất khi xây dựng ứng dụng Android, chẳng hạn như: + Một hệ thống xây dựng Gradle linh hoạt + Trình mô phỏng nhanh và tính năng phong phú + Một môi trường hợp nhất có thể phát triển cho tất cả các thiết bị Android + Instant Run để đẩy các thay đổi vào ứng dụng đang chạy mà không cần xây dựng một APK mới + Tích hợp GitHub để giúp xây dựng các tính năng ứng dụng phổ biến và nhập mã mẫu + Các công cụ và khuôn khổ thử nghiệm mở rộng Lint công cụ để bắt hiệu suất, khả năng sử dụng, tương thích phiên bản, và các vấn đề khác Hỗ trợ C ++ và NDK Tích hợp hỗ trợ Google Cloud Platform , giúp dễ dàng tích hợp Google Cloud Messaging và App Engine Hỗ trợ tích hợp sâu Firebase vào trong các ứng dụng chỉ sau một click chuột.  Cách thức cài đặt và sử dụng Android studio
  • 50. 36 Việc cài đặt Android Studio trên Windows khá đơn giản. Sau khi tải xong nhấp đúp vào file cài đặt để tiến hành cài đặt. Quá trình cài đặt không có gì đặc biệt và có thể tự mình hoàn tất công đoạn này. Sau khi cài đặt xong máy tính sẽ khởi động chương trình Android Studio để có thể bắt đầu phát triển ứng dụng Android đầu tiên. + Bước 1: Chuẩn bị laptop. Như đã nói ở phần trước, để trong quá trình lập trình không xảy ra những khó chịu thì nên chuẩn bị một chiếc laptop RAM có dung lượng lớn (> 8GB) và chip i5 (hoặc tương đương) trở lên. Nếu máy có cài ổ SSD thì càng tốt. + Bước 2: Tải Java về máy. Như đã biết, để cài đặt android studio cần phải cài đặt Java trước tiên. + Bước 3: Sau khi tải Java xong thì hãy nhấn vào Install để cài Java vào máy tính. Sẽ phải đợi khoảng 5 phút. + Bước 4: Khi máy tính hoàn tất tải Java về máy thì không cần thao tác gì thêm với Java nữa mà chỉ cần để nó một chỗ là được. + Bước 5: Nhấn nút Next ở phần cửa sổ chào mừng của phần mềm android studio. + Bước 6: Tiếp tục nhấn nút Next để tiếp tục, sau đó vẫn ấn Next ở cửa sổ tiếp theo. + Bước 7: Lựa chọn tên hiển thị trên Start menu rồi nhấn Install để cài đặt. + Bước 8: Nhấn Install để cài đặt. Sau đó bấm tiếp Finish. Tuy nhiên đây chưa phải bước cuối cùng. + Bước 9: Sẽ xuất hiện một bảng và chỉ cần đợi ô update biến mất rồi sau đó nhấn tiếp phím Next. + Bước 10: Chọn giao diện trắng hoặc đen cho android studio. + Bước 11: Sẽ phải đợi một lúc lâu để hệ thống tải dữ liệu. và Xong!
  • 51. 37 2.2.8. Phát hành ứng dụng Androi Bước 1: Tạo tài khoản Developer Trước khi phát hành bất cứ ứng dụng nào lên Google Play, cần tạo cho mình tài khoản Nhà phát triển. Có thể dễ dàng đăng ký tài khoản Developer bằng tài khoản Google hiện tại của mình. Quá trình đăng ký khá đơn giản, tuy nhiên phải trả một khoản phí là $25 (tương đương với khoảng 600.000 VND). Sau khi đã đồng ý với các điều khoản và chấp nhận thỏa thuận phân phối từ phía nhà phát triển, có thể tiến hành thanh toán bằng thẻ tín dụng hoặc thẻ ghi nợ của mình. Để hoàn tất quá trình đăng ký, hãy điền vào các thông tin cần thiết về tài khoản, bao gồm cả Tên nhà phát triển, sẽ hiển thị cho khách hàng trên Google Play. Có thể mất đến 48 giờ để đăng ký được xử lý đầy đủ. Bước 2: Để bán sản phẩm, hãy liên kết tài khoản Merchant Muốn xuất bản một ứng dụng phải trả tiền hoặc có kế hoạch bán hàng trong ứng dụng, người dùng cần tạo hồ sơ trung tâm thanh toán. Chi tiết cách làm như sau:  Đăng nhập vào Play Console  Nhấp vào Tải xuống Báo cáo - Tài chính  Chọn Thiết lập tài khoản người bán ngay bây giờ  Điền thông tin doanh nghiệp Khi tạo hồ sơ, hệ thống sẽ được tự động liên kết với tài khoản nhà phát triển . Tài khoản người bán sẽ cho phép quản lý doanh số bán hàng ứng dụng và các khoản thanh toán hàng tháng, cũng như phân tích các báo cáo bán hàng ngay trong Play Console. Bước 3: Tạo App Sau khi đã thiết lập Play Console, có thể thêm ứng dụng của mình theo cách sau:
  • 52. 38  Điều hướng đến tab ‘Tất cả các ứng dụng Thẻ trong menu  Nhấp vào 'Tạo ứng dụng'  Chọn ngôn ngữ mặc định của ứng dụng từ menu thả xuống  Nhập tiêu đề cho ứng dụng  Nhấp vào Tạo  Tiêu đề của ứng dụng sẽ hiển thị trên Google Play sau khi xuất bản, tuy nhiên vẫn có thể thay tên ứng dụng sau này.  Sau khi đã tạo thành công ứng dụng của mình, sẽ được đưa đến trang nhập cửa hàng. Tại đây, sẽ cần điền các chi tiết cho danh sách cửa hàng ứng dụng. Bước 4: Chuẩn bị danh sách cửa hàng Trước khi phát hành ứng dụng trên Google Play, cần chuẩn bị danh sách cửa hàng. Đây là tất cả các thông tin chi tiết sẽ hiển thị cho khách hàng trong danh sách ứng dụng trên Google Play. Lưu ý: Không nhất thiết phải hoàn thành bước này trước khi chuyển sang bước tiếp theo. Luôn có thể lưu bản nháp và xem lại sau khi sẵn sàng xuất bản. Thông tin cần thiết cho danh sách cửa hàng được chia thành nhiều loại:  Product Details  Graphic Assets  Languages & Translations  Categorization  Contact Details  Privacy Policy Bước 5: Upload APK để phát hành ứng dụng trên Google Play Google cung cấp cho nhiều cách để tải lên và phát hành APK. Tuy nhiên, trước khi tải tệp lên, cần tạo một bản phát hành ứng dụng.
  • 53. 39 Để tạo một bản phát hành, hãy chọn ứng dụng đã tạo ở Bước 3. Sau đó, từ menu bên trái, điều hướng đến Quản lý phát hành và Phát hành ứng dụng. Tại đây, cần chọn cách phát hành cho ứng dụng của mình. Có thể chọn giữa thử nghiệm nội bộ, thử nghiệm kín, thử nghiệm mở và phát hành sản xuất. Ba bản phát hành đầu tiên cho phép kiểm tra ứng dụng của mình trong một nhóm người dùng được chọn, trước khi phát hành trực tuyến cho mọi người truy cập. Khi đã chọn xong, nhấp vào Tạo bản phát hành và làm theo các hướng dẫn trên màn hình để thêm các tệp APK, đặt tên và mô tả bản phát hành. Sau khi hoàn thành, nhấn Save. Bước 6: Xếp hạng nội dung phù hợp Đây là công đoạn vô cùng quan trọng để phát hành ứng dụng trên Google Play bởi các app không được xếp hạng nội dung có thể bị xóa khỏi cửa hàng này. Để đánh giá ứng dụng, cần điền vào bảng câu hỏi xếp hạng nội dung, có thể chọn ứng dụng của mình trong Play Console. Hãy chắc chắn rằng nhập thông tin chính xác. Việc trình bày sai nội dung ứng dụng có thể dẫn đến việc bị đình chỉ hoặc xóa khỏi Cửa hàng Google Play. Bên cạnh đó, xếp hạng nội dung phù hợp cũng sẽ giúp tiếp cận đúng đối tượng, điều này cuối cùng sẽ cải thiện tỷ lệ tương tác. Bước 7: Thiết lập giá và phân phối Khi đã xác định được từ chiến lược bán ứng dụng của mình, các ứng dụng sẽ kiếm tiền ra sao, hãy tiếp tục và thiết lập ứng dụng của mình dưới dạng miễn phí hoặc trả phí. Cũng có thể chọn các quốc gia muốn phân phối ứng dụng của mình và chọn tham gia để phân phối cho các thiết bị và chương trình Android cụ thể. Lưu ý: Luôn có thể chuyển trạng thái ứng dụng từ trả phí sang miễn phí nhưng điều ngược lại thì không. Bước 8: Phát hành ứng dụng trên Google Play Đây là bước cuối cùng của quá trình. Hãy kiểm tra danh sách cửa hàng, xếp hạng nội dung và các phần phân phối và giá cả của ứng dụng xem đã có dấu kiểm
  • 54. 40 màu xanh lục bên cạnh chúng hay chưa. Nếu đã có dấu, chỉ cần làm theo các hướng dẫn của hệ thống là ứng dụng đã được phát hành thành công rồi.
  • 55. 41 CHƯƠNG 3: NỘI DUNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU 3.1. CÁC CÔNG CỤ PHÁT TRIỂN 3.1.1. Cài đặt công cụ Android Studio Android Studio là môi trường phát triển tích hợp chính thức dành cho phát triển nền tảng Android. Nó được ra mắt vào ngày 16 tháng 5 năm 2013 tại hội nghị Google I/O. Android Studio được phát hành miễn phí theo giấy phép Apache Licence 2.0 Tải Android Studio 1.12 theo đường dẫn: https://developer.android.com/studio Hình 3.1. Cài đặt Android Studio Sau khi tải xong và tiến hành cài đặt, ta sẽ dùng Android Code Studio để xây dựng ứng dụng 3.1.2. Tiến hành cài đặt JDK Java Development Kit (Bộ công cụ phát triển Java - viết tắt là JDK) này cho phép viết code và chạy các chương trình lập trình Java..
  • 56. 42 Truy cập trang web chính thức của jdk để download bộ cài đặt: https://www.oracle.com/java/technologies/javase-downloads.html Hình 3.2. Cài đặt JDK Sau khi tải xong JDK, tiến hành cài đặt biến môi trường(Environment Variables) trong JAVA:PATH và CLASSPATH
  • 57. 43 Hình 3.3. Cài đặt môi trường 3.2. PHÂN TÍCH THIẾT KẾ HỆ THỐNG 3.2.1. Biểu đồ Use case Hình 3.4. Biểu đồ Use case người dùng
  • 58. 44 Hình 3.5. Biểu đồ Use case quản trị viên 3.2.2. Biểu đồ lớp Hình 3.6. Biểu đồ lớp
  • 59. 45 3.3. THIẾT KẾ GIAO DIỆN Giao diện ứng dụng nhằm đáp ứng nhu cầu truy xuất thông tin sản phẩm của khách hàng. Giúp công ty quản lý được sản phẩm với các chức năng thêm, xóa, sửa và tạo ra mã vạch của 1 sản phẩm.
  • 60. 46 3.3.1. Giao diện chức năng chính 3.3.1.1. Giao diện màn hình chính Hình 3.7. Giao diện màn hình chính Màn hình chính giúp khách hàng xem được trang web chính của công ty, giới thiệu về công ty, các sản phẩm của công ty, liên hệ với công ty và quét mã vạch sản phẩm. Giúp khách hàng truy xuất thông tin nguồn gốc của sản phẩm.
  • 61. 47 3.3.1.2. Giao diện lựa chọn các chức năng Hình 3.8. Giao diện lựa chọn các chức năng Giúp khách hàng có thể truy xuất nguồn gốc sản phẩm bằng cách truy cập trực tiếp camera hoặc thư viện ảnh trên điện thoại để lấy mã vạch và tiến hành quét mã vạch. Chọn “SCAN NOW”, để quét mã trực tiếp bằng camera hoặc chọn “PICTURE SCAN” để quét mả từ ảnh thư viện. Admin có thế thông qua một nút bấm trên thanh toolbar để vào giao diện đăng nhập và sau đó tiến hành quản lý sản phẩm
  • 62. 48 3.3.1.3. Truy cập vào camera để thực hiện chức năng quét mã qr Hình 3.9. Giao diện quét mã vạch bằng camera Khách hàng chọn chức năng quét mã “SCAN NOW”, hệ thỗng cho phép truy cập vào camera trên điện thoại và thực hiện tiến trình quét lấy mã. Chọn “TÌM KIẾM SP” để tìm kiếm sản phẩm tương ướng với mã vạch vừa quét được., chọn “FINISH” để thoát chương trình quét hoặc chọn “SCAN AGAN” để thực hiện quét lại.
  • 63. 49 3.3.1.4. Truy cập vào thư viện ảnh để thực hiện chức năng quét mã qr Hình 3.10. Giao diện quét mã vạch bằng hình ảnh Khách hàng chọn “PICTURE SCAN”chức năng quét mã qr bằng hình ảnh, hệ thống cho phép truy cập vào thư viện hình ảnh trên điện thoại và thực hiện tiến trình quét mã lấy mã. Chọn “TÌM KIẾM SP” để tìm kiếm sản phẩm tương ướng với mã vạch vừa quét được., chọn “FINISH” để thoát chương trình quét hoặc chọn “SCAN AGAN” để chọn hình ảnh khác thực hiện quét lại.
  • 64. 50 3.3.1.5. Giao diện xem thông tin 1 sản phẩm Hình 3.11. Giao diện xem thông tin 1 sản phẩm Sau khi khách hàng quét mã vạch, nếu tìm thấy sản phẩm có mã vạch trùng với mã vạch khách hàng dùng để quét, sẽ hiện lên một giao diện chứa đầy đủ các thông tin mã vạch sản phẩm, tên sản phẩm, mô tả sản phẩm, ngay san xuất, lô hàng và hình ảnh sản phẩm. Nhấn “cancel” để thoát.
  • 65. 51 3.3.2. Giao diện chức năng phụ 3.3.2.1. Giao diện đăng nhập cho admin Hình 3.12. Giao diện đăng nhập cho admin Chỉ có admin mới có tài khoản và mật khẩu để đăng nhập vào để tiến hành quản lí sản phẩm
  • 66. 52 3.3.2.2. Giao diện xem liệt kê các sản phẩm Hình 3.13. Giao diện xem liệt kê các sản phẩm Ở giao diện này là giao diện quản lí sản phẩm Trên màn hình liệt kê tất cả các sản phẩm hiện tại công ty đang có. Trên thanh toolbar có 1 nút bấm để chuyển sang giao hiện tạo mã vạch cho sản phẩm và 1 nút bấm chuyển sang giao diện thêm sản phẩm Trên mỗi dòng thông tin sản phẩm đã liệt kê ra, có 2 nút bấm: 1 nút cho ta có thể xóa sản phẩm đó đi, và 1 nút giúp ta có thể chỉnh sửa, cập nhập lại thông tin sản phẩm.
  • 67. 53 3.3.2.3. Giao diện tạo mã vạch cho sản phẩm Hình 3.14. Giao diện tạo mã vạch cho sản phẩm Sau khi nhập mã mình muốn tạo ra mã vạch, ta nhấn nút “TẠO MÃ QR”. Hệ thống sẽ tạo ra một mã vạch được hiển thị dưới dạng hình ảnh. Ta có thể tải hình ảnh mã vạch đã tạo về máy bằng cách nhấn vào nút “LƯU MÃ QR”.
  • 68. 54 3.3.2.4. Giao diện thêm 1 sản phẩm Hình 3.15. Giao diện thêm 1 sản phẩm Ở đây ta tiến hành thêm 1 sản phẩm bằng cách nhập đầy đủ thông tin sản phẩm và lấy hình ảnh sản phẩm từ máy lên. Nhấn nút “THÊM SP”để tiến hành thêm sản phẩm hoặc nhấn nút “HỦY” để thoát, không thêm sản phẩm nữa.