Ich arbeite mit einer so tollen Bibliothek zxing, um QR-Code zu lesen. Ich habe bereits QR-Code erfolgreich.
Nun, Meine Anwendung läuft im Querformat, und die Kamera nimmt den ganzen Bildschirm auf, und die rote QR-Erkennungsrechteckbox ist in der Mitte. Ich möchte dies in den Portrait-Modus ändern & amp; Ersetzen Sie die Kameraansicht nur durch das rote Rechteck für die QR-Erkennung.
Ich ändere das CaptureActivity-Tag, das sich in der zxing-Bibliotheksmanifestdatei befindet.
android:screenOrientation="portrait"
.
Aber nichts gefunden, was ich eigentlich will. Ich weiß nicht, wo ich Code ändern / schreiben muss, um das zu bekommen.
Ich hatte das selbe Problem und bin etwa zwei Tage drangeblieben. Eigentlich müssen Sie einige Aufgaben erledigen, um Ihr Ziel zu erreichen.
Ihre main.xml-Datei sollte wie folgt aussehen:
%Vor%Ihre Hauptaktivität sollte wie folgt aussehen:
%Vor%Fügen Sie in der Manifestdatei folgende Berechtigung hinzu:
%Vor%und schließlich sehr wichtige Aufgabe, die Sie für Kamera Rotation Problem tun müssen, ersetzen Sie die folgende Methode in die
CameraManager.java (im Paket com.google.zxing.client.android.camera)
%Vor%das ist alles. rennen und genießen: -)
danke ..
Bitte kopieren Sie unsere App nicht vollständig. In diesem Fall müssen Sie trotzdem Ihre eigene App schreiben. Es ist definitiv nicht so einfach wie die Layout-Ausrichtung zu ändern. Die Benutzeroberfläche wird nicht nur für das Hochformat geschrieben, auch der App-Code ist nicht vorhanden.
Wenn Sie den festen Hochformatmodus only verwenden möchten, ist dies nicht so schwierig. Es ist schwierig, alle 4 Rotationen mit Front- / Rückseitenkameras vollständig zu unterstützen. Aber nicht nur 1 Fall.
Zuerst müssen Sie ein Portrait-Mode-UI entwerfen. (Bitte kopieren Sie nicht das Design der roten Linie.)
Der tatsächliche App-Code interessiert sich nicht für die Ausrichtung von QR-Codes. Sie müssen überhaupt nichts tun. Sie müssen jedoch Änderungen vornehmen, um die Bildschirmanzeige richtig einzustellen.
Sie müssen Camera.getOrientation()
abfragen, um festzustellen, wie die Kamera montiert ist. Normalerweise ist es so, dass "nach oben" zu Ihrer Rechten ist, und ich denke, dass fast jedes Gerät auf diese Weise kompatibel ist. Aber technisch müssen Sie wissen, wie viel Sie das Vorschaubild drehen können.
Dann verwenden Sie Camera.setDisplayOrientation()
, um anzugeben, wie stark das Bild gedreht werden muss, damit es für den Hochformatmodus korrekt gedreht wird. Dies ist normalerweise "90".
Schließlich müssen Sie die Vorschaugröße mit Camera.Parameters.setPreviewSize()
auswählen, müssen aber möglicherweise die von Ihnen gewählten Werte spiegeln (480x800 vs 800x480), weil Sie im Hochformat sind.
Ich hatte wirklich schreckliche Erfahrung aus dieser Bibliothek aus dem gleichen Grund. Selbst wenn die Kamera im Hochformat angezeigt wird, wird sie möglicherweise gestreckt (oder das Ausgabebild wird gestreckt, oder der Barcode wird nicht erkannt, oder bei einigen Geräten funktionierte es einwandfrei, andere nicht).
Ich vermute, dass Android einfach "mag", dass die Kameravorschau im Querformatmodus ist, da dies seine natürliche Ausrichtung ist, wenn der Benutzer Bilder macht.
Am Ende habe ich den Querformat-Modus verwendet und alles andere gedreht, so dass der Benutzer denkt, dass es im Hochformat ist, aber das ist es nicht. Ich denke, viele Apps verwenden diese Technik.
Ich schlage vor, dass, wenn Sie irgendwie mit diesem Problem umgehen, es auf so vielen Geräten wie möglich testen.