ZXing đọc mã vạch Android

Sử dụng bộ thư viện ZXing để tạo và scan mã QR Code trong ứng dụng Android

QR Code: mã vạch thế hệ mới
QR Code, viết tắt của Quick response code (tạm dịch “Mã phản hồi nhanh”) hay còn gọi là mã vạch ma trận (matrix-barcode) là dạng mã vạch hai chiều (2D) có thể được đọc bởi một máy đọc mã vạch hay smartphone (điện thoại thông minh) có chức năng chụp ảnh (camera) với ứng dụng chuyên biệt để quét mã vạch.

 Image
Mã QR đi vào đời sống
Tuy còn xa lạ với mọi người nhưng Mã QR đã và đang đi vào đời sống hiện đại, hiện diện ở khắp nơi, từ những cao ốc lớn đến những namecard trao tay, từ những thiếp mời các sự kiện công nghệ, hội thảo hay chỉ đơn giản là để nhập thêm bạn trên BlackBerry Messenger (quét mã QR để nhận dạng số PIN).

Cách đọc mã QR code
Việc đọc các mã QR code khá đơn giản, dưới đây mình giới thiệu một vài phần mềm thông dụng cho các loại điện thoại.
Bài viết này sẽ giới thiệu các bạn cách sử dụng bộ thư viện mã nguồn mở ZXing 2.2
Bước 1. Download mã nguồn thư viện Zxing trên trang chủ cung cấp.
Link download: https://code.google.com/p/zxing/downloads/list
Bước 2. : Tạo zxing core dùng Apache Ant
Link download Apache Ant:  http://ant.apache.org/ivy/download.cgi
Dùng cmd trỏ đến bộ thư viện Zxing ở đường dẫn src/ và execute câu lệnh: ant -f core/build.xml, kết quả là chúng ta có được file core.jar để sử dụng cho bước tiếp theo
Bước 3: Build ZXing Android trên Eclipse
Tạo mới project:  (File –> New –> Android Project). Tiếp tục chọn  “Create project from existing source”, đặt tên project là ZXing Lib.
Click “Browse” trỏ đến đường dẫn chứa bộ thư viện ZXING  đã download trong thư mục android/ . Click OK-> Finish.
 Right-click vào ZXing
  project –> properties –> Java Build Path –> Add External Jars –> Trỏ đến đường dẫn và ccos chứa core.jar và chọn file này –> Open –> OK.
