바코드 스캔 라이브러리를 소개하려고 한다.
이름이 zxing이다.
소개를 그대로 인용하면
Multi-format 1D/2D barcode image processing library with clients for Android, Java
다중포멧 1D/ 2D 바코드 이미지 프로세싱 라이브러리, Android, Java 클라이언트 용
Project 사이트는 http://code.google.com/p/zxing/ 이다.
라이센스는 Apache License 2.0 이다.
android 뿐만아니라 iPhone같은 다양한 모바일 기기를 지원한다.
라이브러리를 받아서 빌드한뒤 샘플을 만들어 봤는데 1 시간 밖에 걸리지 않았다.
라이브러리 빌드를 위해서는 ant를 설치해야한다.
1. zxing의 core 디렉토리로 이동한뒤 ant명령어를 입력하여 빌드 한다 결과물로 core.jar가 생성된다.
2. Android 프로젝트를 생성한다.
3. Android 프로젝트의 lib 디렉토리를 생성한뒤 core.jar를 안드로이드 lib에 복사
4. Android 프로젝트의 build path에 /lib/core.jar를 추가해 준다.
5. zxing의 android-integration의 java파일을 Android 프로젝트의 src로 복사한다.
6. 적당한 패키지 경로를 수정해 준다.
7. 버튼을 추가하고 IntentIntegrator.initiateScan 바코드 스캔함수를 호출한다.
public class ZxingTest extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
View scan = findViewById(R.id.scan);
scan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
IntentIntegrator.initiateScan(ZxingTest.this);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//super.onActivityResult(requestCode, resultCode, data);
IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if (scanResult != null) {
// handle scan result
TextView scanResultText = (TextView) findViewById(R.id.scanResult);
String text = "format="+scanResult.getFormatName()+", data:"+scanResult.getContents();
scanResultText.setText(text);
}
}
}
8. onActivityResult에서 결과를 받아서 처리한다