# cameraX

Published articles for cameraX.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Building Menu Vision: Real-Time Dish Recognition

DevFeed: [Building Menu Vision: Real-Time Dish Recognition](<https://devfeed.tech/articles/building-menu-vision-real-time-dish-recognition-27430.md>)

Original publisher: [Read original article](<https://engineeringblog.yelp.com/2026/08/building-menu-vision-real-time-dish-recognition.html>)

Author: Arpitha Dudi, Growth Tech Lead

Published: 2026-08-20T00:00:00Z

Content type: article

Language: en

Sources: [Yelp](<https://devfeed.tech/sources/yelp.md>)

Topics: [Computer vision](<https://devfeed.tech/topics/computer-vision.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Android](<https://devfeed.tech/topics/android.md>), [cameraX](<https://devfeed.tech/topics/camerax.md>), [ML Kit](<https://devfeed.tech/topics/ml-kit.md>), [Hackathon](<https://devfeed.tech/topics/hackathon.md>), [Development](<https://devfeed.tech/topics/development.md>), [iOS](<https://devfeed.tech/topics/ios.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [android](<https://devfeed.tech/tags/android.md>), [camerax](<https://devfeed.tech/tags/camerax.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [development](<https://devfeed.tech/tags/development.md>), [hackathon](<https://devfeed.tech/tags/hackathon.md>), [ios](<https://devfeed.tech/tags/ios.md>), [ml-kit](<https://devfeed.tech/tags/ml-kit.md>), [pipeline](<https://devfeed.tech/tags/pipeline.md>), [prototype](<https://devfeed.tech/tags/prototype.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [recognition](<https://devfeed.tech/tags/recognition.md>), [vision](<https://devfeed.tech/tags/vision.md>)

### AI overview

Yelp describes Menu Vision, a feature that uses a phone camera, AI, augmented reality, and text recognition to identify dishes on restaurant menus and surface related user photos and reviews. The article covers its hackathon-origin Android prototype and the production system's on-device machine learning, real-time computer vision, fuzzy matching, and distributed data pipeline.

### Source excerpt

Menus aren't just lists, they're a window into a restaurant's unique offerings, specialties, and personality, shaping where and what we choose to eat. But here's the challenge: reading "Kung Pao Chicken - Stir-fried chicken with peanuts in spicy sauce" doesn't tell you what the portions look like, whether other diners loved it, or if it matches your expectations. At Yelp, we knew we had the solution sitting in our user-generated content: hundreds of millions of photos, reviews, and prices for dishes. The problem? Users had to manually search for each dish, an experience that doesn't work well when you're at...

## Scanning bus stop codes with ML Kit and Vision in the GalwayBus Compose Multiplatform app

DevFeed: [Scanning bus stop codes with ML Kit and Vision in the GalwayBus Compose Multiplatform app](<https://devfeed.tech/articles/scanning-bus-stop-codes-with-ml-kit-and-vision-in-the-galwaybus-compose-multiplatform-app-25195.md>)

Original publisher: [Read original article](<https://johnoreilly.dev/posts/galwaybus-scan-stop-kmp/>)

Published: 2026-08-06T23:00:00Z

Content type: tutorial

Language: en

Sources: [John O'Reilly](<https://devfeed.tech/sources/john-o-reilly.md>)

Topics: [compose-multiplatform](<https://devfeed.tech/topics/compose-multiplatform.md>), [ML Kit](<https://devfeed.tech/topics/ml-kit.md>), [Android](<https://devfeed.tech/topics/android.md>), [cameraX](<https://devfeed.tech/topics/camerax.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Code](<https://devfeed.tech/topics/code.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [apple](<https://devfeed.tech/tags/apple.md>), [camera](<https://devfeed.tech/tags/camera.md>), [camerax](<https://devfeed.tech/tags/camerax.md>), [code](<https://devfeed.tech/tags/code.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [ios](<https://devfeed.tech/tags/ios.md>), [ml-kit](<https://devfeed.tech/tags/ml-kit.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [native](<https://devfeed.tech/tags/native.md>), [ocr](<https://devfeed.tech/tags/ocr.md>), [on-device](<https://devfeed.tech/tags/on-device.md>), [platform](<https://devfeed.tech/tags/platform.md>), [recognition](<https://devfeed.tech/tags/recognition.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This tutorial explains how the GalwayBus app scans six-digit bus stop codes using on-device ML Kit on Android and Apple's Vision framework on iOS. Camera preview, matching logic, and UI are shared through Compose Multiplatform, while platform-specific implementations handle camera access and OCR. Recognized six-digit runs are matched exactly to stops, and overlapping recognition requests are avoided by dropping newer frames.

### Source excerpt

Every bus stop in Galway has a plate with a 6-digit stop code printed on it. We recently added a "Scan" tab to the GalwayBus app that lets you point the camera at that plate and jump straight to the stop's departures. The text recognition runs entirely on device (ML Kit on Android, Apple's Vision framework on iOS), with the camera preview, matching logic and UI all living in the shared Compose Multiplatform code.

## Now in Android #118 -- Google I/O 2025 Part II

DevFeed: [Now in Android #118 -- Google I/O 2025 Part II](<https://devfeed.tech/articles/now-in-android-118-google-i-o-2025-part-ii-22672.md>)

Original publisher: [Read original article](<https://medium.com/androiddevelopers/now-in-android-118-google-i-o-2025-part-ii-0176766c2061?source=rss----95b274b437c2---4>)

Author: Daniel Galpin

Published: 2025-06-18T17:01:42Z

Content type: article

Language: en

Sources: [Android Developers - Medium](<https://devfeed.tech/sources/android-developers-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Google](<https://devfeed.tech/topics/google.md>), [cameraX](<https://devfeed.tech/topics/camerax.md>), [media3](<https://devfeed.tech/topics/media3.md>), [Accessibility](<https://devfeed.tech/topics/accessibility.md>), [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>)

Tags: [accessibility](<https://devfeed.tech/tags/accessibility.md>), [android](<https://devfeed.tech/tags/android.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [camerax](<https://devfeed.tech/tags/camerax.md>), [compose](<https://devfeed.tech/tags/compose.md>), [featured](<https://devfeed.tech/tags/featured.md>), [google](<https://devfeed.tech/tags/google.md>), [google-i-o](<https://devfeed.tech/tags/google-i-o.md>), [google-io-2025](<https://devfeed.tech/tags/google-io-2025.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [media3](<https://devfeed.tech/tags/media3.md>), [now-in-android](<https://devfeed.tech/tags/now-in-android.md>)

### AI overview

This article covers the second part of Google I/O 2025 updates for Android development. It highlights new Jetpack Compose capabilities, Compose-first Navigation 3, CameraX and Media3 integration, accessibility testing, Kotlin Multiplatform, Android Studio improvements, and related Android ecosystem updates.

### Source excerpt

Now in Android #118 -- Google I/O 2025 Part IICompose, Camera and Media, Accessibility ,KMP, Tools, Maps, AndroidX, Google Home, integrating the web, Google Play, and more Welcome to part two of a special Google I/O 2025 edition of Now in Android, your ongoing guide to what's new and notable in Android development. This second edition covers the latest from Jetpack Compose, Camera and Media, Accessibility ,Kotlin Multiplatform, Android development tools, Google Maps, AndroidX, Google Home with Gemini, integrating web functionality, Google Play, and more. Part one included coverage of Material Expressive, watches, cars, tablets, laptops, connected displays, the latest in adaptive app development, XR development, taking advantage of on-device and cloud based AI, and Android 16. https://medium.com/media/ac4b380d9ad7f761525349fa12cc14a0/href Now in Android: 118 - What's new in Android development at Google I/O 2025 (part 2) Most of the content of this post is available in the form of a video or podcast, so feel free to watch or listen rather than read on. (Or do all three to help you remember! There won't be a quiz.) Jetpack Compose 💻 Jetpack Compose introduced new features, including autofill support, auto-sizing text, visibility tracking, the animate bounds modifier, and accessibility checks in tests, and that's just the beginning of what's new: animateBounds provides automatic animations of a Composable's position and size within a LookaheadScope, while visibility tracking is used when you need high-performance information on a composable's position in its root container, screen, or window. For more on autofill, autosize, and the new state based TextField, check out the "Mastering text input in Compose" talk. https://medium.com/media/9d6173df81f8e842f25b25f0a406c606/href Navigation 3 is a brand new, Compose-first navigation library, now in alpha that's designed to give you greater control while simplifying building complex navigation flows. Announcing Jetpack Navigati

## Every Camera, Every Angle on Android

DevFeed: [Every Camera, Every Angle on Android](<https://devfeed.tech/articles/every-camera-every-angle-on-android-19832.md>)

Original publisher: [Read original article](<https://tech.gc.com/every-camera-every-angle-on-android/>)

Author: GameChanger

Published: 2021-09-20T14:49:50Z

Content type: tutorial

Language: en

Sources: [GameChanger](<https://devfeed.tech/sources/gamechanger.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [API](<https://devfeed.tech/topics/api.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [apis](<https://devfeed.tech/tags/apis.md>), [article](<https://devfeed.tech/tags/article.md>), [camera](<https://devfeed.tech/tags/camera.md>), [camera2](<https://devfeed.tech/tags/camera2.md>), [camerax](<https://devfeed.tech/tags/camerax.md>), [streaming](<https://devfeed.tech/tags/streaming.md>), [ultra-wide](<https://devfeed.tech/tags/ultra-wide.md>), [video](<https://devfeed.tech/tags/video.md>), [video-streaming](<https://devfeed.tech/tags/video-streaming.md>), [wide](<https://devfeed.tech/tags/wide.md>)

### AI overview

This article explains how GameChanger implemented ultrawide camera streaming on Android. It describes the differences between physical and logical camera setups and the challenges of selecting the correct camera sensor through Android's multi-camera APIs.

### Source excerpt

At GameChanger, video streaming has become a huge part of our business and thus our tech stack. But as a small company that practices shipping often, we can't ship everything feature complete from day one and thus video streaming launched with the ability to only stream from your default rear camera lens. But as we know, ultrawide lenses on phones have become common place and sure enough, customers began writing in, asking to be able to use their ultrawide cameras to stream their event. Baseball and softball fields are actually quite wide and it makes a lot of sense to be able to capture more of the field. So in time, ultrawide streaming became our priority and thus we engaged in battle with one of the most brittle Android APIs we have seen... Streaming in the olden days Well, not really in the olden days, because we are using the most up to date APIs, but before we implemented ultrawide streaming, selecting the camera we wanted to stream with was generally pretty simple: private fun CameraManager.chooseCamera(teamId: TeamId) = cameraIdList.filter { id -> val characteristics = getCameraCharacteristics(id) val capabilities = characteristics.get(CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES)!! characteristics.get(CameraCharacteristics.LENS_FACING) == CameraMetadata.LENS_FACING_BACK && capabilities.contains(CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE) } .mapNotNull { id -> val characteristics = getCameraCharacteristics(id) val cameraConfig = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP)!! val (width, height) = arrayOf(1280, 720) cameraConfig.getOutputSizes(MediaRecorder::class.java) .filter { it.width <= width && it.height <= height } .maxByOrNull { it.width * it.height }?.let { id to it } } .map { (id, resolution) -> CameraArgs(cameraId = id, width = resolution.width, height = resolution.height, fps = 30) } .firstOrNull() TL;DR: Basically, get the first rear camera that supports 720p. Note the cameraId--an

## Compose meets CameraX

DevFeed: [Compose meets CameraX](<https://devfeed.tech/articles/compose-meets-camerax-32043.md>)

Original publisher: [Read original article](<https://www.maiatoday.net/p/compose-meets-camerax/>)

Published: 2021-07-29T13:57:58Z

Content type: article

Language: en

Sources: [maiatoday](<https://devfeed.tech/sources/maiatoday.md>)

Topics: [cameraX](<https://devfeed.tech/topics/camerax.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [Jetpack](<https://devfeed.tech/topics/jetpack.md>)

Tags: [camerax](<https://devfeed.tech/tags/camerax.md>), [compose](<https://devfeed.tech/tags/compose.md>), [gdg](<https://devfeed.tech/tags/gdg.md>), [integration](<https://devfeed.tech/tags/integration.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [talk](<https://devfeed.tech/tags/talk.md>)

### AI overview

The article describes a talk presented with Ishmael about CameraX integration with Jetpack Compose for GDG Cape Town.

### Source excerpt

Co presented a talk with Ishmael about CameraX and integration with Jetpack Compose for GDG Cape Town.

## Google I/O 2019 - What's new for Android Developers

DevFeed: [Google I/O 2019 - What's new for Android Developers](<https://devfeed.tech/articles/google-i-o-2019-what-s-new-for-android-developers-27170.md>)

Original publisher: [Read original article](<https://antonioleiva.com/google-io-2019>)

Published: 2019-05-09T00:00:00Z

Content type: article

Language: en

Sources: [Antonio Leiva](<https://devfeed.tech/sources/antonio-leiva.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Google](<https://devfeed.tech/topics/google.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [cameraX](<https://devfeed.tech/topics/camerax.md>), [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Jetpack](<https://devfeed.tech/topics/jetpack.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [camerax](<https://devfeed.tech/tags/camerax.md>), [compose](<https://devfeed.tech/tags/compose.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [developers](<https://devfeed.tech/tags/developers.md>), [google](<https://devfeed.tech/tags/google.md>), [google-i-o](<https://devfeed.tech/tags/google-i-o.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [mvvm](<https://devfeed.tech/tags/mvvm.md>), [viewmodel](<https://devfeed.tech/tags/viewmodel.md>)

### AI overview

A video covering major announcements from the first Google I/O 2019 keynotes for Android developers, including Kotlin-first updates, Android Studio Beta 3.5, CameraX, ViewModel with SavedState and Coroutines, Jetpack Compose, and ViewPager2. It also demonstrates some of these announcements and links to Kotlin, coroutines, and MVVM learning resources.

### Source excerpt

Everything Android, Kotlin and other random topics