Right-click vào ZXing project –> properties –> Android –> Tick “Is Library” checkbox –>OK
Bước 4Tạo mới project của bạn và thêm bộ thư viện ZXing Android đã tạo ở bước trên.
Thêm bộ thư viện vào project
Image
Cấu hình buid path đến file core.jar cho project của bạn đã tạo
Image
Image
AndroidManifest.xml
<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android&#8221;
package=”com.example.qrdelux”
android:versionCode=”1″
android:versionName=”1.0″ >
<uses-sdk
android:minSdkVersion=”8″
android:targetSdkVersion=”15″ />
<uses-permission android:name=”android.permission.CAMERA” />
<uses-permission android:name=”android.permission.FLASHLIGHT” />
<application
android:allowBackup=”true”
android:icon=”@drawable/qrcode_oranges”
android:label=”@string/app_name”
android:theme=”@style/AppTheme” >
<activity
android:name=”com.example.qrdelux.StartAppActivity”
android:label=”@string/app_name” >
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
<activity
android:name=”com.google.zxing.client.android.CaptureActivity”
android:configChanges=”orientation|keyboardHidden”
android:screenOrientation=”landscape”
android:theme=”@android:style/Theme.NoTitleBar.Fullscreen”
android:windowSoftInputMode=”stateAlwaysHidden” >
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.DEFAULT” />
</intent-filter>
<intent-filter>
<action android:name=”com.google.zxing.client.android.SCAN” />
<category android:name=”android.intent.category.DEFAULT” />
</intent-filter>
</activity>
<activity
android:name=”com.example.qrdelux.QRMainActivity”
android:label=”@string/app_name” >
</activity>
</application>
</manifest>
Code activity chính:
package com.example.qrdelux;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class StartAppActivity extends Activity {
TextView tvStatus;
TextView tvResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start_app);
Button btnShowQRCode=(Button)findViewById(R.id.btnGenerateQR);
btnShowQRCode.setOnClickListener(showQRCode);
Button btnScanQRCode=(Button)findViewById(R.id.btnScanQR);
btnScanQRCode.setOnClickListener(scanQRCodeListener);
tvStatus = (TextView) findViewById(R.id.tvStatus);
tvResult = (TextView) findViewById(R.id.tvResult);
}
private OnClickListener showQRCode= new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
EditText qrInput=(EditText)findViewById(R.id.qrInput);
String qrInputText=qrInput.getText().toString();
Intent intent=new Intent(StartAppActivity.this,QRMainActivity.class);
intent.putExtra(“QR_INPUT”, qrInputText);
startActivity(intent);
}
};
private OnClickListener scanQRCodeListener=new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
/*Intent intent = new Intent(getApplicationContext(),
com.google.zxing.client.android.CaptureActivity.class);
startActivity(intent);*/
try {
Intent intent = new Intent(“com.google.zxing.client.android.SCAN”);
intent.putExtra(“SCAN_MODE”, “QR_CODE_MODE,PRODUCT_MODE”);
startActivityForResult(intent, 0);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Toast.makeText(getApplicationContext(), “ERROR:” + e, 1).show();
}
}
};
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
System.out.print(“O dau vay???”);
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
System.out.print(“Where???”);
String contents = data.getStringExtra(“SCAN_RESULT”);
String format = data.getStringExtra(“SCAN_RESULT_FORMAT”);
tvStatus.setText(format);
tvResult.setText(contents);
// Handle successful scan
} else if (resultCode == RESULT_CANCELED) {
tvStatus.setText(“Press a button to start a scan.”);
tvResult.setText(“Scan cancelled.”);
}
}
}
}
Layout: (activity_start_app.xml)
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android&#8221;
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:orientation=”vertical” >
<TextView
android:id=”@+id/textView1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”@string/required_input”
android:textAppearance=”?android:attr/textAppearanceMedium” />
<EditText
android:id=”@+id/qrInput”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:ems=”10″ >
<requestFocus />
</EditText>
<Button
android:id=”@+id/btnGenerateQR”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”@string/generateQRCode” />
<Button
android:id=”@+id/btnScanQR”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”@string/scanQRCode” />
<TextView
android:id=”@+id/tvStatuslbl”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_weight=”0.03″
android:text=”Status”
android:textAppearance=”?android:attr/textAppearanceLarge”
android:textColor=”@android:color/darker_gray” />
<TextView
android:id=”@+id/tvStatus”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_weight=”1″
android:textColor=”@android:color/black”
android:textAppearance=”?android:attr/textAppearanceLarge” />
<TextView
android:id=”@+id/tvResultlbl”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_weight=”0.03″
android:text=”Result”
android:textColor=”@android:color/darker_gray” />
<TextView
android:id=”@+id/tvResult”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_weight=”2.95″
android:textColor=”@android:color/black”
/>
</LinearLayout>

Share:

0 Nhận xét

Categories

