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

Báo Cáo Tìm Hiểu Đề Tài QRCODE và làm ứng dụng đọc mã QRCODE trên Android

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

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
CƠ SỞ TP.HỒ CHÍ MINH


B
Đề ÁO
tài: Tìm hiểu về QR Code
Môn học: Nhập môn CNPM
Giảng viên hướng dẫn: Võ Xuân Thể
Thực hiện: Nguyễn Hoàn Nam Dương
Lớp: D14CQAT01-N
MSSV: N14DCAT032

TPHCM,4/2017


MỤC LỤC


Tìm hiểu về mã QR Code

I. Những điều cần biết về mã QR
1 Mã QR là gì ?
Mã QR một mã ma trận hay còn gọi là mã hai chiều (Two-Dimensional) được
phát triển bởi công ty Denso Wave (Nhật Bản) vào năm 1994. “QR" là viết tắt của
từ "Quick Response", trong tiếng Anh có nghĩa là đáp ứng nhanh, vì người tạo ra
nó có ý định cho phép mã được giải mã ở tốc độ cao. Mã QR chứa thông tin theo cả
hướng dọc và ngang , trong khi mã vạch (Barcode) chỉ chứa dữ liệu theo một hướng
đồng thời QRcode còn có thể chứa khối lượng lớn hơn thông tin so với mã vạch
thông thường.
1. Lịch sử phát triển


Sơ khai của QRcode là Barcode – một loại mã vạch được phát minh năm 1973
và sữ dụng rộng rãi trong nhiều lĩnh vực trên thế giới. Barcode bùng nỗ và phát
triển khá mạnh cho đến hiện tại do tốc độ đọc, độ chính xác và các tính năng ưu việt
khác. Tuy nhiên, với sự hạn chế về nhiều mặt đặt biệt là về khối lượng thông tin mà
BarCode có thể lưu trữ (chỉ khoảng 20 số hoặc chữ số) nên các loại mã 2-D đã được
sinh ra để giải quyết những vấn đề đó.

Barcode

2D Code with stacked bar
codes

2D Code (matrix type)

Mã 2D ( Two-Dimensional) ban đầu thật chất là những mã Barcode xếp chồng
lên nhau tạo thành (stacked Barcode) và sau đó phát triển thêm thành mã nhiều loại
mã 2D khác nhau với phương pháp ma trận để lưu trữ nhiều thông tin hơn. Trong
đó có nhiều loại mã được sữ dụng phổ biến hiện nay trong các lĩnh vực công nghệ
khoa học như : PDF417, DataMatrix, Mã Maxi... nhưng thông dụng hơn cả là mã
QRCode.
Hệ thống mã QR được Denso Wave phát minh măm 1994. Mục đích chính là
theo dõi xe cộ trong quá trình sản xuất; nó được thiết kể để cho phép quét các bộ
phận với tốc độ cao. Mặc dù những ứng dụng ban đầu chỉ để theo dõi các bộ phận
của xe, nhưng hiện nay mã QR được ứng dụng trong nhiều ngữ cảnh khác nhau bao
gồm cả các ứng dụng theo dõi thương mại và ứng dụng hướng tới sự tiện lợi cho
những người sử dụng điện thoại di động. Mã QR có thể được sử dụng để hiển thị

16



Tìm hiểu về mã QR Code

chữ cho người sử dụng, thời gian diễn ra một sự kiện, để thêm danh thiếp vCard vào
thiết bị của người sử dụng, để mở URI, để viết e-mail hoặc tin nhắn hay thậm chí là
thông tin định vị vị trí địa lý. Người sử dụng có thể tạo và in mã QR của riêng họ
cho những người khác quét và sử dụng để ghé thăm một trong các trang phải trả
tiền và miễn phí thông qua mã QR. Nó hiện trở thành một trong những kiểu sử dụng
nhiều nhất trong nhóm mã vạch hai chiều.
II. Những tính năng chính của mã QR
1. Các tính năng quan trọng
- QR code có thể lưu giữ thông tin chứa vài chục đến vài nghìn ký tự và chữ số
vượt trội hơn nhiều so với Barcode truyền thống chỉ lưu trữ được khoảng 20 kí tự.
Tối đa 7,089 ký tự có thể được mã hoá trong một biểu tượng.

