Как ИИ помог создать систему видеонаблюдения на Android. ai.. ai. android.. ai. android. Kotlin.. ai. android. Kotlin. Open source.. ai. android. Kotlin. Open source. vibe coding.. ai. android. Kotlin. Open source. vibe coding. vibecoding.. ai. android. Kotlin. Open source. vibe coding. vibecoding. ИИ.. ai. android. Kotlin. Open source. vibe coding. vibecoding. ИИ. ии-ассистент.. ai. android. Kotlin. Open source. vibe coding. vibecoding. ИИ. ии-ассистент. искусственный интеллект.

Превращаем смартфон в умного охранника с помощью Kotlin, CameraX, Gemini AI и Telegram

Прежде чем я начну рассказ о своем проекте, хочу выразить огромную благодарность всем тем бесчисленным программистам, разработчикам и энтузиастам, которые на протяжении многих лет делились своим кодом, знаниями и опытом в интернете. Ваши открытые проекты, ответы на Stack Overflow, статьи, туториалы и обсуждения на форумах стали той самой питательной средой, на которой обучались большие языковые модели (LLM), включая и ту, что помогала мне. Без вашего вклада в общее дело такие мощные ИИ-ассистенты, которые сегодня так сильно облегчают и ускоряют разработку, были бы просто невозможны. Спасибо вам за то, что делаете мир разработки открытее и доступнее!

Исходный код проекта «Storog» полностью открыт и доступен на GitHub: storog.git

Приглашаю всех желающих посмотреть, форкнуть и, возможно, предложить свои улучшения!

Идея: превратить смартфон в умного сторожа

Все началось с простой мысли: у многих дома лежат старые или неиспользуемые Android-смартфоны. Почему бы не превратить один из них в умного “сторожа”? Представьте: вы уходите из дома и хотите быть в курсе, если что-то изменится в комнате — откроется дверь, появится домашний питомец в запретной зоне или, не дай бог, кто-то посторонний.

Основные возможности, которые я хотел реализовать:

  • Детекция визуальных изменений: Приложение следит за картинкой с камеры и сравнивает ее с эталонным изображением

  • Настраиваемая чувствительность: Пользователь сам решает, насколько сильное изменение считать “тревожным”

  • Интеллектуальный анализ: Если изменение зафиксировано, в дело вступает ИИ (Gemini 1.5 Flash), который анализирует изображение по заданному пользователем промпту

  • Telegram-уведомления: Фотография момента изменения и вердикт ИИ отправляются в указанный Telegram-чат

  • Простота использования: Понятный интерфейс с предпросмотром камеры и кнопками “Старт/Стоп”

Скриншот приложения Storog

Скриншот приложения Storog

Интерфейс приложения: превью камеры, настройки чувствительности и промпт для ИИ

ИИ-ассистент в деле: от “Hello Android” до рабочего прототипа

Самое интересное в этой истории — весь код был написан ИИ-ассистентом (Gemini 2.5 Pro Preview в trae.ai). Я выступал в роли продакт-менеджера, формулируя требования и тестируя результат.

Процесс разработки выглядел так:

1. Начало проекта Создал пустой проект в Android Studio (minSDK 26, Kotlin, Jetpack Compose) и дал ИИ изучить структуру.

Как ИИ помог создать систему видеонаблюдения на Android - 2

2. Первый функционал — отображение камеры

Мой запрос: "Нужно вывести изображение с камеры в MainActivity. 
Пусть это занимает верхнюю треть активити. 
Только работу с камерой реализуй в другом файле"

ИИ создалCameraHandler.kt и интегрировал его в MainActivity.

Как ИИ помог создать систему видеонаблюдения на Android - 3

3. Отладка разрешений Конечно, не все пошло гладко с первого раза:

  • 🐛 Проблема: Нет изображения с камеры

  • 🔍 Запрос к ИИ: “Нет изображения с камеры”

  • ✅ Решение: ИИ нашел проблему — отсутствие разрешения в AndroidManifest.xml и добавил <uses-permission android:name="android.permission.CAMERA" />

  • 🐛 Следующая проблема: Изображение появлялось только после перезапуска приложения

  • 🔍 Запрос: “Почему не отобразилось сразу изображение с камеры после включения доступа?”

  • ✅ Решение: ИИ предложил использовать mutableStateOf на уровне класса MainActivity и обновлять его в колбэке registerForActivityResult

Как ИИ помог создать систему видеонаблюдения на Android - 4

4. Добавление логики сравнения изображений

Запрос: "Добавь новый файл с функцией для сравнения двух изображений 
с камеры. Эта функция должна возвращать величину отличий в процентах"

Так появился ImageComparator.kt с функцией calculateDifferencePercentage():

