Как Android измеряет состояние подключения? [дубликат]

Я знаю, что в Android есть своего рода измерение подключения, потому что при наличии подключения значки Wi-Fi или телефонной сети становятся зелеными или синими, в зависимости от версии Android.

На мой взгляд, это измерение не идеально, потому что, хотя оно точно указывает на отсутствие подключения (например, потеря подключения к Wi-Fi), оно не так точно, когда телефон подключен к Интернету: на работе мой Defy работает под управлением Cyanogen . 9 (Android 4.0.4) имеет значки, которые всегда серые, несмотря ни на что, даже когда соединение явно установлено (см. изображение ниже).

Интересно , как именно Android измеряет статус подключения . Это путем выполнения пинга или другого рода проверки сервера? Слушая порт? Проверяя, включен ли какой-либо протокол? Или что? Этот принятый ответ на тесно связанный вопрос, похоже, не отвечает на него.

Скриншот

Я не уверен, что понимаю, чем ваша ситуация отличается от других вопросов. Второй вопрос, в частности, описывает точно такие же симптомы. Интернет работает, но значки серые, потому что цвет значков указывает только на ваше подключение к сервисам Google, ничего больше. Возможно, ваша офисная сеть каким-то образом ограничивает ваш доступ к службам Google, но не к Интернету в целом. Однако нам, вероятно, потребуется больше информации, чтобы принять такое решение.
@eldarerathis В принятом ответе говорится, что «телефон подключен к службам Google», но для меня это ничего не значит. Есть ли конкретный сервер, с которым он связан? Конкретный протокол? Порт? Что?
Теперь я полностью переписал свой вопрос. Я считаю, что теперь это более ясно, и, надеюсь, не будет закрыто как дубликат.
Поскольку сейчас это совершенно другой вопрос, мы все должны удалить наши комментарии, ответы, голоса и все такое. К сожалению, по крайней мере, для последних двух пунктов это не так просто; так что, возможно, в следующий раз вы решите начать с нового вопроса и удалить старый. Такое радикальное изменение вопроса, когда уже есть ответы, может заставить отвечающих (и комментаторов) выглядеть глупо;)
См. также Как заставить Android считать мою точку доступа Wi-Fi действительной (синий?) , в которой упоминается открытие порта tcp-udp 5228. Или Какие версии Android имеют встроенное обнаружение Wi-Fi? который имеет ссылки на часть кода
@GAThrawn: Удивительно! Это действительно близко к тому, что я хотел, особенно первая ссылка. Спасибо, что включили даже обнаружение портала, выходящее за рамки первоначального вопроса. Если вы немного уточните это и превратите в ответ, я приму это!
Примечание. Начиная с Android 4.4 (по крайней мере, в немодифицированной версии) значки всегда будут белыми. Вам нужно открыть раскрывающееся меню настроек, чтобы увидеть, есть ли у вас «хорошее» соединение.

Ответы (1)

Вся информация о нем довольно расплывчата. Вероятно, потому что они не хотят, чтобы люди атаковали конкретный сервер Google.

Например, в руководстве пользователя Samsung Galaxy Tab 10.1 говорится следующее:

Примечание. Значки состояния сети становятся синими, если на планшет добавлена ​​учетная запись Google и планшет подключен к службам Google для синхронизации Gmail, событий календаря, контактов, резервного копирования настроек и т. д. Если у вас нет учетной записи Google или, например, вы подключены к сети Wi-Fi, которая не подключена к Интернету, значки сетей отображаются серым цветом.

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