Biểu tượng Mã QR có kích thước này có thể mã hoá 300 ký tự chữ và số.
- QR Code có khả năng xử lý nhiều loại dữ liệu phức tạp, chẳng hạn như các ký
tự số và chữ, Kanji, Hiragana, chữ Khmer, chữ Hán, chữ Hebrew... ký hiệu, mã nhị
phân và control codes.

Một
đoạn
chữ
tiếng
Nhật được mã hóa bởi mã QR
*Khả năng lưu trữ dữ liệu của mã QR
- Số đơn thuần: Tối đa 7.089 kí tự
- Số và chữ cái: Tối đa 4.296 kí tự
- Số nhị phân (8 bit):

Tối đa 2.953 byte


- Kanji/Kana:

Tối đa 1.817 kí tự

16


Tìm hiểu về mã QR Code

- Kích thước nhỏ gọn tiện dụng hơn BarCode : Vì QR Code mang thông tin
theo chiều ngang và cả chiều dọc nên QR Code có khả năng mã hoá cùng một
lượng dữ liệu trong khoảng một phần mười kích thước so với BarCode. Mặc khác
thì mã QR còn có dạng Vi mã QR (Micro QRcode) với kích thước rất nhỏ và tiện
dụng.

Kích thước BarCode so với QRCode khi lưu cùng 1 dữ liệu
- Một tính năng khác vượt trội của mã QR là khi mã của chúng ta bị bẩn, hư hại
một phần nhẹ thì vẫn có thể đọc được dữ liệu. Bởi vì mỗi mã QR sẽ có một mức sữa
lỗi nhất định (sử dụng thuật toán chỉnh sửa lỗi Reed-Solomon) để đảm bảo cho dữ
liệu không bị mất đi, mức này càng cao thì lượng thông tin chứa trên QR code sẽ
giảm đi. Từ đó người dùng có thể tùy biến, chỉnh sữa mã QR của mình phục vụ cho
nhiều mục đích khác nhau.
*Khả năng sửa chữa lỗi
- Mức L 7% số từ mã (codeword) có thể được phục hồi.
- Mức M 15% số từ mã có thể được phục hồi.
- Mức Q 25% số từ mã có thể được phục hồi.
- Mức H 30% số từ mã có thể được phục hồi.

Một vài mã QR code phục vụ cho việc quảng cáo


16


Tìm hiểu về mã QR Code

Mã QR bị lỗi và mất một phần nhưng vẫn đọc được dữ liệu
- Dù nằm ở vị trí nào dù ngược – xuôi – ngang – dọc thì việc đọc code vẫn rất dễ
dàng mà không cần phải xoay chỉnh thiết bị đọc hay mã code cho đúng định dạng.
Khả năng này có được chủ yếu là nhờ cấu trúc của mã QR có các hoa văn định vị
nên mã QR có thể được đọc ở 360°.

Cấu trúc cơ bản của 1 mã QR
- Tính năng Structured Append: tính năng này cho phép Mã QR có thể được
chia thành nhiều vùng dữ liệu. Ngược lại, thông tin được lưu trữ trong nhiều biểu
tượng Mã QR có thể được tái tạo lại dưới dạng các ký hiệu dữ liệu đơn.

Nhiều kí tự số của 1 mã QR được chia thành nhiều mã QR
- Ngoài ra QR còn được phát triển thành nhiều loại với nhiều ứng dụng riêng
đang được sữ dụng trong khá nhiều lĩnh vực qua những đặt tính riêng chẳng hạn
như Micro QR Code, IQR Code, SQR code, Frame QR...
2. Những hạn chế

16


Tìm hiểu về mã QR Code

Bên cạnh những tính năng vô cùng hửu ích mã QR cũng có một vài hạn chế rất
nhỏ như sau:

- Phải có thiết bị đọc mã QR hoặc smartphone có phần mềm hổ trợ tính năng
đọc mã QR.
- Mức độ phổ biến trong thực tế so với Barcode còn thấp hơn khá nhiều lần mặc
khác các doanh nghiệp, tổ chức cá nhân đã khá hài lòng với Barcode nên sẽ chưa
sẳn sàng bỏ ra chi phí đầu tư cho các thiết bị đọc mã QRcode.
III. Cách tạo ra mã QR.
2 Các bước cơ bản trong thuật toán tạo mã QR
Dưới đây là khái quát các bước cơ bản về thuật toán tạo ra mã QR:


Bước 1: Data Analysis

