Как такие устройства, как Android Auto/Insta360, используют Wi-Fi, не блокируя сотовый Интернет и не показывая «ПодключеAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как такие устройства, как Android Auto/Insta360, используют Wi-Fi, не блокируя сотовый Интернет и не показывая «Подключе

Сообщение Anonymous »

Я пытаюсь понять, как некоторые аксессуары Android (например, головные устройства Android Auto, камеры Insta360, видеорегистраторы и т. д.) могут:
  • подключаться к телефону через Wi-Fi
  • поддерживать сотовую связь (LTE/5G) в качестве Интернета подключение
  • не показывать «Подключено без Интернета» в настройках Android Wi-Fi
  • не требовать VPN на телефоне
а «обычная» точка доступа Wi-Fi без Интернета в Android обычно:
  • становится сетью по умолчанию
  • проверяется/помечается как «Нет Интернета»
  • блокирует сотовый трафик, если не переопределено вручную
Что я заметил
  • Эти устройства обычно сначала требуется сопряжение по Bluetooth, затем для передачи данных с высокой пропускной способностью используется Wi-Fi.
  • Сеть Wi-Fi часто отображается как обычный SSID (а не Wi-Fi Direct в пользовательском интерфейсе).
  • При подключении:

    телефон продолжает использовать Сотовые данные
  • приложения могут получить доступ к локальному устройству через Wi-Fi
  • предупреждение «Подключение без Интернета» не отображается


Что я знаю на данный момент
В Android сети классифицируются с помощью NetworkCapabilities, в частности: 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 будут очень признательны.

Подробнее здесь: https://stackoverflow.com/questions/798 ... g-cellular
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»