O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Seleção de rede por aplicativo (PANS)

Os veículos dependem cada vez mais da conectividade para gerenciar a lista crescente de casos de uso solicitados por OEMs e proprietários de veículos, resultando em uma maior pegada de dados e custos associados. Use o recurso de seleção de rede Per-Aplicação (PANS) para encaminhar o tráfego de aplicações especificadas em redes pagos pelo OEM.

Com o PANS, você pode gerenciar o volume e o custo do uso de dados e, ao mesmo tempo, fornecer uma experiência de carro robusta, segura e conectada. PANS:

  • Consiste em uma nova API adicionado ao ConnectivityManager disponível apenas para dispositivos automotivos.
  • Fornece uma API sugestão Wi-Fi atualizados (veja Wi-Fi sugestão API para conectividade de internet ) para incluir suporte para alterar dinamicamente recursos de rede panelas.
  • Coleta métricas de suporte.
  • Fornece um aplicativo de referência.

Por que PANS?

PANS pode:

  • Atualize dinamicamente os mapeamentos de aplicativo para rede.
  • Gerencie o roteamento no nível do aplicativo sem fazer alterações nos aplicativos.
  • Apenas os aplicativos permitidos pelo OEM podem acessar as redes OEM mapeadas.
  • Os desenvolvedores de aplicativos não precisam fazer nenhuma alteração para implementar esse recurso.
  • As métricas voltadas para o usuário rastreiam o uso de dados de aplicativo para rede para redes gerenciadas por OEM.
  • O acesso à rede é seguro e não pode ser abusado por meio de casos de uso não intencionais ou aplicativos não autorizados.
  • As alterações nos mapeamentos de aplicativo para rede do PANS são comunicadas aos usuários.
  • A mesma configuração de rede é aplicada a todos os usuários.

Principais vantagens

PANS fornece OEMS com estas vantagens principais:

  1. Os OEMs podem pagar pelo tráfego de rede em vez dos usuários:
    • As atualizações do sistema podem ser fornecidas sem nenhum custo para o usuário.
    • O uso de rede de aplicativos específicos pode ser fornecido sem nenhum custo para o usuário.
    • A telemetria e outras análises podem ser gerenciadas sem nenhum custo para o usuário.
  2. Os OEMs podem garantir que os aplicativos críticos permaneçam conectados, mesmo sem um plano de dados pago pelo usuário. Por exemplo, recursos essenciais para a segurança, como mapas, assistente (direção sem as mãos) e atualizações do sistema continuam a funcionar mesmo quando o usuário não tem um plano de dados.
  3. PANS fornece granularidade adicional de controle específico para roteamento de tráfego de rede no Android. Por exemplo, os OEMs podem definir de maneira ideal uma topologia de rede lógica para o roteamento do tráfego no nível do aplicativo.

Figura 1. Estrutura PANS

Implementando PANS

Para implementar PANELAS, um novo ConnectivityManager API, setOemNetworkPreference , é fornecido. Esta nova API do Google Maps aplicações a um OemNetworkPreference . Esta API está disponível apenas para dispositivos automotivos e é anotada como uma @SystemApi com uma nova signature permissão.

Figura 2. Implementar PANELAS

OemNetworkPreference

OemNetworkPreference é uma abstração sobre OEM_PAID e OEM_PRIVATE NetworkCapabilities aplicativos de mapeamento por nome do pacote para uma preferência de rede. As preferências de rede permitem hierarquias de rede. Por exemplo, mapeando um aplicativo para o OEM_NETWORK_PREFERENCE_OEM_PAID preferência irá resultar na seguinte prioridade das redes: usar um UNMETERED rede primeiro, se UNMETERED não é uso disponível um OEM_PAID rede, e se OEM_PAID não estiver disponível, usar a rede padrão do sistema.

  • OEM_PAID Usado principalmente para aplicativos que podem ser encaminhados em ambas as redes não-OEM OEM e.
  • OEM_PRIVATE Usado principalmente para OEM Apps para obter acesso a uma rede dedicada a eles.
/**
* If an unmetered network is available, use it.
* Otherwise, if a network with the OEM_PAID capability is available, use it.
* Otherwise, use the general default network.
*/
public static final int OEM_NETWORK_PREFERENCE_OEM_PAID = 1;

/**
* If an unmetered network is available, use it.
* Otherwise, if a network with the OEM_PAID capability is available, use it.
* Otherwise, the app doesn't get a default network.
*/
public static final int OEM_NETWORK_PREFERENCE_OEM_PAID_NO_FALLBACK = 2;

/**
* Use only NET_CAPABILITY_OEM_PAID networks.
*/
public static final int OEM_NETWORK_PREFERENCE_OEM_PAID_ONLY = 3;

/**
* Use only NET_CAPABILITY_OEM_PRIVATE networks.
*/
public static final int OEM_NETWORK_PREFERENCE_OEM_PRIVATE_ONLY = 4;

Chamando APIs PANS

Para usar APIs PANS:

  1. Use OemNetworkPreferences para mapear um aplicativo para uma preferência de rede.
  2. Chamada setOemNetworkPreference com o OemNetworkPreferences objeto.
  3. Use o Runnable interface para escutar para a conclusão API.

