48

この問題に関するいくつかの質問と投稿を読んだ後、Zxingディスプレイを回転させようとしています。指示に従った後、ディスプレイは回転しましたが、スキャナーの長方形が適切に配置されていません(添付の画像で確認できます)。

これは私がしたことです:

  1. CameraConfigurationManagerの場合:

    camera.setDisplayOrientation(90);
    
  2. DecodeHandler.javaで

    byte[] rotatedData = new byte[data.length];
        for (int y = 0; y < height; y++) {
            for (int x = 0; x < width; x++)
                 rotatedData[x * height + height - y - 1] = data[x + y * width];
         }
    int tmp = width;         
    width = height;
    height = tmp;
    
  3. CameraManager.javaの場合:

    rect.left = rect.left * cameraResolution.y / screenResolution.x;
    rect.right = rect.right * cameraResolution.y / screenResolution.x;
    rect.top = rect.top * cameraResolution.x / screenResolution.y;
    rect.bottom = rect.bottom * cameraResolution.x / screenResolution.y;
    

ここに画像の説明を入力してください

4

9 に答える 9

30

苦労の末、問題を見つけました。将来誰かに役立つことを願っています。

initFromCameraParametersの方法でCameraConfigurationManagerは、スキャンが であるという前提があり、そのALWAYS in landscape modeため、 の場合に修正されwidth < heightます。質問の手順に従ってこのチェックを外すと、問題なく動作します。

于 2012-04-18T22:47:13.447 に答える
14

ご回答ありがとうございます!! それは本当に私を助けました、私が気づいたことの1つは、少なくともzxing 2.1では、「データ」だけでなく「rotatedData」をbuildLuminanceSourceに渡す必要があることです。行は次のようになります。

PlanarYUVLuminanceSource source = activity.getCameraManager().buildLuminanceSource(rotatedData, width, height);

うまくいけば、これは他の誰かに役立ちます!

于 2013-01-25T19:37:25.377 に答える
8

ProjectLibrary (xzing プロジェクト) に小さな変更を加えて、横向きを縦向きに変更できるようにしました。

setDesiredCameraParameters method of class CameraConfigurationManager追加で

camera.setDisplayOrientation(90);

.. 元のプロジェクトのAndroidManifest.xmlファイルに。私は設定screenOrientation = portraitし、ICS 4.0.3で正常に動作しています

   <activity
        android:name="com.google.zxing.client.android.CaptureActivity"
        android:configChanges="orientation|keyboardHidden"
        android:exported="false"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
        android:windowSoftInputMode="stateAlwaysHidden" >
        <intent-filter>
            <action android:name="com.phonegap.plugins.barcodescanner.SCAN" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity> 
于 2012-11-16T23:27:16.293 に答える
4

私はバーコード スキャナーの開発者です。はい、ポートレートモードでスキャンするには、これよりもはるかに多くの時間がかかります. 画像データを「回転」し、デバイスの向き、デフォルトの向き、センサーの向きを考慮する必要があります。

Barcode Scanner+はポートレート モードでスキャンし、Barcode Scanner と統合するのとまったく同じ方法で Intent を介して統合できます。(ただし、有料アプリです。)

于 2012-04-18T20:23:14.547 に答える
1

他の回答で提案されているさまざまなパッチを試しましたが、バーコード認識は信頼できないままでした。

以下のリポジトリを縦向きモードで使用することを強くお勧めします。試してみてください。高速で安定しています。ハイブリッドアプリで使用しました。

https://github.com/Dbuggerx/BarcodeScanner

于 2016-01-30T05:51:34.237 に答える