Разработка трекинга калорий в мобильном приложении

Отметим: когда база продуктов содержит неточные данные, а формулы КБЖУ дают ошибку в 20%, пользователи быстро теряют доверие. Мы сталкивались с проектами, где из-за неверной интерпретации штрихкодов продукты попадали не в те категории, а синхронизация с HealthKit приводила к дублированию записей. Чт

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Разработка трекинга калорий в мобильном приложении
Средний
~3-5 дней

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    896
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    1003
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    597

Отметим: когда база продуктов содержит неточные данные, а формулы КБЖУ дают ошибку в 20%, пользователи быстро теряют доверие. Мы сталкивались с проектами, где из-за неверной интерпретации штрихкодов продукты попадали не в те категории, а синхронизация с HealthKit приводила к дублированию записей. Чтобы этого избежать, мы комбинируем проверенные API (Open Food Facts, USDA), реализуем быстрый сканер штрихкодов с помощью ML Kit и Vision, и интегрируем расчёты с системным HealthKit/Health Connect на уровне нативных фреймворков. Наш опыт — более 10 проектов с гарантией точности и стабильности.

На этапе проектирования мы выбираем оптимальную базу продуктов. Open Food Facts обрабатывает запросы в 2 раза быстрее USDA за счёт геораспределённых серверов, что экономит бюджет на начальном этапе. Сравним основные источники:

Источник Доступ Качество Особенности
Open Food Facts Бесплатный REST Хорошее для глобальных брендов, пропуски для локальных 3+ млн продуктов, открытая лицензия
USDA FoodData Central Бесплатный API с ключом Детальная нутриентная информация Ориентирован на США
Локальные базы (собственные) Платный / краудсорсинг Контролируемое Подходит для региональных продуктов

Локальное кэширование популярных продуктов (топ-1000) ускоряет поиск. Промах — запрос к API. Используем Room/CoreData.

Как работает сканирование штрихкода?

Самый быстрый способ добавить продукт. На iOS — DataScannerViewController (iOS 16+, Vision framework) или AVCaptureMetadataOutput для старых версий. На Android — CameraX + ML Kit BarcodeScanning:

Пример кода для Android
val options = BarcodeScannerOptions.Builder() .setBarcodeFormats(Barcode.FORMAT_EAN_13, Barcode.FORMAT_EAN_8, Barcode.FORMAT_QR_CODE) .build() val scanner = BarcodeScanning.getClient(options) val imageAnalysis = ImageAnalysis.Builder() .setTargetResolution(Size(1280, 720)) .setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST) .build() imageAnalysis.setAnalyzer(executor) { imageProxy -> val mediaImage = imageProxy.image ?: return@setAnalyzer imageProxy.close() val image = InputImage.fromMediaImage(mediaImage, imageProxy.imageInfo.rotationDegrees) scanner.process(image) .addOnSuccessListener { barcodes -> barcodes.firstOrNull()?.rawValue?.let { barcode -> onBarcodeDetected(barcode) } } .addOnCompleteListener { imageProxy.close() } } 

Почему важна интеграция с HealthKit/Health Connect?

Данные о питании, сохранённые в системных хранилищах, доступны другим приложениям и улучшают пользовательский опыт. На iOS записываем dietaryEnergyConsumed, dietaryProtein и т.д. На Android используем NutritionRecord.

let calorieType = HKQuantityType(.dietaryEnergyConsumed) let calorieSample = HKQuantitySample( type: calorieType, quantity: HKQuantity(unit: .kilocalorie(), doubleValue: 450), start: mealTime, end: mealTime ) healthStore.save(calorieSample) { _, _ in } 
val nutritionRecord = NutritionRecord( startTime = mealTime, startZoneOffset = ZoneOffset.systemDefault().getRules().getOffset(mealTime), endTime = mealTime.plusMinutes(30), endZoneOffset = ZoneOffset.systemDefault().getRules().getOffset(mealTime), energy = Energy.kilocalories(450.0), protein = Mass.grams(35.0), totalCarbohydrate = Mass.grams(60.0), totalFat = Mass.grams(15.0), mealType = NutritionRecord.MEAL_TYPE_LUNCH ) healthConnectClient.insertRecords(listOf(nutritionRecord)) 

