2016-05-18 16 views
0

Ich befolge die Anweisungen Schritt für Schritt auf Zxing Camera in Portrait mode on Android, um Porträt während Benutzer mit zxing Kamera anzuzeigen.Zxing (v3.2.0) Kamera festen Hochformat mit Eclipse

Aber es wird nicht funktionieren. Der Scanner ist immer noch im Querformat sichtbar. Ich denke, es ist, weil ich die neueste Version (v3.2.0) von Zxing verwende und die Anweisung ist veraltet.

Wie kann dies in v3.2.0 Zxing getan werden?


Wie auch immer, hier sind die Schritte, die ich versucht habe:

  1. Ändern buildLuminanceSource (..) DecodeHandler.java

Code:

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; 

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

  1. Ändern getFramingRectInPreview() in CameraManager.java

Code:

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; 

  1. Ändern initFromCameraParameters (...) in CameraConfigurationManager.java

    In Zxing (v3.2.0) finde ich nicht den folgenden Code

Code:

//remove the following 
if (width < height) { 
Log.i(TAG, "Display reports portrait orientation; assuming this is incorrect"); 
int temp = width; 
width = height; 
height = temp; 
} 

  1. Add Linie folgende Kamera in setDesiredCameraParameters zu drehen (...) in CameraConfigurationManager.java

Code:

camera.setDisplayOrientation(90); 

  1. In meinem Projekt, ändern AndroidManifest.xml

Code:

android:screenOrientation="portrait" 

Antwort

0

Nach Versuchen und Irrtümern für ein paar Tage zu tun, hier ist meine Arbeitslösung:

Es braucht zusätzliche Arbeit, sagen wir Schritt 6. Stellen Sie immer die Hochformatausrichtung ein, egal was passiert. Und es hat funktioniert.


Schritt 6. Ändern onResume in CaptureActivity.java

if (prefs.getBoolean(PreferencesActivity.KEY_DISABLE_AUTO_ORIENTATION, true)) { 
    //setRequestedOrientation(getCurrentOrientation()); // mark this line 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
} else { 
    //setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); // mark this line 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
}