После нескольких дней наблюдения за тем, как почти никто на моей работе не обращал внимания на сравнительно простой протокол социального дистанцирования, я не мог не подумать: как хорошо было бы просто получить предупреждение, простой звуковой сигнал, которого было бы достаточно, чтобы заставить их, по крайней мере, сознательно подумать и решить нарушить протокол, если ничего другого. По какой-то причине потребовалось некоторое время, чтобы понять, что это может быть реализовано в реальном мире в любом смысле, но в конце концов я сделал немыслимое и заставил свой компьютер открыть Android Studio
Проще говоря, создайте приложение, которое может обнаруживать другие экземпляры самого себя, запущенные на близлежащих устройствах. На определенном расстоянии звучит предупреждающий сигнал, на более коротком расстоянии (скорее всего, 2 м) звучит сигнал тревоги
Да, подобные приложения существуют, но почти все они полагаются на стабильное подключение к данным и загрузку вашего местоположения в базу данных, а не связь между устройствами
Сегодня приложение работает и доступно для скачивания но вместо первоначального видения сверхточных измерений расстояния и 2-уровневой системы сигнализации плюс “состояние полной ясности”, его функциональность была ограничена воспроизведением 2 звуковых сигналов:
- Предупреждающий звуковой сигнал: Предупреждает о том, что вы МОЖЕТЕ приближаться или даже находиться в пределах 2 м от другого устройства.
- Абсолютно четкий сигнал: быстрое чириканье, чтобы вы знали, что приложение теперь уверено, что ближайшее активное совместимое устройство почти наверняка находится достаточно далеко
Возможно, это не тот продукт, который изначально предполагался, а скорее результат принятия и разработки с учетом ограничений, которые в противном случае остановили бы производство на неопределенный срок
№1: Гидролокатор был непрактичен. Да, действительно
Это был законный первоначальный план: издавать неслышимый звуковой сигнал каждую секунду, на секунду и, по моим расчетам, если другое устройство услышало звуковой сигнал между 0,0001 – 0,0055 секундами тика на совершенно точных часах, он, должно быть, исходил от другого устройства слишком близко
Я не ожидал, что зайду так далеко, как сделал, но на самом деле Audacity вполне способна воспроизводить эти звуки, и, несмотря на то, что я не мог их слышать, их можно было воспроизводить между динамиками компьютера и записью USB-микрофона, чтобы показать измеримую разницу в амплитуде между комнатным шумом и “тихий” тон
Отлично! Какое простое приложение для разработки! Ну, на самом деле у этого было 2 проблемы:
- Оказывается, производителям динамиков и микрофонов приходится идти на жертвы и принимать дизайнерские решения, чтобы количество сохраненного “звука” было в лучшем случае ненадежным, но что более важно:
- Время отклика не было мгновенным. Возьмите звук и обработайте его . 01 секунда спустя кажется совершенно нормальным но это 100 миллисекунд. Фактически бесполезный
Это метод, который я могу исследовать в будущем, теперь, когда в приложение заложен определенный уровень неточности, но в то время это было нарушением сделки, особенно из-за второго ограничения приложения:
#2: Короткий срок годности при хранении
Я не собираюсь называть “Титаник” непотопляемым, говорить, что война закончится к Рождеству, или объявлять приложения для социального дистанцирования бесполезными в 2021 году, но давайте все будем надеяться, что последнее утверждение будет лучшим. В любом случае, у каждой эпидемии и пандемии до сих пор была дата окончания
Почему это меняет дизайн? Что ж, это означает, что я должен работать с подручными инструментами и провести некоторый анализ затрат и выгод за время, потраченное на изучение новой библиотеки, по сравнению с созданием собственных пользовательских материалов
К счастью, API Google Близлежащие сообщения был подходящим и не вызывал СЛИШКОМ много головной боли
Сэкономленное время оказалось бесценным, так как оно было крайне необходимо просто для того, чтобы научиться разрабатывать для Android в первую очередь
# 3: Дрейф GPS – это вещь
Я потратил более чем достаточно времени на то, чтобы кричать на Google Maps, чтобы оправдать привлечение адвоката на случай, если это станет предметом судебного разбирательства, но то, что никогда не кажется проблемой, – это точность. Многие одометры согласились с его оценкой моего расстояния до любого данного поворота. Проблема в том, что вы не едете с шагом в 2 метра
Продав только половину своей души, подключившись к данным GPS, но не загрузив местоположение в базу данных, телефоны все еще вели себя непредсказуемо: сигналы тревоги звучали на противоположных концах квартиры, останавливались рядом друг с другом и переключали состояния, ни один из них не двигался. Было ясно, что мне нужен какой-то вывод о том, как далеко они ДУМАЛИ они были
Более опытные разработчики Android подтвердили, что всегда есть дрейф в 5-10 метров, который иногда может достигать 1-2 км.
Понимая, что даже Google не достиг того уровня точности на своих телефонах, который я пытался использовать, это действительно было похоже на смертельный удар
№1: Никто не придет в джунгли, чтобы спасти тебя
Это приложение было моим первым шагом в разработке мобильных устройств, и тенденция заменять четкие, вездесущие слова, такие как “Элемент”, “Страница” и “Состояние”, максимально абстрактными синонимами, такими как “Вид”, “Активность” и “Контекст”, была лишь одним из самых ранних камней преткновения
Каким-то образом мне удалось застрять между сложностями, связанными с разрешениями, каналами уведомлений, многопоточностью и сложностями обслуживания на переднем плане одновременно на заключительном этапе
Я бы часто обращался за помощью к серверам Discord, форумам, Reddit, в общем, везде, где это было бы возможно, и, вероятно, было бы заполнено опытными разработчиками Android. В каждом посте было что-то вроде: “Так близко, но так запутано, пожалуйста, помогите”.
Ни одного полезного ответа. Фактически, большинство включало ссылки на документацию, которой я четко следовал, обвинения в слепом копировании и вставке кода, а в некоторых случаях и то, и другое (?)
Но поскольку Android является источником документации по программному обеспечению, 1-4 недостающих фрагмента информации на каждой странице, скорее всего, усугубят проблему, чем решат ее
Иногда они привлекали немного больше внимания, раскрывая намерения проекта, но только догадываясь о том, в чем может быть проблема, и публикуя фрагменты кода, я мог собрать небольшие, хотя и полезные данные, которые позже можно было объединить в более глубокое понимание того, что было не так и как это исправить
Но все мастерство кодирования в мире не помогло бы без второго прозрения:
# 2: Вы не можете изменить аппаратное обеспечение
Оправившись от удара, обнаружив, насколько велик дрейф GPS, я решил спросить приятеля, не являющегося разработчиком, как он справится с этой загадкой создания программы, для которой требуется точность, превышающая допустимую погрешность. Без колебаний он ответил: “увеличь дистанцию”.
“Это так не работает, идиот!”
Внезапная реакция на мысль, которую даже я не сразу распознал как направленную на себя, но он был прав… это не так работает, ты идиот
Аппаратное обеспечение такое, какое оно есть, дизайн необходимо было изменить, и всего за несколько настроек проект превратился из безнадежно бесполезного в готовый к производству
Оригинал: “https://dev.to/iatenine/accepting-the-limitations-of-my-social-distancing-app-and-fighting-against-feature-creep-4853”