Hiện tại thư viện zxing chỉ hỗ trợ chế độ nằm ngang.Đối với ứng dụng của tôi, tôi cần sử dụng ở chế độ dọcLàm thế nào để sử dụng Zxing ở chế độ dọc?
Trả lời
Chỉ cần xem vấn đề Sử dụng Zxing ở chế độ dọc.
Liên kết này đã lỗi thời. –
Liên kết dẫn đến vấn đề "Mã QR không hỗ trợ unicode" ... Kiểm tra https://github.com/journeyapps/zxing-android-embedded/issues/16 này thay vì – kristyna
Nếu bạn đang sử dụng phiên bản 3.xx , khai báo định hướng trong AndroidManifest.xml. Để đọc thêm https://github.com/journeyapps/zxing-android-embedded/blob/master/README.md#changing-the-orientation – kristyna
setDisplayOrientation(int)
không ảnh hưởng đến thứ tự của mảng byte được chuyển vào PreviewCallback.onPreviewFrame
. (Tham khảo JavaDoc để biết thêm thông tin)
Điều này có nghĩa là bạn cần xoay dữ liệu từ chế độ xem trướcCallback, nhưng đây là dữ liệu yuv, bạn cần chuyển đổi sang dữ liệu rgb rồi xoay chúng. có thể quét mã vạch ở chế độ dọc nhưng sẽ mất nhiều thời gian hơn vì nó cần thêm thời gian để xử lý dữ liệu từ yuv sang rgb và xoay dữ liệu rgb. vì vậy vấn đề ở đây là làm thế nào chúng ta có thể nhận dữ liệu yuv từ previewcallback cho chế độ dọc? khi chúng tôi đặt setPreviewSize cho các thông số máy ảnh, nó sẽ bị loại trừ nếu việc xem trước không được hỗ trợ. Đây là vấn đề của vấn đề này. Nếu trình điều khiển máy ảnh không hỗ trợ previewSize cho chế độ dọc (chiều cao> chiều rộng), bạn không thể nhận dữ liệu yuv ở chế độ dọc. Và phần còn lại phụ thuộc vào bạn, bạn có thể quét mã vạch ở chế độ dọc nhưng phải mất nhiều thời gian hơn hoặc bạn phải thay đổi hướng của màn hình sang phong cảnh để có kết quả nhanh hơn.
Để thực hiện công việc màn hình trong bức chân dung, thiết lập theo chiều dọc cho hoạt động này (ví dụ trong manifest) và sau đó cấu hình máy ảnh: Sử dụng camera.setDisplayOrientation (90) trong CameraConfigurationManager.setDesiredCameraParameters (camera Camera). Nhưng lưu ý rằng:
- setDisplayOrientation (int) yêu cầu Android 2.2
- setDisplayOrientation (int) không ảnh hưởng đến trật tự của mảng byte thông qua vào PreviewCallback.onPreviewFrame. (Tham khảo JavaDoc để biết thêm thông tin)
Vì khung xem trước luôn ở chế độ "ngang", chúng ta cần phải xoay chúng. Tôi đã sử dụng xoay theo chiều kim đồng hồ được cung cấp bởi comment #11. Đừng quên trao đổi thông số chiều rộng và chiều cao sau khi xoay. DecodeHandler.java, xoay dữ liệu trước khi buildLuminanceSource trong decode (byte [] data, int width, int height)
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; // Here we are swapping, that's the difference to #11 width = height; height = tmp;
Tôi cũng sửa đổi CameraManager.java, getFramingRectInPreview(), theo khuyến cáo của # C11:
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;
Tôi không sửa đổi getCameraResolution(). Đó là sự khác biệt thứ hai đối với # c11.
Kết quả là tôi đã quét UPC và quét mã 1D khác theo chiều dọc.
P.S. Ngoài ra, bạn có thể điều chỉnh kích thước của FramingRect (đó là hình chữ nhật có thể nhìn thấy trên màn hình trong khi quét), và FramingRectInPreview sẽ được điều chỉnh tự động.
vui lòng chỉnh sửa và dọn dẹp mess định dạng. .. – kleopatra
Một bản vá đẹp cho zxing: https://gist.github.com/border/7577978 – WarrenFaith
Sử dụng thư viện android này https://github.com/SudarAbisheck/ZXing-Orient
Nó hỗ trợ cả hai hướng ngang và dọc.
Vui lòng xem [Tham quan] (http://stackoverflow.com/tour) và [Câu trả lời của bạn nằm trong một lâu đài khác : Khi là một câu trả lời không phải là một câu trả lời] (http://meta.stackexchange.com/questions/225370) – Drew
@Drew trong quan điểm của tôi nó là câu trả lời khá ... OP muốn một phiên bản của ZXing hỗ trợ chân dung nhiều hơn, và câu trả lời này mang lại chính xác điều đó. Nó đã giúp tôi với cùng một yêu cầu. –
Tôi chắc chắn nó đã làm. Nhiều năm trước, các yêu cầu tài nguyên đã được sử dụng tốt trên trang web này. Các nguyên tắc đã thay đổi. Và khi câu trả lời mới đến với câu trả lời chỉ có liên kết, bạn thường nhận được các nhận xét mà tôi đã đưa cho bạn. – Drew
Đây là giải pháp cho chế độ Portrait quét
đầu tiên tuyên bố hai dòng sau ở mức độ ứng dụng của bạn tập tin gradle
compile 'com.journeyapps:zxing-android-embedded:[email protected]'
compile 'com.google.zxing:core:3.2.0'
Xác định một nút trong file xml của bạn và trong onclick Listener nút viết dưới đây mã trong tệp tin MainActivity java
IntentIntegrator integrator = new IntentIntegrator(this);
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();
Viết mã bên dưới vào y tập tin MainActivity java của chúng tôi sau khi phương pháp onCreate()
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if(result != null) {
if(result.getContents() == null) {
Log.d("MainActivity", "Cancelled scan");
Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
} else {
Log.d("MainActivity", "Scanned");
st_scanned_result = result.getContents();
Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
}
}
}
sau đó tạo ra một lớp học với tên CaptureActivityPortrait kéo dài CaptureActivity. Lớp trông giống như dưới đây
package soAndSo(Your PackageName);
import com.journeyapps.barcodescanner.CaptureActivity;
public class CaptureActivityPortrait extends CaptureActivity {
}
Và quan trọng nhất tuyên bố CaptureActivityPortrait của bạn trong file manifest như dưới đây
<activity android:name=".CaptureActivityPortrait"
android:screenOrientation="portrait"
android:stateNotNeeded="true"
android:theme="@style/zxing_CaptureTheme"
android:windowSoftInputMode="stateAlwaysHidden"></activity>
- 1. Làm thế nào để tạo UISplitViewController ở chế độ dọc?
- 2. MediaRecorder quay video ở chế độ dọc
- 3. Chế độ xem chia nhỏ ở chế độ dọc!
- 4. AVVideoCompositionCoreAnimationTool và CALayer ở chế độ dọc?
- 5. Làm thế nào để chạy RavenDb ở chế độ nhúng?
- 6. Máy ảnh đang duỗi ở chế độ dọc
- 7. Máy ảnh Android ở chế độ dọc trên SurfaceView
- 8. Android: Hướng xem trước máy ảnh ở chế độ dọc
- 9. Làm cách nào để biết ảnh ở chế độ ngang hoặc dọc?
- 10. "sửa chữa" hình nền động ở chế độ dọc
- 11. Tôi làm cách nào để sử dụng Android ProgressBar ở chế độ xác định?
- 12. Tôi muốn ứng dụng Android của mình chỉ chạy ở chế độ dọc?
- 13. Làm cách nào để tránh việc sử dụng chuỗi của mình ở chế độ người dùng
- 14. Tìm hiểu xem thiết bị Android có ở chế độ dọc hoặc ngang để sử dụng bình thường không?
- 15. Buộc sử dụng .vimrc ở chế độ vi
- 16. Làm thế nào để phát hiện nếu Vim đang chạy ở chế độ hạn chế?
- 17. Làm cách nào để khóa hướng sang chế độ dọc trong Ứng dụng web iPhone?
- 18. Làm cách nào để hạn chế ứng dụng của tôi ở chế độ ngang?
- 19. Có thể sử dụng OCaml ở chế độ nhúng không?
- 20. Chỉ chạy ứng dụng ở chế độ Phong cảnh?
- 21. Để sử dụng chế độ xem hoặc không sử dụng chế độ xem
- 22. Bạn sử dụng nút “K” ở chế độ bình thường của VIM như thế nào?
- 23. Chế độ xem và xoay ảnh tùy chỉnh trong Zxing cho mã QR?
- 24. Làm cách nào để phát hiện khi thiết bị chuyển từ chế độ dọc sang chế độ ngang?
- 25. Làm thế nào để sử dụng UISplitViewController làm Bộ điều khiển Chế độ xem?
- 26. Sử dụng EventLogReader ở chế độ Đặt hàng mô tả?
- 27. Bàn phím mở ở chế độ toàn màn hình ở chế độ ngang
- 28. Hai chế độ xem, bên dưới một chế độ xem khác dọc theo chiều dọc và cạnh nhau theo chiều ngang sử dụng các ràng buộc bố cục
- 29. Chế độ Viper ở tất cả các chế độ
- 30. CListCtrl Thanh cuộn dọc trong Chế độ xem danh sách
Đây là những gì bạn có thể làm với ZXing 2.1. http://stackoverflow.com/questions/16252791/how-to-show-zxing-camera-in-portrait-mode-on-android/16252917#16252917 – Roylee
Kể từ Zing 2.2.0, bạn có thể đặt định hướng cho thuộc tính , hãy tham khảo [answer] này (https://stackoverflow.com/a/44284764/2584794) – Anup