suspend fun calculateDifferencePercentage(
    bitmap1: Bitmap,
    bitmap2: Bitmap,
    resizeWidth: Int? = 100, // Уменьшаем для скорости
    convertToGrayscale: Boolean = true
): Double = withContext(Dispatchers.Default) {
    try {
        val processedBitmap1: Bitmap
        val processedBitmap2: Bitmap
        
        if (resizeWidth != null) {
            val aspectRatio1 = bitmap1.height.toDouble() / bitmap1.width.toDouble()
            val resizeHeight1 = (resizeWidth * aspectRatio1).toInt()
            processedBitmap1 = Bitmap.createScaledBitmap(bitmap1, resizeWidth, resizeHeight1, true)
            // ... аналогично для bitmap2
        }
        // ... остальная логика сравнения
    } catch (e: Exception) {
        Log.e("ImageComparator", "Ошибка при сравнении изображений", e)
        0.0
    }
}

5. Реализация мониторинга

Запрос: "Добавь в MainActivity кнопку 'Старт', при нажатии нужно 
запомнить начальное изображение и потом каждые 5 секунд получать 
новое изображение и сравнивать его с начальным"

ИИ сгенерировал соответствующий код с использованием корутин (lifecycleScope.launch) и delay.

Дальше процесс шел итеративно: я описывал нужный функционал (настройки, ввод промпта для Gemini, отправка в Telegram), ИИ предлагал код, я его интегрировал, тестировал, и если что-то шло не так — снова обращался к ИИ с описанием проблемы или логами ошибок.

Что получилось: ключевые функции Storog

На данный момент приложение умеет:

  • Отображать превью с камеры в реальном времени

  • Запускать и останавливать мониторинг одной кнопкой

  • Сравнивать текущий кадр с эталонным и показывать процент различия

  • Настраивать порог срабатывания (чувствительность от 0% до 100%)

  • Анализировать изображения через Gemini AI по пользовательскому промпту

  • Отправлять уведомления в Telegram с фото и результатом анализа

  • Фильтровать ложные срабатывания (не отправляет, если ответ ИИ начинается с «Нет»)

  • Хранить настройки между запусками приложения

Технический стек

  • Язык: Kotlin

  • UI: Jetpack Compose

  • Камера: CameraX

  • Асинхронность: Kotlin Coroutines

  • AI: Google Gemini API (com.google.ai.client.generativeai)

  • Сеть: Ktor Client (для Telegram API)

  • Хранение настроек: SharedPreferences

Работа ИИ-ассистента: плюсы и подводные камни

🚀 Плюсы:

Скорость: Генерация кода для стандартных операций происходит очень быстро. То, что раньше заняло бы часы изучения документации, теперь решается за минуты.

Обучение: ИИ часто предлагает решения, о которых я мог не знать или забыть. Это отличный способ изучать новые подходы и библиотеки.

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

Помощь в отладке: ИИ неплохо справляется с анализом сообщений об ошибках и предлагает конкретные исправления.

⚠️ Минусы и особенности:

Контекст: ИИ не всегда идеально понимает общий контекст проекта. Приходится дробить задачи и давать очень четкие, недвусмысленные запросы.

Не замена пониманию: ИИ — это инструмент. Чтобы эффективно им пользоваться и исправлять его ошибки, нужно самому разбираться в технологиях.

Итеративность: Редко когда ИИ выдает идеальное решение с первого раза. Обычно это диалог: запрос → код → тестирование → уточнение → исправленный код.

Практические советы по работе с ИИ в разработке

  1. Будьте конкретны в запросах: Вместо “сделай камеру” лучше “добавь превью камеры в верхнюю треть экрана”

  2. Разбивайте задачи: Лучше сделать 5 маленьких запросов, чем один большой

  3. Всегда тестируйте код: ИИ может ошибаться, как и человек

  4. Используйте контекст: Попросите ИИ изучить структуру вашего проекта

  5. Не стесняйтесь переспрашивать: Если что-то непонятно, попросите объяснить решение

Текущий статус и планы развития

«Storog» — это пока прототип, но уже вполне рабочий. В планах:

  • Работа в фоновом режиме через Service

  • Расширенное планирование мониторинга (временные интервалы)

Заключение

Создание «Storog» с помощью ИИ‑ассистента стало интересным и продуктивным опытом. Это не волшебная кнопка «сделать все за меня», а скорее очень мощный «парный программист», который может взять на себя рутину и помочь быстрее двигаться к цели.

Главный вывод: ИИ значительно снижает барьер входа в разработку и позволяет сосредоточиться на идее, а не на технических деталях реализации.

Если у вас есть старый Android‑смартфон и желание поэкспериментировать — попробуйте Storog! Исходный код полностью открыт: storog.git

Буду рад вашим звездам ⭐, форкам 🍴 и предложениям по улучшению!


Что вы думаете о разработке с ИИ-ассистентами? Поделитесь своим опытом в комментариях!

Автор: kashyapov

Источник

Rambler's Top100