Chuẩn QR có bốn chế độ mã hóa văn bản: số, chữ số, nhị phân, và chữ Kanji.
Mỗi chế độ mã hoá văn bản như một chuỗi nhị phân (1 và 0), nhưng lại sử dụng
một phương pháp khác nhau để chuyển đổi văn bản thành chuổi nhị phân, và mỗi
phương pháp mã hóa được tối ưu hoá để mã hóa dữ liệu với chuỗi ngắn nhất có thể.
Do đó, bước đầu tiên của chúng ta là thực hiện phân tích dữ liệu để xác định xem
văn bản của chúng ta có thể được mã hoá ở chế chỉ số, chữ số, nhị phân, hoặc chữ
Kanji, sau đó chọn chế độ tối ưu cho văn bản của chúng ta.


Bước 2: Data Encoding

Bây giờ chúng ta đã chọn chế độ mã hoá thích hợp cho văn bản của chúng ta,
bước tiếp theo là mã hoá văn bản. Kết quả của bước này là một chuỗi các bit được
chia thành các từ mã dữ liệu có chiều dài 8 bit.
VD: Đoạn chử Hello World được mã hóa với QR code cho ra kết quả:
00100000 01011011 00001011 01111000 11010001 01110010 11011100
01001101 01000011 01000000 11101100 00010001 11101100+



Bước 3: Error Correction Coding

Mã QR sử dụng bộ sửa lỗi Reed-Solomon . Điều này có nghĩa là sau khi chúng
ta tạo một chuỗi nhị phân dữ liệu đại diện cho văn bản của mình, chúng ta phải sử
dụng các chuỗi này để tạo mã số hiệu chỉnh lỗi bằng cách sử dụng một quá trình gọi
là Reed-Solomon error correction.
Máy quét QR đọc cả mã số dữ liệu và từ mã hoá sửa lỗi. Bằng cách so sánh cả
hai , máy quét có thể xác định xem nó đọc dữ liệu có chính xác hay không, và nó có
thể sửa lỗi nếu đọc dữ liệu không chính xác.

16


Tìm hiểu về mã QR Code



Bước 4: Structure Final Message

Các dữ liệu mã hoá và sửa lỗi được tạo ra trong các bước trước đây phải được
sắp xếp theo thứ tự thích hợp. Đối với mã QR lớn, dữ liệu và mã hiệu chỉnh lỗi
được tạo ra trong các khối, và các khối này phải được xen kẽ theo các QR code
specification.


Bước 5: Module Placement in Matrix

Sau khi tạo mã dữ liệu và mã hiệu chỉnh lỗi và sắp xếp chúng theo đúng thứ tự,
chúng ta phải đặt các bit trong ma trận mã QR. Các từ mã được sắp xếp trong ma

trận một cách cụ thể. Trong bước này, chúng ta cũng sẽ đặt các patterns cho tất cả
mã QR, chẳng hạn như các boxes ở ba góc

- Finder patterns(FP):
Là ba khối ở các góc
của mã QR ở trên cùng
bên trái, trên cùng bên
phải và dưới cùng bên
trái.
- Separators: Là các
khoảng trắng bên cạnh
FP.
- Alignment patterns:
Tương tự như các FP,
nhưng nhỏ hơn, và được
đặt trong suốt.
- Timing patterns: Là
các đường chấm chấm
kết nối các FP.
- Dark module: Là những module màu đen.



Bước 6: Data Masking

Một số patterns trong ma trận mã QR có thể khiến máy quét mã QR khó đọc mã
chính xác. Để chống lại việc này, QR Code Specification đã xác định 8 mask
pattern, mỗi mã này sẽ thay đổi mã QR theo một particular pattern. Chúng ta phải
xác định pattern nào trong số các mask pattern này sẽ dẫn đến mã QR có ít đặc điểm
không mong muốn. Điều này được thực hiện bằng cách đánh giá mỗi ma trận được

che dấu dựa trên bốn penalty rules. Mã QR cuối cùng của bạn phải sử dụng mẫu
mask pattern dẫn đến penalty score thấp nhất.

16


Tìm hiểu về mã QR Code

Những hình ảnh trên cho thấy tám mã QR, mỗi hình một mask pattern. Tất cả
tám mã QR trong ví dụ này mã hóa cùng một dữ liệu. Như hình trên, mask pattern
có điểm số thấp nhất là mask pattern 0. Do đó, trong ví dụ này, bộ mã hóa QR nên
sử dụng mask pattern 0 khi xuất ra mã QR cuối cùng.


