Android также выполняет проверку сети (DNS/HTTP-зонды), чтобы решить, обеспечивает ли сеть Интернет.
Я понимаю, что:
Приложения не могут напрямую пометить сеть Wi-Fi как LOCAL_NETWORK
Только системные / OEM / привилегированные компоненты могут создавать сети с явными возможностями.
Существует системная функция под названием локальная точка доступа, которая создает сеть Wi-Fi, явно предназначенную только для локальной сети.
Мои гипотезы
Эти устройства могут использовать:
локальную точку доступа, созданную системой (а не приложением), ИЛИ
сеть Wi-Fi, настроенную таким образом, что никогда не объявляет маршрут по умолчанию/DNS, поэтому Android считает ее только локальной
/>
Bluetooth используется для:
обнаружения
сопряжения/установления доверия
внеполосного обмена учетными данными и параметрами Wi-Fi
Поэтому Android сохраняет:
Wi-Fi → только локальный трафик
Сотовый → интернет-трафик
Мои вопросы
Как именно Android решает назначить NET_CAPABILITY_LOCAL_NETWORK сети Wi-Fi?
Это основано исключительно на маршрутизации (без шлюза по умолчанию)?
Ошибка проверки?
Или только на уровне системы API?
Почему эти устройства не выдают предупреждение пользовательского интерфейса «Подключено без Интернета», в то время как обычная точка доступа без Интернета обычно это делает?
Включен ли внутренний Wi-Fi Direct, даже если пользовательский интерфейс показывает обычный SSID?
Какую роль Bluetooth играет на уровне ОС (помимо простого пользовательского интерфейса)?
Достижимо ли такое поведение с помощью сторонних приложений или оно ограничено системными/OEM-компонентами?
Кто я? не ищем
Обходные пути с использованием VPN
Ручная привязка сети для каждого приложения
Общие объяснения того, что такое Wi-Fi Direct или Bluetooth
Любые разъяснения или ссылки на исходный код Android/документацию AOSP будут очень признательны.
Я пытаюсь понять, как некоторые аксессуары Android (например, [b]головные устройства Android Auto[/b], [b]камеры Insta360[/b], видеорегистраторы и т. д.) могут: [list] [*]подключаться к телефону через [b]Wi-Fi[/b]
[*]поддерживать [b]сотовую связь (LTE/5G) в качестве Интернета подключение[/b]
[*][b]не[/b] показывать «Подключено без Интернета» в настройках Android Wi-Fi
[*][b]не[/b] требовать VPN на телефоне
[/list] а «обычная» точка доступа Wi-Fi без Интернета в Android обычно: [list] [*]становится сетью по умолчанию
[*]проверяется/помечается как «Нет Интернета»
[*]блокирует сотовый трафик, если не переопределено вручную
[/list]
[b]Что я заметил[/b] [list] [*]Эти устройства обычно сначала требуется [b]сопряжение по Bluetooth[/b], затем для передачи данных с высокой пропускной способностью используется Wi-Fi.
[*]Сеть Wi-Fi часто отображается как [b]обычный SSID[/b] (а не Wi-Fi Direct в пользовательском интерфейсе).
[*]При подключении:
телефон продолжает использовать [b]Сотовые данные[/b]
[*]приложения могут получить доступ к локальному устройству через Wi-Fi
[*]предупреждение «Подключение без Интернета» не отображается
[/list]
[b]Что я знаю на данный момент[/b] В Android сети классифицируются с помощью NetworkCapabilities, в частности: [list] [*][code]NET_CAPABILITY_INTERNET[/code]
[*][code]NET_CAPABILITY_NOT_INTERNET[/code]
[*][code]NET_CAPABILITY_LOCAL_NETWORK[/code]
[/list] Android также выполняет проверку сети (DNS/HTTP-зонды), чтобы решить, обеспечивает ли сеть Интернет. Я понимаю, что: [list] [*]Приложения [b]не могут напрямую пометить сеть Wi-Fi[/b] как LOCAL_NETWORK
[*]Только системные / OEM / привилегированные компоненты могут создавать сети с явными возможностями.
[*]Существует системная функция под названием [b]локальная точка доступа[/b], которая создает сеть Wi-Fi, явно предназначенную только для локальной сети.
[/list]
[b]Мои гипотезы[/b] [list] [*]Эти устройства могут использовать: [list] [b]локальную точку доступа[/b], созданную системой (а не приложением), ИЛИ
[*]сеть Wi-Fi, настроенную таким образом, что [b]никогда не объявляет маршрут по умолчанию/DNS[/b], поэтому Android считает ее только локальной /> [/list]
[*]Bluetooth используется для: [list] обнаружения
[*]сопряжения/установления доверия
[*]внеполосного обмена учетными данными и параметрами Wi-Fi
[/list]
[*]Поэтому Android сохраняет: [list] Wi-Fi → только локальный трафик
[*]Сотовый → интернет-трафик
[/list]
[/list]
[b]Мои вопросы[/b] [list] [*][b]Как именно Android решает назначить NET_CAPABILITY_LOCAL_NETWORK сети Wi-Fi?[/b] [list] Это основано исключительно на маршрутизации (без шлюза по умолчанию)?
[*]Ошибка проверки?
[*]Или только на уровне системы API?
[/list]
[*][b]Почему эти устройства не выдают предупреждение пользовательского интерфейса «Подключено без Интернета»[/b], в то время как обычная точка доступа без Интернета обычно это делает?
[*][b]Включен ли внутренний Wi-Fi Direct[/b], даже если пользовательский интерфейс показывает обычный SSID?
[*][b]Какую роль Bluetooth играет на уровне ОС[/b] (помимо простого пользовательского интерфейса)?
[*]Достижимо ли такое поведение с помощью [b]сторонних приложений[/b] или оно [b]ограничено системными/OEM-компонентами[/b]?
[/list]
[b]Кто я? не ищем[/b] [list] [*]Обходные пути с использованием VPN
[*]Ручная привязка сети для каждого приложения
[*]Общие объяснения того, что такое Wi-Fi Direct или Bluetooth
[/list]
[b]Любые разъяснения или ссылки на исходный код Android/документацию AOSP будут очень признательны.[/b]