Por exemplo:

// Mapping three packages to two network preferences
// Packages have a 1:1 mapping to network preferences
OemNetworkPreferences pref = new OemNetworkPreferences.Builder()
   .addNetworkPreference("first.package.name", OEM_NETWORK_PREFERENCE_OEM_PAID)
   .addNetworkPreference("second.package.name", OEM_NETWORK_PREFERENCE_OEM_PAID)
   .addNetworkPreference("third.package.name", OEM_NETWORK_PREFERENCE_OEM_PRIVATE_ONLY)
   .build();

myConnectivityManager.setOemNetworkPreference(pref, myExecutor, myListener);

Considerações

Ao implementar o PANS, mantenha os seguintes pontos em mente:

  • As preferências de rede não são mantidas nas inicializações e precisarão ser reaplicadas a cada inicialização.
  • Para criar uma preferência para um aplicativo, ele não precisa ser instalado. Portanto, as preferências de rede para aplicativos desinstalados podem ser definidas de forma proativa.
  • A qualquer momento, um aplicativo só pode ser mapeado para uma única preferência de rede.

Configurando uma rede

Uma rede quer com os OEM_PAID ou OEM_PRIVATE recursos devem estar disponíveis quando se utiliza uma preferência de rede correspondente. O Android oferece suporte para a configuração de recursos para redes Ethernet e Wi-Fi. Para redes Ethernet, você pode usar uma sobreposição de recursos, config_ethernet_interfaces . Isso é definido em tempo de compilação.

Por Wi-Fi, o WifiNetworkSuggestion API pode ser usado com os novos Android 12 APIs, setOemPaid(Boolean) e setOemPrivate(Boolean) . Isso pode ser alterado em tempo de execução.

Considere estes exemplos:

  1. A sobreposição de recurso nomeado config_ethernet_interfaces especifica:
    • O nome da interface a ser configurada.
    • Os desejados NetworkCapabilities valores.
      <!-- 11 NET_CAPABILITY_NOT_METERED
           12 NET_CAPABILITY_INTERNET
           14 NET_CAPABILITY_TRUSTED
           15 NET_CAPABILITY_NOT_VPN
           22 NET_CAPABILITY_OEM_PAID || 26 NET_CAPABILITY_OEM_PRIVATE -->
      <string-array translatable="false" name="config_ethernet_interfaces">
         <item>eth0;11,12,14,15,22;;</item></string-array>
      
  2. Este WiFiNetworkSuggestion pode ser alterado dinamicamente:
    ArrayList<WifiNetworkSuggestion> list = new ArrayList<>();
    list.add(new WifiNetworkSuggestion.Builder()
                   .setSsid(WifiInfo.sanitizeSsid(ssid))
                   .setOemPrivate(true)
                   .build());
    mWifiManager.addNetworkSuggestions(list);
    

Restringindo o acesso a redes PANS

Marcação de uma rede, quer com os OEM_PAID ou OEM_PRIVATE capacidades marcas que a rede como uma rede restrita. Redes restritas pode ser usado por aplicações que tenham a CONNECTIVITY_USE_RESTRICTED_NETWORKS permissão, que é controlada por OEMs.

Apps com essa permissão podem usar as redes fornecidos os aplicativos explicitamente pedir-lhes restrito. No entanto, esses aplicativos não terão redes restritas como padrão. Os aplicativos mapeados por meio do PANS podem ter redes OEM restritas definidas como padrão e não precisam da permissão de rede restrita para usá-los. Quando tal aplicativo tem uma rede OEM restrita atribuída como sua rede padrão pelo PANS, ele também tem a capacidade de solicitar explicitamente essa rede OEM se o aplicativo decidir fazê-lo.

Revendo o aplicativo de referência

Um aplicativo de referência (incluindo o código) chamado NetworkPreferenceApp é fornecido em user-debug automóvel constrói e demonstra como:

  • Consumir métricas PANS.
  • Defina a política PANS.
  • Defina uma política padrão para o dispositivo.
  • Limpe uma política.
  • Aplique uma política na inicialização.
  • Use a API do Driver Distração (ver Diretrizes motorista distração ).
  • Atualizar dinamicamente Wi-Fi com OEM_PAID e OEM_PRIVATE .

Aplicativo Figura 3. Referência

Métricas

Para facilitar a transparência em torno de uso de dados, métricas são recolhidos e disponibilizados sobre a quantidade de dados transmitidos ao longo dos OEM_PAID e OEM_PRIVATE mapeamentos de rede.

Solução de problemas

A maioria das condições de solução de problemas surge de um aplicativo que usa a rede errada (sem conectividade de rede) ou de excedentes de dados. Para habilitar resoluções rápidas:

  • Conectividade dumpsys inclui uma lista de redes per-app padrão ativas e suas aplicações associadas (mapeada a partir de PANS).
  • NetD dumpsys inclui UID IP e regras de firewall.
  • Netstats dumpsys inclui PANS métricas por aplicação. Por exemplo, quais aplicativos usaram qual rede OEM.

Todos dumpsys dados estão disponíveis através da criação de um bugreport Android.