Bước 7: Định dạng và Thông tin Phiên bản

Bước cuối cùng là thêm định dạng và thông tin về phiên bản vào mã QR bằng
cách thêm các điểm ảnh trong các khu vực particular của phần mã để trống trong
các bước trước đó. Các điểm ảnh định dạng xác định mức độ hiệu chỉnh lỗi và mask
pattern được sử dụng trong mã QR này.



QR đã được tạo hoàn tất

16


Tìm hiểu về mã QR Code


3 Công cụ online tạo mã QR đơn giản
Hiện tại có rất nhiều ứng dụng để tạo QR code hoàn toàn miễn phí. Chỉ cần
gõ từ khóa “QR code generator” trên công cụ tìm kiếm sẽ tìm được rất nhiều công
cụ trực tuyến giúp tạo mã QR.

Tạo mã QR miễn phí với website :
VI. Tạo ứng dụng đọc mã QR trên Android với Zxing
1. Giới thiệu về thư viện Zxing
Zxing (Zebra Crossing) là một thư viện mã nguồn mở, cho phép người dùng
quét "graphical barcodes" 1-D hoặc 2-D với camera trên thiết bị Android của họ xử
lý nhiều định dạng mã vạch 1 chiều và 2 chiều, được cài đặt bằng Java. Mục đích
của thư viện này là sử dụng máy ảnh trên điện thoại di động để chụp và giải mã các
mã vạch trên thiết bị, không cần phải kết nối với máy chủ. Hiện tại thư viện hỗ trợ
các định dạng mã vạch sau: UPC-A và UPC-E, EAN-8 và EAN-13, Code 39, Code
128, QR Code, Data Matrix, ITF. Thư viện này được chia làm nhiều phần, các phần
sau vẫn đang được hỗ trợ và phát triển thường xuyên.
Mã nguồn của thư viện Zxing: .
2. Các bước tạo ứng dụng đơn giản đọc mã QR bằng Android Studio


Bước 1: Creating project

16


Tìm hiểu về mã QR Code

Tạo Project mới trong Android Studio, goto File ⇒ New ⇒ New Projects




B
ư

c

2: Thêm thư viện Zxing vào “dependencies”
Để biên dịch thư viện ZXing, chúng ta cần thêm thư viện vào dependencies
ứng dụng với nội dung:
dependencies {
compile 'com.google.zxing:core:3.2.1'
compile "com.journeyapps:zxing-androidembedded:3.2.0@aar"
}

16


Tìm hiểu về mã QR Code



Bước 4: Tạo giao diện

ta tiến
tạo một

Chúng
hành

Activity có tên là ReaderActivity bằng cách click phải vào app ⇒ new ⇒ Activity.

Kế tiếp trong file Activity_Reader.xml chúng ta tiến hành thiết kế giao diện như
hình bên trên:

16


Tìm hiểu về mã QR Code

android:id="@+id/scan_btn"
style="@android:style/Widget.Material.Light.Button.Toggle"
android:layout_width="160dp"
android:layout_height="97dp"
android:background="@android:drawable/button_onoff_indicator_on"
android:elevation="0dp"
android:text="SCAN NOW"
android:textColor="@android:color/background_light"
android:textSize="25dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.39" />
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@android:dimen/thumbnail_height"
android:fontFamily="@string/app_name"

android:text="QRCODE SCANNER"
android:textAppearance="@style/TextAppearance.AppCompat.Display1"
android:textColor="@color/zxing_status_text"
android:textSize="40sp"
app:layout_constraintBottom_toTopOf="@+id/scan_btn"
app:layout_constraintHorizontal_bias="0.49"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.32999998" />
android:id="@+id/kq"
android:layout_width="0dp"
android:layout_height="200dp"
android:elevation="0dp"
android:gravity="center"
android:textColor="@color/zxing_status_text"
android:textSize="20sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.49"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.78" />

Đoạn code trên tạo ra 1 Button scan_btn để hiện thị phím Scan, 1 TextView để
hiện thị văn bản: “QRCODE SCANNER” và TextView kq dùng để hiện thị kết quả
sau khi Scan.

16



Tìm hiểu về mã QR Code



