page.title=Economia de dados
metaDescription=User-enabled otimização de uso de dados.
page.keywords="android N", "data usage", "metered network"
page.image=images/cards/card-nyc_2x.jpg
@jd:body

<div id="qv-wrapper">
  <div id="qv">
    <h2>
      Neste documento
    </h2>

    <ol>
      <li>
        <a href="#status">Verificação de preferências da Economia de dados</a>
        <ol>
          <li>
            <a href="#request-whitelist">Solicitação de permissão para colocar na lista de permissões</a>
          </li>
        </ol>
      </li>

      <li>
        <a href="#monitor-changes">Monitoramento de preferências do
 Economia de dados</a>
      </li>

      <li>
        <a href="#testing">Teste com comandos do Android Debug Bridge</a>
      </li>
    </ol>
  </div>
</div>

<p>
  Durante a vida útil de um smartphone, o custo do plano de dados pode
facilmente exceder o custo do próprio dispositivo. No N Developer Preview, os usuários podem
 ativar a Economia de dados no dispositivo como um todo para usar menos dados, seja
 em roaming, perto do final do período de cobrança ou em pacotes de dados pré-pagos pequenos.
</p>

<p>
  Quando um usuário ativa a Economia de dados em <strong>Settings</strong> e o dispositivo está
em uma rede tarifada, o sistema bloqueia o uso de dados em segundo plano e avisa
 aos aplicativos para reduzir o uso de dados no primeiro plano sempre que possível. Os usuários podem
autorizar aplicativos específicos a usar dados tarifados em segundo plano, mesmo com a Economia
 de dados ativada.
</p>

<p>
  O N Developer Preview estende a API {@link android.net.ConnectivityManager}
 para oferecer aos aplicativos uma forma de <a href="#status">recuperar as
preferências do usuário para a Economia de dados</a> e <a href="#monitor-changes">monitorar
as mudanças de preferências</a>. Como prática recomendada, os aplicativos devem verificar se o
 usuário ativou a Economia de dados e tentar limitar o uso de dados em primeiro e
 segundo plano.
</p>

<h2 id="status">
  Verificação de preferências da Economia de dados
</h2>

<p>
  No N Developer Preview, aplicativos podem usar a API {@link
 android.net.ConnectivityManager} para determinar quais restrições
 de uso de dados estão sendo aplicadas. O método {@code getRestrictBackgroundStatus()}
 retorna um dos seguintes valores:
</p>

<dl>
  <dt>
    {@code RESTRICT_BACKGROUND_STATUS_DISABLED}
  </dt>

  <dd>
    A Economia de dados está desativada.
  </dd>

  <dt>
    {@code RESTRICT_BACKGROUND_STATUS_ENABLED}
  </dt>

  <dd>
    O usuário ativou a Economia de dados para este aplicativo. Os aplicativos tentarão limitar o
 uso de dados em primeiro plano e gerenciar as restrições ao
 uso de dados em segundo plano.
  </dd>

  <dt>
    {@code RESTRICT_BACKGROUND_STATUS_WHITELISTED}
  </dt>

  <dd>
    O usuário ativou a Economia de dados, mas o aplicativo está na lista de permissões. Os aplicativos
 ainda tentarão limitar o uso de dados em primeiro e segundo plano.
  </dd>
</dl>

<p>
  É prática recomendada limitar o uso de dados sempre que o dispositivo
 estiver conectado a uma rede tarifada, mesmo que a Economia de dados esteja desativada e o aplicativo
 esteja na lista de permissões. O modelo de código a seguir usa {@link
 android.net.ConnectivityManager#isActiveNetworkMetered
 ConnectivityManager.isActiveNetworkMetered()} e {@code
 ConnectivityManager.getRestrictBackgroundStatus()} para determinar o volume máximo de dados
 que o aplicativo pode usar:
</p>

<pre>
ConnectivityManager connMgr = (ConnectivityManager)
        getSystemService(Context.CONNECTIVITY_SERVICE);
