Monzo đã giảm hơn 9.000 dòng mã và cải thiện tỷ lệ bỏ dở quy trình đăng ký lên gấp 5 lần nhờ CameraX
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Monzo là một dịch vụ ngân hàng và ứng dụng cung cấp các dịch vụ tài chính kỹ thuật số và chỉ dành cho thiết bị di động. Sứ mệnh của họ là giúp mọi người sử dụng tiền một cách hiệu quả. Để đăng ký khách hàng mới, ứng dụng Monzo sẽ chụp ảnh giấy tờ tuỳ thân (chẳng hạn như hộ chiếu, giấy phép lái xe hoặc thẻ căn cước) và quay video chân dung tự chụp để chứng minh rằng giấy tờ tuỳ thân là của người đăng ký.
Những việc họ đã làm
Các phiên bản đầu của ứng dụng Monzo sử dụng API camera2. Các sự cố ngẫu nhiên và hành vi bất thường trên một số thiết bị khiến 25% khách hàng tiềm năng không thực hiện các bước chụp ảnh giấy tờ tuỳ thân và quay video selfie.
Để giải quyết những thách thức này, Monzo đã chuyển sang dùng CameraX (một thư viện hỗ trợ Jetpack được thiết kế để giúp việc phát triển ứng dụng máy ảnh trở nên dễ dàng hơn) nhằm triển khai các yêu cầu về việc chụp ảnh và quay video. Bằng cách sử dụng CameraController
, Monzo đã triển khai tính năng chụp ảnh giấy tờ tuỳ thân bằng phương thức takePicture()
. Đối với video selfie, họ đã sử dụng các phương thức startRecording()
và stopRecording()
. Họ muốn thay đổi thiết kế quy trình đăng ký và muốn có một thư viện camera đơn giản hơn để có thể linh hoạt hơn trong thiết kế.
Kết quả
CameraX đã giúp Monzo đơn giản hoá mã của họ, giúp mã dễ duy trì hơn và đơn giản hoá quá trình phát triển. Việc chuyển sang CameraX đã giảm đáng kể số lần gặp sự cố và người dùng không còn thấy đèn flash của camera kích hoạt ngẫu nhiên nữa. Tất cả những điều này đã góp phần giảm tỷ lệ bỏ dở trong quy trình đăng ký và cải thiện ý kiến phản hồi của người dùng.
Việc đơn giản hoá mã nhờ triển khai CameraX đã giảm gần 9.000 dòng mã, trong đó có 6.000 dòng mã giao diện người dùng. Ngoài việc giúp duy trì mã dễ dàng hơn và đơn giản hoá quá trình phát triển, CameraX còn giúp tăng mức độ bao phủ mã trong các kiểm thử đơn vị.
Điều quan trọng là tác động đến quy trình đăng ký là rất đáng kể. Với việc ra mắt CameraX và những thay đổi đơn giản về thiết kế quy trình, tỷ lệ bỏ ngang khi chụp ảnh nhận dạng và quay video selfie đã giảm từ 25% xuống còn khoảng 5%.
"Đối với chúng tôi, CameraX là tất cả những gì liên quan đến độ ổn định và trải nghiệm tích hợp dễ dàng cho các nhà phát triển của chúng tôi. Đây là thư viện hoàn hảo đối với chúng tôi. Chúng tôi chỉ muốn một cách đơn giản để chụp ảnh và quay video. CameraX đã mang lại cho chúng tôi điều đó, đồng thời mã của chúng tôi đơn giản hơn và trải nghiệm người dùng cũng tốt hơn." Anastasios Morfopoulos – Nhà phát triển Android, Monzo
Bắt đầu
Hãy xem tài liệu về CameraX để tìm hiểu cách đưa mã chụp ảnh đơn giản và mạnh mẽ hơn vào ứng dụng hoặc trò chơi của bạn.
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-07-27 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-07-27 UTC."],[],[],null,["# Monzo reduced over 9,000 lines of code and improved registration dropout by 5x with CameraX\n\nMonzo is a banking service and app offering digital and mobile-only financial\nservices. Their mission is to make money work for everyone. To sign up new\ncustomers, the Monzo app captures images of an identification document (such as\npassport, driving license, or ID card) and takes a selfie video to prove that\nthe identification documents are for the applicant.\n\nWhat they did\n-------------\n\nEarly versions of the\n[Monzo](https://play.google.com/store/apps/details?id=co.uk.getmondo)\napp used camera2 APIs. Random crashes and odd behaviors on some devices led to\n25% of potential customers not proceeding beyond the identification capture and\nselfie video steps.\n\nTo address these challenges, Monzo turned to CameraX, a Jetpack support library\ndesigned to make camera app development easier, to implement their image and\nvideo capture requirements. Using\n[`CameraController`](/reference/androidx/camera/view/CameraController), Monzo implemented\nthe identification document image capture using the\n[`takePicture()`](/reference/androidx/camera/view/CameraController#takePicture(androidx.camera.core.ImageCapture.OutputFileOptions,%20java.util.concurrent.Executor,%20androidx.camera.core.ImageCapture.OnImageSavedCallback))\nmethod. For the selfie video, they used the\n[`startRecording()`](/reference/androidx/camera/view/CameraController#startRecording(androidx.camera.view.video.OutputFileOptions,%20java.util.concurrent.Executor,%20androidx.camera.view.video.OnVideoSavedCallback))\nand\n[`stopRecording()`](/reference/androidx/camera/view/CameraController#stopRecording())\nmethods. They wanted to make design changes to the sign-up flow and wanted a\nmore straightforward camera library that would give them more design\nflexibility.\n\nResults\n-------\n\nIntroducing CameraX enabled Monzo to simplify their code, making it more\nmaintainable, and has helped simplify development. The move to CameraX has\ngreatly reduced crashes and they are no longer seeing random activations of the\ncamera flash. All of this has contributed to a reduction in the drop-off rate in\nthe sign-up flow and has improved user feedback.\n\nThe simplification in code resulting from implementing CameraX reduced almost\n9,000 lines of code, including 6,000 lines of UI code. In addition to making\nthe code easier to maintain and simplifying development, CameraX also led to\nbetter code coverage in unit tests.\n\nImportantly, the impact on the sign-up flow was significant. With the\nintroduction of CameraX and the simplified flow design changes, the dropout rate\nfrom identification image capture and selfie video recording dropped from 25% to\naround 5%.\n\n\"For us, CameraX was all about stability and having an easy integration\nexperience for our developers. It was the perfect library for us---we just\nwanted a simple way to take pictures and videos. CameraX has given us that, plus\nour code is simpler and the user experience better.\" *Anastasios\nMorfopoulos---Android developer, Monzo*\n\nGet started\n-----------\n\nCheck out the [CameraX documentation](/training/camerax) to learn how to\nintroduce more robust and simplified image capture code to your app or game."]]