2017-04-16 1 views
0

이것은 zxing 라이브러리를 사용하여 QR 코드 스캐너를 구현하는 데 사용한 코드의 일부입니다.Zxing - qr 코드를 읽기 전에 카메라보기에서 뒤로 버튼 누르기

버튼을 클릭하면 mScannerView.stopCamera()가 활성화되고 검색을위한 화면이 표시됩니다. 해당 화면에서 전화 버튼을 누르면 모든 qrcode가 읽히기 전에 앱이 완전히 닫히고 이전 활동으로 돌아 가지 않습니다. qr 코드를 읽기 전에 전화에서 뒤로 버튼을 누르면 이전 활동 (startCamera()가 호출 된 곳)으로 돌아갈 수 있습니까? 어떤 아이디어?

새로운 활동 :

수입 com.google.zxing.Result; import me.dm7.barcodescanner.zxing.ZXingScannerView; 새로운 활동을 확장

공용 클래스는 ZXingScannerView.ResultHandler {

private ZXingScannerView mScannerView; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_new); 
} 
public void onClick(View v){ 
    mScannerView = new ZXingScannerView(this); 
    setContentView(mScannerView); 
    mScannerView.setResultHandler(this); 
    mScannerView.startCamera(); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    mScannerView.stopCamera(); 
} 

@Override 
public void handleResult(Result result) { 
    //Do anything with result here :D 
    Log.w("handleResult",result.getText()); 
    AlertDialog.Builder builder= new AlertDialog.Builder(this); 
    builder.setTitle("Scan Result"); 
    builder.setMessage(result.getText()); 
    AlertDialog alertDialog = builder.create(); 
    alertDialog.show(); 

    //Resume scanning uncomment below 
    //mScannerView.resumeCameraPreview(this); 
} 

}

+0

맞춤 스캐너를 사용하고 있습니까? 'IntentIntegrator'를 사용해 보셨습니까? 이것을 사용하면 많은 문제를 줄일 수 있습니다. [Here] (https://github.com/zxing/zxing/wiki/Scanning-Via-Intent) – tingyik90

+0

@ tingyik90 IntentIntegrator를 사용하려면 어떻게해야합니까? integrator.initiateScan()이 호출되면 QR 코드를 읽을 때만 카메라 화면이 나타나고 다음 메소드가 활성화됩니다. public void onActivityResult (int requestCode, int resultCode, Intent intent) qr 코드를 읽기 전에 스캔 화면에서 뒤로 버튼을 누른 경우를 처리합니까? –

+0

'intentIntegrator.initiateScan()'을 호출 한 후에는 뒤로 버튼을 눌러도 항상 원래의 액티비티로 돌아갑니다. 원래 활동 내에서'intentIntegrator.initiateScan()'을 호출해야합니다. 원래 활동으로 돌아가는 방법에 대해 묻고 있습니까? 또는 스캔 결과를 처리하는 방법에 대한 질문 (결과가 없음)? – tingyik90

답변

0

가 개인적으로, 나는이 패키지를 사용을 구현합니다. https://github.com/journeyapps/zxing-android-embedded을 참조하십시오. Gradle에서 지우기 명령을 사용할 수 있습니다.

원래 활동에서 다음을 추가하십시오.

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); 
    if(result != null && resultCode == RESULT_OK) { 
     // if user scanned and the result is valid, do your stuff here 
    } else { 
     // if user pressed back or there's error, do your stuff here 
    } 
} 
+0

기본적으로 스캐닝 화면 하단에 제안 된 패키지의 "바코드 스캔"텍스트를 편집하는 방법을 알고 있습니까? 해당 텍스트를 편집하는 방법을 말할 수 있다면 그 점을 인정할 것입니다. –

+0

좋아, GitHub의 설명에서 찾았습니다. 고마워! –

+0

이것이 정답이라고 생각되면 제 대답과 upvote를 수락하십시오. 감사. – tingyik90

관련 문제