Интеграция требует внимания к разрешениям и правилам App Store Review Guidelines (раздел 5.1.1).

Расчёт КБЖУ: формулы и точность

Базовые формулы:

  • BMR (Mifflin-St Jeor): мужчины: 10 × вес(кг) + 6.25 × рост(см) − 5 × возраст + 5; женщины: 10 × вес(кг) + 6.25 × рост(см) − 5 × возраст − 161. Mifflin-St Jeor equation.
  • TDEE = BMR × коэффициент активности (1.2–1.9). Дефицит/профицит — целевые калории минус TDEE.
  • Суточная норма БЖУ: белок 1.6–2.2 г/кг, жиры 0.8–1.2 г/кг, углеводы — остаток от общего КБЖУ.

Проверяйте корректность на тестовых данных. Ошибки в расчётах — одна из частых проблем при самостоятельной реализации.

Обработка отсутствующих продуктов

Если продукт не найден в базе, можно добавить его вручную или через краудсорсинг. Мы реализуем механизм обратной связи: пользователь отправляет фото и данные, модератор проверяет и дополняет базу. Автоматическое распознавание по фото с помощью ML Kit ImageLabeling или Logmeal API помогает ускорить процесс, но точность зависит от качества изображения.

Что входит в работу

После подписания договора мы:

  • Составляем техническое задание с описанием всех сущностей (продукты, приёмы пищи, пользователи) и потока данных.
  • Проектируем архитектуру модулей (сеть, кэш, UI, Health интеграция).
  • Реализуем сканер штрихкодов, ручной ввод, расчёт КБЖУ и синхронизацию.
  • Готовим документацию для API и App Store/Google Play (политика конфиденциальности, разделы инструкции).
  • Предоставляем доступ к репозиторию, CI/CD пайплайну и TestFlight/Google Play Console.
  • Проводим обучение команды заказчика работе с бэкендом и метриками.
  • Оказываем поддержку в течение 3 месяцев после релиза (исправление критических багов, доработки под новые ОС).

Распознавание еды по фото (опционально)

Для определения продукта по снимку используем ML Kit ImageLabeling (MobileNetV2) или специализированные API. Сравним подходы:

Метод Точность на блюдах Скорость Стоимость Сложность интеграции
ML Kit ImageLabeling 45–55% (общие объекты) до 200 мс Бесплатно Низкая
Logmeal API 92% на 1000+ блюд 800 мс $0.01/запрос Средняя
Собственная модель (CoreML/TFLite) >95% при 50+ тыс. изображений 100–300 мс Расходы на обучение Высокая

Сопоставление результата с базой продуктов — нечёткий поиск по имени категории.

Этапы разработки трекера калорий

  1. Анализ требований — выбираем API базы продуктов, стек сканера, формулы расчёта.
  2. Проектирование архитектуры — модули, кэширование, синхронизация с HealthKit/Health Connect.
  3. Реализация — сканер штрихкодов, расчёт КБЖУ, интеграция с внешними сервисами.
  4. Тестирование — unit-тесты, UI-тесты, интеграционное на соответствие эталонным данным.
  5. Документация и деплой — подготовка метаданных, релиз в App Store / Google Play.
  6. Пост-релизная поддержка — мониторинг ошибок, доработка под новые версии ОС.

Сроки и стоимость

Базовое приложение с ручным вводом, сканером и интеграцией в HealthKit/Health Connect — 6–10 недель. С распознаванием еды по фото и аналитикой — 3–5 месяцев. Стоимость рассчитывается индивидуально в зависимости от сложности функций. Оставьте заявку на консультацию — мы подберём оптимальное решение под ваш бюджет.

Наш опыт

Более нескольких лет на рынке мобильной разработки. Реализовали 10+ проектов с трекингом здоровья. Используем современный стек: Swift 5.9, Kotlin, Jetpack Compose, Flutter. Сертификаты и лицензии подтверждают квалификацию команды.

Свяжитесь с нами, чтобы обсудить детали. Мы поможем внедрить трекинг калорий в ваше приложение. Закажите разработку — получите надёжное решение.