2012-04-12 20 views
5

Udało mi się korzystać z biblioteki skanowania kodów kreskowych ZXing, ale tylko w trybie poziomym.biblioteka skanowania kodów kreskowych Android + ZXing - niestandardowy rozmiar i orientacja

Udało mi się również ustawić podgląd kamery na tryb portretowy i pokazać go poprawnie (bez rozciągania), ale teraz kod kreskowy w ogóle nie działa. here're zmiany zrobiłem do „setDesiredCameraParameters” on „CameraConfigurationManager.java” aby pokazać aparat poprawnie:

void setDesiredCameraParameters(Camera camera) 
{ 
    Camera.Parameters parameters = camera.getParameters(); 
    Log.d(TAG, "Setting preview size: " + cameraResolution); 
    setFlash(parameters); 
    setZoom(parameters); 
    camera.setDisplayOrientation(90); 
    parameters.set("rotation", 90); 
    parameters.setPreviewSize(cameraResolution.y, cameraResolution.x); 
    camera.setParameters(parameters); 
} 

Próbowałem kilka rozwiązań wymienionych w innych miejscach, ale zarówno oni don Działają lub działają, ale nie mogą poprawnie wyświetlić podglądu kamery. przykładów: How to use Zxing in portrait mode? http://code.google.com/p/zxing/issues/detail?id=178#c46 https://github.com/pplante/zxing-android/issues

kiedy skończę z tym, ja też trzeba dostosować rozmiar prostokąta lokalizacja & do skanowania. Wiem, że muszę zmienić "setManualFramingRect" na "CameraManager.java", ale nie jestem pewien, czy zrobię to poprawnie. Oto kod na to:

public void setManualFramingRect(Rect rect) 
{ 
    if (initialized) 
    { 
     Point screenResolution = configManager.getScreenResolution(); 
     if (rect.right >= screenResolution.x) 
      rect.right = screenResolution.x - 1; 
     if (rect.left < 0) 
      rect.left = 0; 
     if (rect.bottom >= screenResolution.y) 
      rect.bottom = screenResolution.y - 1; 
     if (rect.top < 0) 
      rect.top = 0; 
     framingRect = rect; 
     Log.d(TAG, "Calculated manual framing rect: " + framingRect); 
     framingRectInPreview = null; 
    } 
    else 
     _requestedFramingRect = new Rect(rect); 
} 

oczywiście zmieniłem "openDriver" zadzwonić:

if (_requestedFramingRect != null) 
    setManualFramingRect(_requestedFramingRect); 

proszę mi pomóc.


EDYCJA: teraz dowiedziałem się, że nie działa na niektórych urządzeniach. rozbija się na początku, a jeśli debugujesz, widać, że nawet podgląd nie działa dobrze.

+1

Myślę, że następny wpis może odpowiedzieć na moje pytanie: http://stackoverflow.com/questions/16252791/how-to-show-zxing-camera-in-portrait-mode-android/16252917#16252917. jednak, ponieważ od czasu, gdy testowałem bibliotekę zxing, nie wiem, jak to działa. –

Odpowiedz

2

To coś więcej niż to. Na przykład trzeba "obrócić" dane z kamery (lub zeskanować ją tak, jakby była w pionie), gdy orientacja kamery nie jest taka sama jak orientacja urządzenia. A przy korzystaniu z kamery przedniej należy wziąć pod uwagę fakt, że jej obrót jest odwrócony.

+0

Próbowałem linku, o którym już pisałem - to nie zadziałało. Czy znasz kogoś, kto odniósł sukces? –

+0

Tak, zrobiłem: https://play.google.com/store/apps/details?id=com.srowen.bs.android –

+0

dobrze mi chodziło, jeśli ktokolwiek mógł udostępnić rozwiązanie tego problemu (bez kosztów). :) –

Powiązane problemy