// Checks if the device is on a metered network
if (connMgr.isActiveNetworkMetered()) {
  // Checks user’s Data Saver settings.
  switch (connMgr.getRestrictBackgroundStatus()) {
    case RESTRICT_BACKGROUND_STATUS_ENABLED:
    // Background data usage is blocked for this app. Wherever possible,
    // the app should also use less data in the foreground.

    case RESTRICT_BACKGROUND_STATUS_WHITELISTED:
    // The app is whitelisted. Wherever possible,
    // the app should use less data in the foreground and background.

    case RESTRICT_BACKGROUND_STATUS_DISABLED:
    // Data Saver is disabled. Since the device is connected to a
    // metered network, the app should use less data wherever possible.
  }
} else {
  // The device is not on a metered network.
  // Use data as required to perform syncs, downloads, and updates.
}
</pre>

<h3 id="request-whitelist">
  Solicitação de permissão para colocar na lista de permissões
</h3>

<p>
  Se o seu aplicativo precisa usar dados em segundo plano, ele pode solicitar permissão para
 entrar na lista de permissões enviando uma intenção
 <code>Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS</code>
 que contenha o URI no nome de pacote do aplicativo, por exemplo,
 <code>package:MY_APP_ID</code>.
</p>

<p>
  O envio da intenção e do URI abre o aplicativo <strong>Settings</strong> e
 exibe as configurações de uso de dados de seu aplicativo. O usuário pode decidir então se
 ativará os dados em segundo plano para o aplicativo. Antes de enviar a intenção, é
 prática recomendada perguntar primeiro ao usuário se ele deseja iniciar o
aplicativo <strong>Settings</strong> com o objetivo de ativar o uso
 de dados em segundo plano.
</p>

<h2 id="monitor-changes">
  Monitoramento de alterações nas preferências da Economia de dados
</h2>

<p>
  Os aplicativos podem monitorar alterações nas preferências da Economia de dados criando um {@link
 android.content.BroadcastReceiver} para escutar {@code
ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED} e registrar
 dinamicamente o receptor em {@link android.content.Context#registerReceiver
 Context.registerReceiver()}. Quando recebe esta transmissão, o aplicativo deve
 <a href="#status">verificar se as novas preferências da Economia de dados afetam
 as permissões</a> chamando {@code
 ConnectivityManager.getRestrictBackgroundStatus()}.
</p>

<p class="note">
  <strong>Observação:</strong> O sistema só envia esta transmissão para aplicativos que
 se registram dinamicamente para recebê-la em {@link
 android.content.Context#registerReceiver Context.registerReceiver()}. Os aplicativos
 que se registrarem para receber a transmissão no manifesto não a
 receberão.
</p>

<h2 id="testing">
  Teste com comandos do Android Debug Bridge
</h2>

O <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge (ADB)</a>
oferece alguns comandos que podem ser usados para verificar e configurar permissões
de rede:

<dl>
  <dt>
    <code>$ adb shell dumpsys netpolicy</code>
  </dt>

  <dd>
    Gera um relatório que inclui a configuração de restrição atual da rede de segundo plano global
, os UIDs do pacote em lista de permissões e as permissões de rede
 de outros pacotes conhecidos.
  </dd>

  <dt>
    <code>$ adb shell cmd netpolicy</code>
  </dt>

  <dd>
    Exibe uma lista completa de comandos do Gerenciador de políticas de rede (netpolicy).
  </dd>

  <dt>
    <code>$ adb shell cmd netpolicy set restrict-background
    &lt;boolean&gt;</code>
  </dt>

  <dd>
    Ativa ou desativa o modo da Economia de dados ao passar <code>true</code> ou
 <code>false</code>, respectivamente.
  </dd>

  <dt>
    <code>$ adb shell cmd netpolicy add restrict-background-whitelist
    &lt;UID&gt;</code>
  </dt>

  <dd>
    Adiciona o UID do pacote especificado à lista de permissões para permitir o uso de dados de segundo plano
 tarifados.
  </dd>

  <dt>
    <code>$ adb shell cmd netpolicy remove restrict-background-whitelist
    &lt;UID&gt;</code>
  </dt>

  <dd>
    Adiciona o UID do pacote especificado à lista de permissões para bloquear o uso de dados
 de segundo plano tarifados enquanto a Economia de dados estiver ativada.
  </dd>
</dl>