2017-04-16 31 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

関連する問題