. . . 1 [English | DVD] Trọn Bộ DVD Effortless English 3 Ajax 1 Andengine 3 Android 41 Android Studio Cài đặt và phím tắt thông dụng 1 API 1 App Android 1 Applicaiton Chat Multi Client 1 ASP.NET 9 Bài tập lập trình C/C++ có lời giải 1 Bài tập thuật toán C/C++ Và Tuyển tập đề thi olympic 2 Bắt đầu Học Lập Trình 4 Blogger 2 C/C++ 16 C# 21 Câu hỏi phỏng vấn Android 1 Cocos2d-JS 3 Cocos2d-x 3 Code game android 3 Công Cụ Lập Trình 13 Công nghệ 3 Cosos2d 1 CSS 1 Cuộc sống 15 Custom Button trong Android 2 Design Patterns 3 DevExpress 1 Đồ Án 1 DOREMON - NOBITA 2 Dự án 1 Ebook Android 1 English 8 Example Custom Android 1 facebook 1 Fedora 2 Freelancer 1 Game Android 4 Game Android AndEngine 1 Giới thiệu về Ajax 1 Hiệu ứng lắc trong android 1 Hướng dẫn cài đặt Mac OS trên VMware 1 Hướng dẫn download tài liệu miễn phí của website tailieu.vn 1 Hướng dẫn lập trình android 11 Hướng dẫn lập trình Windows Phone 3 Hướng đối tượng 2 Internet được khôi phục 1 Internet of Things 1 iOS 33 Java 9 Kiểm thử phần mềm 1 Kinh nghiệm lập trình 17 Kỹ Năng 1 Lập trình Android FPT Software Training 1 Lập Trình Game Đa Nền Tảng 2 Lập trình game mobile 2 Lập trình iOS FPT Software Training 1 Lập trình mạng 2 LẬP TRÌNH VIÊN CHUYÊN NGHIỆP TRÊN THIẾT BỊ DI ĐỘNG 2 Laptop 1 Libgdx 1 LinQ 3 Linux 6 Load CSDL SQL server ASP.NET 1 Lỗi Eclipse Ctr + Space 1 Mạng Xã Hôi 1 máy thật PC 1 Mbook TIN HỌC A 1 Mbook TIN HỌC B 1 mỗi bài 20 câu 1 NGAN-HANG-DE-THI-TRAC-NGHIEM-ASP.NET 1 Nguyên tắc ngón tay cái trong thiết kế ứng dụng cho điện thoại 1 Nhập môn lập trình C 14 Những câu hỏi phỏng vấn "xương" nhất 1 Những điểm mới kỳ thi THPT quốc gia 2015 1 Object C 1 Phần mềm 3 PHP 2 Phương pháp luyện thi TOEIC 1 Python 2 Review Game 1 SEO 4 Share Acc Fshare 1 Share VIP Miễn phí 1 Sinh viên mới tốt nghiệp – viết gì trong CV 1 Socket Android Client to PC Server C# 2 Socket Chat nhiều Client với server C# 2 Source code 4 Source code game C# 1 Source code game iOS 2 T3H-KHTN 7 Tài Liệu Android 7 Tài Liệu C# 4 Tài liệu hướng dẫn lập trình game với cocos2d-x 1 Tài Liệu iOS 7 Tài Liệu IT 3 Tài Liệu Java 2 Tài liệu Lập trình iOS Tiếng Việt đầy đủ TTTH đại học khoa học tự nhiên 1 Tài Liệu PHP 1 TÀI LIỆU THIẾT KẾ SỐ 1 Tài Liệu Windows Phone 1 Tạo Group Mail Google 1 Tạo hiệu ứng trong lập trình iOS 1 Tạo tên CoCaCoLa 1 Thắc mắc C/C++ 3 THẬP PHÂN sang NHỊ PHÂN không sử dụng MẢNG 1 Thiết kế giao diện Android - App Calculation Android Studio 1 Thiết kế giao diện phần mềm 1 Thuật ngữ cơ bản trong lập trình game AndEngine 1 Thuật toán 5 Thuật toán điều phối FCFS 1 Tiếng Anh 2 Tin Tức 1 Toàn bộ tài liệu ĐTVT 5 năm học 1 Tổng hợp những nơi người lái xe hay bị mắc lỗi tại TPHCM 1 Tutorials Android 2 Tuyến cáp quang AAG đã sửa xong 1 Unity 1 Vim 1 Visual Studyo 2013 1 WEB 1 Website nén JS và CSS tốt nhất 1 Websites Developer 2 Windows 10 Technical Preview 1 Windows Phone 5 WPF 1 XAMARIN 1 Xóa project appcompat_v 1