마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

QR코드 문제입니다 .부탁 좀 드릴게요

0 추천
QR코드 인식하는 소스를 짜고있는데

바코드 스캐너를 따로 설치하지않고 바로 스캐너가 나올수있게 할수있나요? 있다면 방법좀..

그리고 텍스트정보가 담긴 QR코드는 인식은 되는데 인식하고 죽어버립니다.

텍스트를 읽어오지 못하는데 이런경우는 어떻게 처리해줘야하나요...
쮸뿌쮸뿌 (2,470 포인트) 님이 2014년 10월 27일 질문

1개의 답변

0 추천
QR코드 기능 넣으려는 플잭에 zxing core.jar 추가하고 바코드 스캐너 소스 분석해서 쓰시면 되요.

core.jar 만드는 법은 zxing 깃헙에 상세하게 다 나와있으니 가서 찾으세요.

텍스트 정보 담긴 QR코드 죽는다는건 에러가 뭔지 알아야 도움 드릴 수 있습니다.
익명사용자 님이 2014년 10월 27일 답변
토스트로 QR코드의 정보가 나오는데 그런 다음에 바로 죽어버립니다.
혹시 QR코드에 담긴 정보가 URL인지 텍스트인지 구분지을수있는 방법이 있을까요?..
그런 정보로는 도움 드리기 힘듭니다.
zxing에서 바코드스캐너 어플 소스도 제공 하는데..
그거 돌리시면 로그캣 나올텐데요,, 로그켓에 나오는 에러 내용을 말해주세요.
10-27 15:11:06.961: E/AndroidRuntime(25559): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { act=com.google.zxing.client.android.SCAN flg=0x80000 (has extras) }} to activity {com.example.barcodescanner/com.example.barcodescanner.MainActivity}: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=manage_num,CKD_L2_001.....
이렇게 뜹니다...
인텐트 날리는 거 관련 에런데 죽어 버리는 부분이 어디인가요?
zxing 호출하실때 아래처럼 startActivityForResult로 날리고 onActivityResult로 받으시나요?

Intent i = new Intent("com.google.zxing.client.android.SCAN");
i.setAction("com.google.zxing.client.android.SCAN");
i.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(i, 0);

에러난 부분 이 어딘지 소스코드 부분도 올려주시면 해결법 찾는데 좀 더 편 할거 같네요.
네 그렇게 받고 있습니다.
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
        intent.setPackage("com.google.zxing.client.android");
        intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
        startActivityForResult(intent, 0);
한 후에
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
        // TODO Auto-generated method stub
       
        if(requestCode == 0){
            if(resultCode == RESULT_OK){
                String contents = intent.getStringExtra("SCAN_RESULT");
                Intent _intent = new Intent(Intent.ACTION_VIEW, Uri.parse(contents));
                startActivity(_intent);
            }else if(resultCode == RESULT_CANCELED){
                Toast.makeText(MainActivity.this, "Cancel", Toast.LENGTH_SHORT).show();
            }
        }

이렇게 받고있습니다
new Intent(Intent.ACTION_VIEw, Uri.parse(contents));부분에서 죽는데 저부분에 Uri.parse 때문인거 같네요. 그렇다면 텍스트 정보를 보려면 어떻게 줘야할지 모르겠어서..
Intent intent = new Intent();
intent.putExtra("QR_CONTENT", contents);
startActivity(intent);
이렇게 보내세요

받는 액티비티에서는
Intent i = getIntent();
i..getStringExtra("QR_CONTENTS");
하시면 됩니다. 그리고 왠만하면 바코드 스캐너 호출해서 사용 하지마시고
jar만 추가하시고 나머지는 바코드스캐너 분석해서 내부에서 쓰도록 하세요.

바코드 스캐너 어플 보고 QR코드 읽는 부분 코드짜면 300줄도 안나옵니다.
인터넷에도 예제 많구요
보내는 부분에서 contents는 어떤 정보를 담고있어야 하나요?
제가 시작한지 얼마 안되서.. 바코드 스캐너는 따로 다운로드 받아서 일단 사용하고 있어요. 바코드스캐너 부분을 가져와서 현재 프로젝트내에서 커스텀마이징하라는 말씀이신거죠?
뭘 하시려는지는 잘 모르겠지만,
String contents = intent.getStringExtra("SCAN_RESULT");
이거 넣으시려던거 아닌가요?

바코드 스캐너 분석해서 필요부분만 가져와서 만드셔도 좋고, 이것도 힘들고 잘안된다 싶으시면 인터넷에 찾아보시면 zxing jar 이용해서 QR코드 읽는 예제 코드 많습니다.
String contents = intent.getStringExtra("SCAN_RESULT"); 이거는 인식하고 값 읽는 부분에서 해줬는데 보내는 부분에서도 쓰는건가요..
QR코드는 찍어서 정보를 받는것을 작업하고 있는데 URL정보이건 텍스트정보이건 다 볼수있어야하는것을 만들고있어요.
혹시 텍스트정보를 읽어오는것이면 레이아웃에 TextView를 만들어줘야하나요?
Uri.parse(contents) 이부분에서 contents보내시고 있으셨잔아요;
바코드 스캐너에서 얻은 값 contents를 다른 액티비티로 보내시려는거 아닌가요?
URL같은 경우는 바로 인터넷으로 타고 텍스트는 따로 액티비티 만들어둔게 없는데..ㅠㅠ
아.. 그럼 url 텍스트 구분은 일단 간단하게 try/catch쓰세요
text일땐 그냥 catch로 가서 텍스트라고 로그만 뽑는 방식으로 하시면 될것같네요.
나중에 시간나면 url 형식 체크하는 정규표현식 만들어 두시고 두고두고 쓰시면 될듯

 if(resultCode == RESULT_OK){
        try {
                String contents = intent.getStringExtra("SCAN_RESULT");
                Intent _intent = new Intent(Intent.ACTION_VIEW, Uri.parse(contents));
                startActivity(_intent);
        } catch (Exception e) {
                Log.d("URL 형식이 아닙니다." + contents)
        }
 }
아 너무 감사합니다. 여차여차 텍스트랑 URL나누는거 결과값 contents를 substring으로 나눠서 URL인지 텍스트인지 나눴어요..ㅠㅠ감사해요! 많은 도움이 되었습니다
...