Приложения "Кликни" для Android

Виктор9 років у сервісі
Дані замовника будуть вам доступні після подання заявки
29.10.2025
  • Название приложения: Кликни

  • Платформа: Android (минимальная версия SDK: API 21 для совместимости со старыми устройствами)

  • Язык разработки: Kotlin (рекомендуется для простоты и современности)

  • Цель приложения: Минималистичное приложение для быстрого логирования повседневных событий (например, "проснулся", "поел", "принял таблетки") с использованием голосового ввода, автоматическим сохранением и просмотром лога. Приложение предназначено для пользователей, включая пожилых, поэтому акцент на простоте, без лишних интерфейсов и с автоматическими действиями (без нажатий клавиш где возможно).

  • Объём работ: Простое приложение (около 300-500 строк кода), без внешних серверов, все данные локально в SQLite.

  • Бюджет и сроки: Не указаны, но для фрилансера (Upwork/Kwork) — 1-2 дня разработки для базовой версии.

  • Дополнительные требования:

    • Интерфейс на русском языке (или с поддержкой локализации).

    • Без рекламы, премиум-фич или сложных настроек.

    • Тестирование на эмуляторе и реальном устройстве.

    • Опционально: Виджет на домашний экран для быстрого запуска.

2. Функциональные требования

2.1. База данных и хранение

  • Использовать SQLite для хранения событий: каждая запись включает ID (автоинкремент), тип события (строка, e.g. "Проснулся"), timestamp (long, в миллисекундах от System.currentTimeMillis()).

  • Предопределённый список событий по умолчанию: ["Проснулся", "Поел", "Принял таблетки", "Что-то случилось"] (можно редактировать через голосовой ввод).

  • Автоматическое добавление новых событий в базу: Если голосовой ввод распознаёт новое слово (не совпадающее с существующими), добавить его в список событий и сохранить как новое событие.

2.2. Голосовой ввод и поиск событий

  • Основной способ ввода: Голосовой распознаватель (использовать Android SpeechRecognizer API для оффлайн-распознавания, без интернета).

  • Логика:

    • При запуске приложения автоматически стартует голосовой ввод (без нажатий).

    • Пользователь произносит название события (e.g. "про" для "Проснулся").

    • Поиск по первым буквам: Приложение ищет в списке событий совпадения по префиксу (первые буквы произнесённого). Если несколько совпадений — выбрать первое или предложить выбор (но минимизировать взаимодействие).

    • Если точное совпадение — сразу логировать событие с текущим timestamp.

    • Если новое слово (не совпадает ни с одним) — добавить в базу как новый тип события и логировать.

  • Интеграция: После распознавания показать подтверждение (текст на экране) и лог предыдущих 4-5 событий (см. ниже).

2.3. Автоматическое сохранение и закрытие

  • Всё без нажатий клавиш/экрана:

    • После голосового ввода и показа лога: Запустить таймер на 5 секунд.

    • Если пользователь ничего не делает (не взаимодействует) — автоматически сохранить событие в базу и закрыть приложение (finish()).

    • Если пользователь хочет просмотреть предыдущие события — он может скроллить (но поскольку показываются только 4-5, и "которые не видно" подразумевает, что если не скроллит, то через 5 сек закрыть).

  • Таймер: Использовать Handler или CountDownTimer для 5-секундной задержки перед auto-save и close.

2.4. Просмотр лога

  • При голосовом вводе (после распознавания) автоматически показывать последние 4-5 событий из лога на экране (в виде списка: тип события + время в формате "dd.MM.yyyy HH:mm").

  • Полный лог: Отдельная кнопка или жест (e.g. свайп) для просмотра всего лога (RecyclerView, сортировка по timestamp DESC).

  • Расчёт времени: Для каждого типа события показывать "сколько прошло с последнего" (e.g. "Проснулся: 2 ч 15 мин назад") — интегрировать в основной экран или лог.

2.5. Дополнительные фичи

  • Расчёт времени с последнего события: Функция в DAO для любого типа (возвращает строку вроде "X ч Y мин назад" или "Никогда").

  • Экспорт лога: Опционально, кнопка для экспорта в CSV (через Intent для sharing).

  • Уведомления: Опционально, напоминания о событиях (e.g. через AlarmManager, но только если пользователь настроит).

  • Безопасность: Данные локальные, без облака.

3. Интерфейс пользователя (UI/UX)

  • Главный экран:

    • Авто-старт голосового ввода.

    • Текст: "Говорите событие..." (с индикатором распознавания).

    • После распознавания: Показать выбранное событие + список последних 4-5 событий (RecyclerView с лимитом).

    • Таймер: Невидимый, но через 5 сек — auto-close если нет взаимодействия.

  • Дизайн: Минималистичный, большие шрифты (для пожилых), светлая тема. Без меню, всё на одном экране.

  • Навигация: Без кнопок где возможно; голос + авто-действия.

  • Ошибки: Если распознавание не удалось — повторить автоматически или показать сообщение.

4. Технические требования

  • Зависимости:

    • AndroidX: RecyclerView, AppCompat.

    • Для голоса: android.speech.SpeechRecognizer (требует разрешения RECORD_AUDIO).

    • Для дат: java.time (API 26+) или ThreeTenABP для старых.

  • Кодовая структура:

    • Database: EventDatabase (SQLiteOpenHelper).

    • DAO: EventDao с методами addEvent, getLastNEvents(5), getTimeSinceLast(type), searchByPrefix(prefix).

    • Activity: MainActivity с SpeechRecognizer, RecyclerView для лога, Handler для таймера.

    • Адаптер: Для RecyclerView.

  • Разрешения: RECORD_AUDIO (для голоса), запросить при запуске.

  • Тестирование: Unit-тесты для DAO, UI-тесты для голоса и таймера.

5. Этапы разработки

  1. Настройка проекта и база данных (1 час).

  2. DAO и логика поиска/добавления (2 часа).

  3. Голосовой ввод и UI (3 часа).

  4. Таймер и авто-сохранение (1 час).

  5. Тестирование и доработки (2 часа).

6. Критерии приёмки

  • Приложение запускается, голос работает оффлайн.

  • События логируются с временем (HH:mm).

  • Поиск по префиксу + добавление новых.

  • Авто-закрытие через 5 сек.

  • Лог показывает последние 4-5 с временем. прилагаются варианты экраны от grok


Авторизуйтесь для подання заявки

Заявки фрілансерів