O Android 9 permite que as operadoras forneçam diretamente detalhes oficiais do plano aos usuários no aplicativo Configurações para reduzir a confusão do usuário e as chamadas de suporte. Em dispositivos com Android 4.0 e superior, os usuários podem configurar manualmente os detalhes do plano de dados específicos da operadora no aplicativo Configurações, por exemplo, definindo avisos e limites para gerenciar o uso de dados.
Configuração por operadora
Para configurar planos de dados, as operadoras podem adicionar funcionalidades aos seus aplicativos Android existentes usando as APIs SubscriptionPlan
. As APIs foram projetadas para oferecer suporte a uma ampla variedade de tipos de planos de dados, incluindo planos recorrentes e não recorrentes, além de planos que mudam com o tempo.
Aqui está um exemplo de como configurar um tipo comum de plano de dados que ocorre mensalmente:
SubscriptionManager sm =
context.getSystemService(SubscriptionManager.class);
sm.setSubscriptionPlans(subId, Lists.newArrayList(
SubscriptionPlan.Builder.createRecurringMonthly(
ZonedDateTime.parse("2016-12-03T10:00:00Z"))
.setTitle("G-Mobile")
.setDataLimit(4_000_000_000L,
SubscriptionPlan.LIMIT_BEHAVIOR_BILLED)
.setDataUsage(200_493_293L, dataUsageTimestamp)
.build()));
O dispositivo só permite que um aplicativo configure planos de dados sob uma destas condições:
- O cartão SIM definiu explicitamente um aplicativo que pode gerenciá-lo, conforme definido por
SubscriptionManager.canManageSubscription()
. - A operadora enviou o valor
KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING
por meioCarrierConfigManager
para indicar qual aplicativo pode gerenciar os planos de dados da operadora. - O dispositivo possui um aplicativo integrado à imagem do sistema que possui a permissão
MANAGE_SUBSCRIPTION_PLANS
.
As duas primeiras condições permitem que o aplicativo da operadora seja instalado pelo usuário, sem exigir que ele seja pré-instalado na imagem do sistema de fábrica. O sistema operacional impõe (e o CDD exige) que todos os detalhes do plano de dados configurado sejam protegidos e disponibilizados apenas para o aplicativo da operadora que originalmente forneceu os detalhes ao sistema operacional.
Um projeto sugerido é que um aplicativo da operadora use um serviço de manutenção ocioso para atualizar os detalhes do plano de dados diariamente, mas as operadoras são livres para usar uma ampla gama de mecanismos, como receber detalhes do plano de dados por meio de mensagens SMS internas da operadora. Os serviços de manutenção ociosos são melhor implementados com um trabalho JobScheduler
que usa setRequiresDeviceIdle()
e setRequiresCharging()
.
Uso por sistema operacional
O sistema operacional usa os detalhes do plano de dados fornecidos pelas APIs SubscriptionPlan das seguintes maneiras:
- Os detalhes do plano são exibidos por meio do aplicativo Configurações para exibir o uso de dados preciso aos usuários e para fornecer links diretos diretos ao aplicativo da operadora para oportunidades de atualização/upsell.
- Os limites de aviso de uso de dados e notificação de limite são configurados automaticamente com base nos detalhes do plano; o aviso é definido para 90% do limite.
- Se a operadora indicar temporariamente que a rede está "congestionada" , o sistema operacional atrasa os trabalhos do JobScheduler que podem ser deslocados no tempo, reduzindo a carga na rede da operadora.
- Se a operadora indicar temporariamente que a rede é "ilimitada" , o sistema operacional poderá relatar a conexão celular como "ilimitada" até que a operadora apague a substituição ou até que o valor de tempo limite (se fornecido) seja atingido.
- Ao comparar o uso atual de dados do usuário com o limite geral de dados, o sistema operacional estima o uso normal de dados do usuário no final do ciclo de faturamento e aloca de forma conservadora 10% de quaisquer dados excedentes para melhorar a experiência do usuário, por exemplo, permitindo que os aplicativos usem dados de múltiplos caminhos.
Personalização e validação
O aplicativo Configurações do Android exibe todos os detalhes do plano de dados configurado pela operadora, garantindo que os usuários vejam o status mais preciso de seu relacionamento com a operadora e oferecendo aos usuários um caminho para o aplicativo da operadora para atualizar seu plano. Recomenda-se que os fabricantes de dispositivos que optam por personalizar o aplicativo Configurações continuem divulgando esses detalhes.
As APIs SubscriptionManager
descritas acima são testadas por android.telephony.cts.SubscriptionManagerTest
, o que garante que os detalhes do plano de dados possam ser configurados pelos aplicativos da operadora e que as alterações sejam propagadas dentro do sistema operacional.