Monzo با CameraX بیش از 9000 خط کد را کاهش داد و انصراف از ثبت نام را 5 برابر بهبود بخشید.
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
Monzo یک سرویس بانکی و اپلیکیشنی است که خدمات مالی دیجیتال و تلفن همراه را ارائه میکند. ماموریت آنها این است که پول برای همه کار کند. برای ثبت نام مشتریان جدید، برنامه Monzo تصاویری از یک مدرک شناسایی (مانند گذرنامه، گواهینامه رانندگی یا کارت شناسایی) می گیرد و یک ویدیو سلفی می گیرد تا ثابت کند که مدارک شناسایی برای متقاضی است.
کاری که آنها انجام دادند
نسخه های اولیه برنامه Monzo از API های camera2 استفاده می کردند. خرابیهای تصادفی و رفتارهای عجیب و غریب در برخی دستگاهها باعث شد که ۲۵ درصد از مشتریان بالقوه فراتر از مراحل ضبط شناسایی و ویدیوی سلفی ادامه ندهند.
برای مقابله با این چالشها، مونزو به CameraX، یک کتابخانه پشتیبانی Jetpack که برای آسانتر کردن توسعه اپلیکیشن دوربین طراحی شده است، روی آورد تا الزامات ضبط تصویر و ویدیوی خود را پیادهسازی کند. با استفاده از CameraController
، Monzo ضبط تصویر سند شناسایی را با استفاده از روش takePicture()
پیاده سازی کرد. برای فیلم سلفی از متدهای startRecording()
و stopRecording()
استفاده کردند. آنها می خواستند تغییراتی در طراحی در جریان ثبت نام ایجاد کنند و یک کتابخانه دوربین ساده تر می خواستند که به آنها انعطاف طراحی بیشتری بدهد.
نتایج
معرفی CameraX مونزو را قادر ساخت تا کد خود را سادهتر کند، آن را قابل نگهداریتر کند و به سادهسازی توسعه کمک کرده است. انتقال به CameraX به میزان زیادی خرابی ها را کاهش داده است و آنها دیگر شاهد فعال سازی تصادفی فلاش دوربین نیستند. همه اینها به کاهش نرخ افت در جریان ثبت نام کمک کرده و بازخورد کاربران را بهبود بخشیده است.
سادهسازی کد حاصل از اجرای CameraX تقریباً 9000 خط کد از جمله 6000 خط کد UI را کاهش داد. CameraX علاوه بر آسانتر نگهداشتن کد و سادهسازی توسعه، به پوشش بهتر کد در تستهای واحد نیز منجر شد.
مهمتر از همه، تاثیر بر جریان ثبت نام قابل توجه بود. با معرفی CameraX و تغییرات طراحی جریان ساده، نرخ انصراف از ثبت تصویر شناسایی و ضبط ویدیوی سلفی از 25٪ به حدود 5٪ کاهش یافت.
«برای ما، CameraX تماماً در مورد ثبات و داشتن یک تجربه یکپارچه سازی آسان برای توسعه دهندگان ما بود. این کتابخانه عالی برای ما بود—ما فقط یک راه ساده برای گرفتن عکس و فیلم میخواستیم. CameraX این را به ما داده است، به علاوه کد ما ساده تر است و تجربه کاربری بهتری دارد." آناستاسیوس مورفوپولوس - توسعه دهنده اندروید، Monzo
شروع کنید
مستندات CameraX را بررسی کنید تا یاد بگیرید که چگونه کد ضبط تصویر قویتر و سادهتر را به برنامه یا بازی خود معرفی کنید.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[null,null,["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],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."]]