Bước 5: Tạo những hàm xử lý trong file ReaderActivity.java
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
public class ReaderActivity extends AppCompatActivity {
private Button scan_btn;
private TextView kq;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_reader);
scan_btn = (Button) findViewById(R.id.scan_btn);
kq = (TextView) findViewById(R.id.kq);
final Activity activity = this;
scan_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
IntentIntegrator integrator = new
IntentIntegrator(activity);
integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);
integrator.setPrompt("Hãy di chuyển đến mã QRCODE");
integrator.setCameraId(0);
integrator.setBeepEnabled(false);
integrator.setBarcodeImageEnabled(false);
integrator.initiateScan();

}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
IntentResult result =
IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if(result != null){
if(result.getContents()==null){
Toast.makeText(this, "Không thể tìm được mã QRCODE",
Toast.LENGTH_LONG).show();
}
else {
kq.setText("Kết quả: " + result.getContents());
}
}
else {
super.onActivityResult(requestCode, resultCode, data);
}
}
}

16


Tìm hiểu về mã QR Code




Bước 6: Build project và cài đặt ứng dụng trên Smart Phone Android

- Để Build project chúng ta chọn Build ⇒ Build APK và chương trình sẽ xuất ra
file app-debug.apk trong thư mục : ~\QRCode\app\build\outputs\apk .
- Và cuối cùng là cài đặt file trên cho Smart Phone và tiến hành test:

V. Ứng dụng của mã QR

-Kiểm kê hàng hóa, thông tin sản phẩm
-Thông tin cá nhân: trên card visit.
-Lưu trữ URL: điện thoại chỉ việc đọc QR Code để lấy URL, sau đó tự động mở
trình duyệt.
- Sử dụng tại các bến xe bus, xe lửa, tàu điện ngầm: người sử dụng khi quét mã QR
Code của bến xe sẽ biết thông tin về các chuyến xe.
-Sử dụng tại các Viện bảo tàng: người sử dụng chỉ cần quét mã QR Code đặt cạnh
vật trưng bày là biết được thông tin chi tiết và cập nhật về đồ vật đó.
-Sử dụng để mua hàng ở bất kỳ đâu: người sử dụng khi đi tàu điện ngầm, xe bus …
nếu thấy thích mặt hàng đang quảng cáo trên đó có thể đặt mua ngay lập tức thông
qua QR Code và Mobile Internet.
-Sử dụng tại siêu thị: để biết được thông tin, hướng dẫn nấu ăn cũng như hàm lượng
dinh dưỡng của những thức ăn cần mua.
-Sử dụng tại các buổi hội thảo, thuyết trình, tổ chức sự kiện: người tham gia có thể
sử dụng QR Code thay cho Business Card của mình.

16


Tìm hiểu về mã QR Code

-Sử dụng với các tờ báo, tạp chí giấy: người đọc có thể quét mã QR Code được in

trong tờ báo, tạp chí giấy để truy cập phiên bản online/mobile của tờ báo, tạp chí
này.
-Sử dụng tại các chương trình nhạc hội, live show, bar, club: để xác định xem tiết
mục, ca sỹ, ban nhạc, bài nhạc đang chơi, tác giả bài nhạc.
-Sử dụng tại nhà hàng, khách sạn, coffee shop: để biết được công thức và cách chế
biến món ăn, thức uống, thông tin khách sạn.
-Sử dụng với đồ vật cá nhân (xe, áo thun…) : cung cấp thông tin chi tiết về món
hàng, xuất xứ, giá cả.
-Sử dụng trong truyền thông quảng cáo: dần thay thế các quảng cáo dưới hình thức
in ấn và phát tờ bướm. QR Code sẽ đính kèm thông tin thương hiệu trên các ấn
phẩm, bảng hiệu cửa hàng, các bảng quảng cáo, billboard.
-Sử dụng mã QR để tạo sự khác biệt trong chữ ký email thường dùng; trên những
món quà, để tạo đặc biệt và bất ngờ cho người nhận, và làm cho người nhận thấy tò
mò về nội dung của QR Code đính kèm.
* Một vài ví dụ về ứng dụng của QR Code:

16


Tìm hiểu về mã QR Code

Vcard bằng mã QRCode
Chỉ đường bằng QR code

Thanh
toán
bằng
cách
quét
QR

Code

Tài
liệu
tham
khảo

16


Tìm hiểu về mã QR Code

1. “What is QR code ?” (12 tháng 4 năm

2017).
2. “QR Code” (12 tháng 4 năm
2017).
3. “Android QR Code Scanner using ZXingScanner Library Tutorial”
(15 tháng 4 năm 2017).
4. QR Code Tutorial: Introduction (15 tháng 4 năm 2017)..

16



×