web-dev-qa-db-ja.com

Android StudioでZXINGを使用してQRスキャナーの向きを変更する

あなたがこれで私を助けてくれることを願っています。 QRスキャナーを使用するためにZxingEmbedded Libraryを使用していますが、問題は横向きモードであるため、縦向きに変更したいと思います。

Graddleの依存関係にこれがあります

compile 'com.journeyapps:zxing-Android-embedded:2.0.1@aar'
compile 'com.journeyapps:zxing-Android-integration:2.0.1@aar'
compile 'com.google.zxing:core:3.0.1'

これをJavaクラスに入れて、ボタンでスキャナーをアクティブにします...

public void scanQR(View view){
    IntentIntegrator integrator = new IntentIntegrator(this);
    integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);
    integrator.setResultDisplayDuration(0);//Text..
    integrator.setPrompt(" Scan a QR Code");
    integrator.setScanningRectangle(450, 450);//size
    integrator.setCameraId(0);  // Use a specific camera of the device
    integrator.initiateScan();

}

助けてくれてありがとう!

6
Matías Gaete

使ってます

コンパイル 'com.journeyapps:zxing-Android-embedded:3.1.0@aar'

バージョンが違うので、うまくいくかわかりませんが、うまくいきます。

私のセットアップの詳細については、コンパイルするだけです

'com.journeyapps:zxing-Android-embedded:3.1.0@aar'

'com.google.zxing:core:3.0.1'

そして私はコンパイルしませんでした

'com.journeyapps:zxing-Android-integration:2.0.1@aar'

最初に、CaptureActivityから拡張されたアクティビティを作成しました

または、このリンクをクリックしてクラスを表示します https://Gist.github.com/TheGratefulDev/21a557c9a96333ec037c

public class CaptureActivityPortrait extends CaptureActivity {
//Nothing in side.
}

次に、これを追加します

integrator.setCaptureActivity(CaptureActivityPortait.class);

インテグレータコードに。

これは私のように見えます:

CustomIntegrator integrator = new CustomIntegrator(activity);
            integrator.setDesiredBarcodeFormats(CustomIntegrator.PDF_417);
            integrator.setPrompt("Scan a barcode");
            integrator.setCameraId(0);  // Use a specific camera of the device
            integrator.setOrientationLocked(true);
            integrator.setBeepEnabled(true);
            integrator.setCaptureActivity(CaptureActivityPortrait.class);
            integrator.initiateScan();

最後に、AndroidMaifestで追加します

   <activity
        Android:name=".custom.CaptureActivityPortrait"
        Android:screenOrientation="portrait" <---this is the most important line
        Android:stateNotNeeded="true"
        Android:theme="@style/zxing_CaptureTheme"
        Android:windowSoftInputMode="stateAlwaysHidden">
    </activity>
18

クラスを拡張する代わりに、これをマニフェストに追加するだけです。

  <activity
            Android:name="com.journeyapps.barcodescanner.CaptureActivity"
            Android:screenOrientation="portrait"
            tools:replace="Android:screenOrientation"
            Android:stateNotNeeded="true"/>

チャームのように機能します

26
Ravi Tripathi

私はちょうど最も簡単な方法を見つけました。別のCaptureActivity.Javaクラスを作成し、次のコードをonclickリスナー内に記述する必要があります。

IntentIntegrator integrator = new IntentIntegrator(activity);
integrator.setPrompt("Scan a barcode");
integrator.setDesiredBarcodeFormats(integrator.ALL_CODE_TYPES);
integrator.setCameraId(0);  
integrator.setOrientationLocked(false);

// Replace with your own Java class location here
integrator.setCaptureActivity(com.share.ants.hotelmenu.CaptureActivity.class);
integrator.setBeepEnabled(true);
1

わたしにはできる:

IntentIntegrator integrator = new IntentIntegrator(YourActivity.this);
integrator.setDesiredBarcodeFormats(IntentIntegrator.ALL_CODE_TYPES);
integrator.setPrompt(getResources().getString(R.string.scan_a_barcode));
integrator.setCameraId(0);
// Use a specific camera of the device
integrator.setBeepEnabled(true);
integrator.setBarcodeImageEnabled(false);
integrator.initiateScan();
0
Muthu