안드로이드 개발 질문/답변
(글 수 45,052)
친구 핸드폰 ( 모토로이) 에서는 실행되고
갤럭시 S 에서는 안되는데요.
다른 분들은 어떻게 되나요
http://code.google.com/p/zxing/
이걸 다운 받아서
qr 테스트 해보는데요.
제공하는 core.jar 파일 라이브러리로 추가 하고
버튼 이벤트에
퍼미션 적용
갤럭시 S 에서는 안되는데요.
다른 분들은 어떻게 되나요
http://code.google.com/p/zxing/
이걸 다운 받아서
qr 테스트 해보는데요.
제공하는 core.jar 파일 라이브러리로 추가 하고
버튼 이벤트에
Button BtnQR = (Button) findViewById(R.id.qr_button);
BtnQR.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent qrintent = new Intent("com.google.zxing.client.android.SCAN");
// 현재의 activity 에 대해 startActivity 호출
qrintent.putExtra("SCAN_MODE", "QR_CODE_MODE");
// startActivity(intent);
startActivityForResult(qrintent,0);
}
});
퍼미션 적용
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.CALL_PRIVILEGED" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
<!-- <uses-permission android:name="android.permission.INTERNET"/> -->
<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.FLASHLIGHT"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- Wifi related -->
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
2010.11.29 15:16:01
글쓴 분 께서 잘못 알고 계신 것이 있습니다.
core.jar 파일을 추가한다고 com.google.zxing.client.android.SCAN 인텐트를 불렀을때 작동하는 것은 아닙니다.
core.jar 라이브러리 안에는, 바코드를 스캔 했을 때 스캔 한 이미지 정보를 바탕으로 바코드를 디코딩 하는 로직이 들어있을 뿐 입니다.
카메라 구동등은 직접 시켜야 하거든요. 하지만 위의 로직을 보면 그냥 인텐트를 실행 시켰을 뿐이죠?
그럼 core.jar 안의 인텐트가 실행 되는데, 해당 인텐트에 맞는 뷰가 없으니 실행이 안되고 오류가 나는 것입니다.
친구 모토로이 에서 실행된다고 하셨는데, 그 모토로이에는 아마 BarcodeScanner 어플이 깔려있을 겁니다.
이 바코드스캐너 가 zxing 에서 만든 어플이기 때문에 같은 core.jar 를 사용합니다. 그래서 com.google.zxing.client.android.SCAN 를 실행하면 안드로이드의 특성상 다른 어플리케이션과 연동할 수 있기 때문에 바코드스캐너가 실행되면서 com.google.zxing.client.android.SCAN 인텐트를 사용할 수 있죠. 하지만 이 어플이 없다면 오류가 납니다.
그럼 글쓴분께서는 어떻게 해야 하느냐, zxing 받으셨을때 안드로이드 폴더가 있을겁니다. 그 폴더 보시면, 카메라 구동 및 카메라의 화면 구성 등 소스가 있으니까 참고하셔서 테스트 해보시면 될거에요^^
core.jar 파일을 추가한다고 com.google.zxing.client.android.SCAN 인텐트를 불렀을때 작동하는 것은 아닙니다.
core.jar 라이브러리 안에는, 바코드를 스캔 했을 때 스캔 한 이미지 정보를 바탕으로 바코드를 디코딩 하는 로직이 들어있을 뿐 입니다.
카메라 구동등은 직접 시켜야 하거든요. 하지만 위의 로직을 보면 그냥 인텐트를 실행 시켰을 뿐이죠?
그럼 core.jar 안의 인텐트가 실행 되는데, 해당 인텐트에 맞는 뷰가 없으니 실행이 안되고 오류가 나는 것입니다.
친구 모토로이 에서 실행된다고 하셨는데, 그 모토로이에는 아마 BarcodeScanner 어플이 깔려있을 겁니다.
이 바코드스캐너 가 zxing 에서 만든 어플이기 때문에 같은 core.jar 를 사용합니다. 그래서 com.google.zxing.client.android.SCAN 를 실행하면 안드로이드의 특성상 다른 어플리케이션과 연동할 수 있기 때문에 바코드스캐너가 실행되면서 com.google.zxing.client.android.SCAN 인텐트를 사용할 수 있죠. 하지만 이 어플이 없다면 오류가 납니다.
그럼 글쓴분께서는 어떻게 해야 하느냐, zxing 받으셨을때 안드로이드 폴더가 있을겁니다. 그 폴더 보시면, 카메라 구동 및 카메라의 화면 구성 등 소스가 있으니까 참고하셔서 테스트 해보시면 될거에요^^



