Конечно! Вот отформатированный текст промта для копирования в комментарий на Habr (или любой другой форум/блог). Он готов к вставке “как есть”.
**Промт для нейросети / ТЗ на Android-приложение для вардрайвинга (Wi-Fi + GPS + отправка на PHP/MySQL)**
Коллеги, прошу помощи в генерации кода. Нужно полное Android-приложение на **Java** (API 26+) со следующим функционалом. Готов принять код от нейросети или от разработчика по этому ТЗ.
## Что должно делать приложение
1. Сканировать Wi-Fi точки доступа (MAC, SSID).
2. Одновременно получать GPS-координаты.
3. Сохранять данные в локальную SQLite.
4. Отправлять накопленное на сервер (NGINX + PHP + MySQL).
5. Работать в фоне с уведомлением (Foreground Service).
6. Иметь два экрана: первый запуск (настройка) и главный (статус + лог).
7. В настройках можно менять страну/город/адрес сервера.
## Структура БД на сервере (MySQL)
```sql
CREATE TABLE `wifi_scans` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`city` VARCHAR(100) NOT NULL,
`mac` VARCHAR(17) NOT NULL,
`latitude` DECIMAL(10,8) NOT NULL,
`longitude` DECIMAL(11,8) NOT NULL,
`timestamp` BIGINT UNSIGNED NOT NULL,
PRIMARY KEY (`id`),
INDEX `idx_mac` (`mac`),
INDEX `idx_city` (`city`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Экран первого запуска (FirstRunActivity)
Показывается один раз. Поля:
Страна (EditText)
Город (EditText)
IP или домен сервера (EditText, пример: 192.168.1.100 или myserver.com)
Кнопка «Сохранить и продолжить». После нажатия:
Сохранить в SharedPreferences
Запустить WifiScanService
Перейти на MainActivity
Главный экран (MainActivity)
Элементы сверху вниз:
Текстовое поле «Статус: сервер (адрес)»
Текстовое поле «Ожидает отправки: N»
Кнопка «Настройки» (открывает SettingsActivity)
Заголовок «Лог работы»
RecyclerView со списком логов (последние 50, обновление каждые 2 секунды)
Каждый лог: время (HH:MM:SS) + сообщение. Цвет текста:
INFO – чёрный
SUCCESS – зелёный
ERROR – красный
Экран настроек (SettingsActivity)
Полностью повторяет форму первого запуска (Страна, Город, Сервер). Кнопки:
Отмена (закрыть окно)
Сохранить (обновить SharedPreferences, перезапустить WifiScanService, закрыть окно)
Фоновый сервис (WifiScanService)
Foreground Service с уведомлением «Wi-Fi Scanner активен»
Интервал сканирования 10 секунд (жёстко в коде или из настроек)
Шаги каждые 10 секунд:
Проверить разрешения (ACCESS_FINE_LOCATION)
Включить Wi-Fi, если выключен
wifiManager.startScan()
Получить ScanResults
Получить последнюю GPS-координату (LocationManager.GPS_PROVIDER)
Если GPS = null — пропустить сканирование, записать в лог «Нет GPS сигнала»
Для каждого ScanResult сохранить в локальную БД (таблица wifi_cache): MAC, SSID, latitude, longitude, timestamp, страна, город
Записать в лог «Сохранено X сетей»
Запустить UploadManager.tryUpload()
UploadManager
Отдельный поток (Executors)
Берёт из wifi_cache до 50 записей (getUnsentRecords)
Приложение для мобилки интересная тема. Надо бы собрать. Сканить эфир, собирать MAC + геотеги и отправлять на свой сервер. Займусь пожалуй на досуге, всё для этого есть.
У меня был проект WiFi на транспорте в г.Томск. Я собирал мак адреса сканируя эфир WiFi роутерами и скалдывал в БД. Позднее сделал систему отслеживания автобусов по радиоэфиру, и прикрутил к 2гис. Это не бесполезное занятие, а просто не дооценённая идея до которой еще не дошли массы. Если дело в экономике и дальше так пойдёт, то глонасс скорее всего прикажет долго жить, потребуются альтернативы, и ваши труды не пропадут даром, можете не сомневаться. Там человек выше советовал ESP32-c5, вполне дельное замечание. Если перенесёте проект на эту платформу, и дадите гитхаб ссылку, буду признателен.
О! Я тут как раз этим вопросом озадачиваюсь в своих изысканиях: https://wi-fi.seversk.ru/TriTon.html Исходники лежат тут: https://github.com/den4ik86/TriTon/blob/main/TriTon.html Я написал статью про свои наработки, но пока не прошла модерацию. Хотелось бы из симулятора сделать прикладное приложение для планирования и развёртывания Wi-Fi сетей. Хочу добавить в симулятора работу с направленные антеннами, возможность интеграции с 2gis или другими картами. Одному такое сделать наверное будет сложно, поэтому если есть у кого то желание поучаствовать, то буду рад пулреквестам и живому общению, касаемо данной темы.
Ну раз есть локалка то каким то шлюзом это дело шевелится, скорее всего у Вас там микрот какой нибудь стоит, ну или что нибудь под Фяхой или Линухой. Если Микрот то Openwrt, в двух последних случаях так же есть проги для работы с Magic package. Под Wrt есть Mqtt брокер, которого можно дополнить микрокотроллерами, какими нибудь ESP32 с wifi модулем на борту. А покупать целый одноплатник чтоб просто "кнопочку" дергать, расточительно. Не спорь с папой, папа знает =) .
Я своего малого учу так, сам раскопаю интересующую тему, скину ссылки ребёнку в телегу. Набрасываю базу в коде, и так же отдаю ему, позже ставлю конкретную задачу.
Как по мне, так многие сайтоделатели страдают только одним изъяном — напихать кучу переделок и свистелок в свои проекты, причём убогого качества. Посмотрите на эти уродливые зарисовки от яндекс где они свои курсы толкают, это же просто трэшак, я бы под грибами до такого не допер. Или на сайты с адоптацией через bootstrap посмотреть, ну куда же было лучше когда была отдельная страница для мобилки и для компа, с телефона это просто вызывает раздражение вплоть до нервного срыва, неужели не ясно что js на мобиле и компе работает с разной скоростью? Я не противник js, и даже больше, js необходимый инструмент для создания современного веб приложения, но когда его слишком много это становится не продуктом, а куском говна. Интерфейс должен быть лаконичный, с интуитивно понятными элементами управления, подписями. Вполне удачным интерфейсом я считаю концепцию иконок как в ios, Android. Мне до сих пор не ясно почему сайтоделы не перенимают этот опыт. Из программ для ПК считаю дебильным интерфейс VS code и некоторых других продуктов от маек, где пиктограммы слабо отражают функционал элемента (простые текстовые подписи очень не мешали бы). Это моё личное оценочное мнение, не претендую на истину в последней инстанции, но реально бесит что сейчас люди делают топорные, тормозные и совершенно непонятные интерфейсы.
Мой гит в профиле. Сейчас экзамены по учёбе, не шибко хорошо со временем. Летом буду всеми интересности заниматься.
Конечно! Вот отформатированный текст промта для копирования в комментарий на Habr (или любой другой форум/блог). Он готов к вставке “как есть”.
Экран первого запуска (FirstRunActivity)
Показывается один раз. Поля:
Страна (EditText)
Город (EditText)
IP или домен сервера (EditText, пример: 192.168.1.100 или myserver.com)
Кнопка «Сохранить и продолжить». После нажатия:
Сохранить в SharedPreferences
Запустить WifiScanService
Перейти на MainActivity
Главный экран (MainActivity)
Элементы сверху вниз:
Текстовое поле «Статус: сервер (адрес)»
Текстовое поле «Ожидает отправки: N»
Кнопка «Настройки» (открывает SettingsActivity)
Заголовок «Лог работы»
RecyclerView со списком логов (последние 50, обновление каждые 2 секунды)
Каждый лог: время (HH:MM:SS) + сообщение. Цвет текста:
INFO – чёрный
SUCCESS – зелёный
ERROR – красный
Экран настроек (SettingsActivity)
Полностью повторяет форму первого запуска (Страна, Город, Сервер). Кнопки:
Отмена (закрыть окно)
Сохранить (обновить SharedPreferences, перезапустить WifiScanService, закрыть окно)
Фоновый сервис (WifiScanService)
Foreground Service с уведомлением «Wi-Fi Scanner активен»
Интервал сканирования 10 секунд (жёстко в коде или из настроек)
Шаги каждые 10 секунд:
Проверить разрешения (ACCESS_FINE_LOCATION)
Включить Wi-Fi, если выключен
wifiManager.startScan()
Получить ScanResults
Получить последнюю GPS-координату (LocationManager.GPS_PROVIDER)
Если GPS = null — пропустить сканирование, записать в лог «Нет GPS сигнала»
Для каждого ScanResult сохранить в локальную БД (таблица wifi_cache): MAC, SSID, latitude, longitude, timestamp, страна, город
Записать в лог «Сохранено X сетей»
Запустить UploadManager.tryUpload()
UploadManager
Отдельный поток (Executors)
Берёт из wifi_cache до 50 записей (getUnsentRecords)
Формирует JSON:
Отправляет POST на URL:
{сервер}/api/upload_wifi.phpЗаголовки:
Content-Type: application/json,X-API-Key: your_secret_api_key_hereПри HTTP 200 — удаляет отправленные записи из локальной БД
При ошибке — оставляет для следующей попытки
Логирует результат (успех / ошибка)
Локальная БД (DatabaseHelper)
Таблица wifi_cache
id (INTEGER PRIMARY KEY)
mac (TEXT)
ssid (TEXT)
latitude (REAL)
longitude (REAL)
timestamp (INTEGER)
country (TEXT)
city (TEXT)
Таблица logs
id (INTEGER PRIMARY KEY)
message (TEXT)
type (TEXT)
timestamp (INTEGER)
Методы
addWifiRecord(WifiRecord)
List getUnsentRecords(int limit)
deleteRecords(List)
addLog(String message, String type)
List getRecentLogs(int limit)
int getPendingCount()
Модели
PreferencesManager
SharedPreferences:
country
city
server_url
is_first_run (boolean)
scan_interval (int, секунды, опционально)
upload_batch_size (int, опционально)
Методы: set/get для каждого, hasAllSettings()
PHP-скрипт (сервер)
Файл:
/api/upload_wifi.phpЛогика:
Проверить метод POST
Проверить заголовок X-API-Key
Прочитать JSON из php://input
Подключиться к MySQL
Для каждой записи выполнить INSERT IGNORE (или ON DUPLICATE KEY UPDATE)
Вернуть JSON:
{"success": N, "total": M, "errors": []}Разрешения в AndroidManifest.xml
ACCESS_FINE_LOCATION
ACCESS_COARSE_LOCATION
ACCESS_WIFI_STATE
CHANGE_WIFI_STATE
INTERNET
FOREGROUND_SERVICE
WAKE_LOCK
ACCESS_BACKGROUND_LOCATION
Технические требования
Язык: Java (не Kotlin)
minSdk: 26 (Android 8.0)
targetSdk: 33 или 34
Зависимости в build.gradle: appcompat, material, recyclerview
Весь код должен компилироваться в Android Studio без ошибок
Желательно
START_STICKY для сервиса
Лог хранить последние 500 записей (автоочистка старых)
При изменении настроек — сервис перезапускается с новыми параметрами
Обработка отсутствия GPS (не сохранять, писать в лог)
Что нужно получить на выходе
Полный архив проекта Android Studio:
Все .java файлы по пакетам
Все .xml layouts (activity_first_run, activity_main, activity_settings, item_log)
AndroidManifest.xml
build.gradle (app level)
PHP-скрипт upload_wifi.php
Промт для нейросети. ЯП Java Код должен быть готов к копипасте и сборке. Спасибо!
Приложение для мобилки интересная тема. Надо бы собрать. Сканить эфир, собирать MAC + геотеги и отправлять на свой сервер. Займусь пожалуй на досуге, всё для этого есть.
У меня был проект WiFi на транспорте в г.Томск. Я собирал мак адреса сканируя эфир WiFi роутерами и скалдывал в БД. Позднее сделал систему отслеживания автобусов по радиоэфиру, и прикрутил к 2гис. Это не бесполезное занятие, а просто не дооценённая идея до которой еще не дошли массы. Если дело в экономике и дальше так пойдёт, то глонасс скорее всего прикажет долго жить, потребуются альтернативы, и ваши труды не пропадут даром, можете не сомневаться. Там человек выше советовал ESP32-c5, вполне дельное замечание. Если перенесёте проект на эту платформу, и дадите гитхаб ссылку, буду признателен.
О! Я тут как раз этим вопросом озадачиваюсь в своих изысканиях: https://wi-fi.seversk.ru/TriTon.html Исходники лежат тут: https://github.com/den4ik86/TriTon/blob/main/TriTon.html Я написал статью про свои наработки, но пока не прошла модерацию. Хотелось бы из симулятора сделать прикладное приложение для планирования и развёртывания Wi-Fi сетей. Хочу добавить в симулятора работу с направленные антеннами, возможность интеграции с 2gis или другими картами. Одному такое сделать наверное будет сложно, поэтому если есть у кого то желание поучаствовать, то буду рад пулреквестам и живому общению, касаемо данной темы.
Во, брат по разуму. Тоже хотел написать автору что можно OpenWRT свою собрать со всем необходимым под эту задачу.
Зачёт бро.
Вы хорошо знакомы с Openwrt? Если нет то очень рекомендую пощупать.
Пересекался с router OS места для фантазии мало… Я имею в виду стоковый софт говно, железо огонь!
Ну раз есть локалка то каким то шлюзом это дело шевелится, скорее всего у Вас там микрот какой нибудь стоит, ну или что нибудь под Фяхой или Линухой. Если Микрот то Openwrt, в двух последних случаях так же есть проги для работы с Magic package. Под Wrt есть Mqtt брокер, которого можно дополнить микрокотроллерами, какими нибудь ESP32 с wifi модулем на борту. А покупать целый одноплатник чтоб просто "кнопочку" дергать, расточительно. Не спорь с папой, папа знает =) .
Бро, нафиг так наворочено!? Береш роутер, ставиш openwrt ставиш пакет WOL, на компе настраиваем wake on lan, и радуемся жизни.
Наличие высшего образования хороший +, только то что выходит сейчас из вузов… ТУСУР — в Ваш огород камень!
Я своего малого учу так, сам раскопаю интересующую тему, скину ссылки ребёнку в телегу. Набрасываю базу в коде, и так же отдаю ему, позже ставлю конкретную задачу.
Как по мне, так многие сайтоделатели страдают только одним изъяном — напихать кучу переделок и свистелок в свои проекты, причём убогого качества. Посмотрите на эти уродливые зарисовки от яндекс где они свои курсы толкают, это же просто трэшак, я бы под грибами до такого не допер. Или на сайты с адоптацией через bootstrap посмотреть, ну куда же было лучше когда была отдельная страница для мобилки и для компа, с телефона это просто вызывает раздражение вплоть до нервного срыва, неужели не ясно что js на мобиле и компе работает с разной скоростью? Я не противник js, и даже больше, js необходимый инструмент для создания современного веб приложения, но когда его слишком много это становится не продуктом, а куском говна. Интерфейс должен быть лаконичный, с интуитивно понятными элементами управления, подписями. Вполне удачным интерфейсом я считаю концепцию иконок как в ios, Android. Мне до сих пор не ясно почему сайтоделы не перенимают этот опыт. Из программ для ПК считаю дебильным интерфейс VS code и некоторых других продуктов от маек, где пиктограммы слабо отражают функционал элемента (простые текстовые подписи очень не мешали бы). Это моё личное оценочное мнение, не претендую на истину в последней инстанции, но реально бесит что сейчас люди делают топорные, тормозные и совершенно непонятные интерфейсы.
CAN скоро сдохнет, ethernet наше всё.