Home | History | Annotate | Download | only in features
      1 page.title=Economia de dados
      2 metaDescription=User-enabled otimizao de uso de dados.
      3 page.keywords="android N", "data usage", "metered network"
      4 page.image=images/cards/card-nyc_2x.jpg
      5 @jd:body
      6 
      7 <div id="qv-wrapper">
      8   <div id="qv">
      9     <h2>
     10       Neste documento
     11     </h2>
     12 
     13     <ol>
     14       <li>
     15         <a href="#status">Verificao de preferncias da Economia de dados</a>
     16         <ol>
     17           <li>
     18             <a href="#request-whitelist">Solicitao de permisso para colocar na lista de permisses</a>
     19           </li>
     20         </ol>
     21       </li>
     22 
     23       <li>
     24         <a href="#monitor-changes">Monitoramento de preferncias do
     25  Economia de dados</a>
     26       </li>
     27 
     28       <li>
     29         <a href="#testing">Teste com comandos do Android Debug Bridge</a>
     30       </li>
     31     </ol>
     32   </div>
     33 </div>
     34 
     35 <p>
     36   Durante a vida til de um smartphone, o custo do plano de dados pode
     37 facilmente exceder o custo do prprio dispositivo. No N Developer Preview, os usurios podem
     38  ativar a Economia de dados no dispositivo como um todo para usar menos dados, seja
     39  em roaming, perto do final do perodo de cobrana ou em pacotes de dados pr-pagos pequenos.
     40 </p>
     41 
     42 <p>
     43   Quando um usurio ativa a Economia de dados em <strong>Settings</strong> e o dispositivo est 
     44 em uma rede tarifada, o sistema bloqueia o uso de dados em segundo plano e avisa
     45  aos aplicativos para reduzir o uso de dados no primeiro plano sempre que possvel. Os usurios podem 
     46 autorizar aplicativos especficos a usar dados tarifados em segundo plano, mesmo com a Economia
     47  de dados ativada.
     48 </p>
     49 
     50 <p>
     51   O N Developer Preview estende a API {@link android.net.ConnectivityManager}
     52  para oferecer aos aplicativos uma forma de <a href="#status">recuperar as 
     53 preferncias do usurio para a Economia de dados</a> e <a href="#monitor-changes">monitorar 
     54 as mudanas de preferncias</a>. Como prtica recomendada, os aplicativos devem verificar se o
     55  usurio ativou a Economia de dados e tentar limitar o uso de dados em primeiro e
     56  segundo plano.
     57 </p>
     58 
     59 <h2 id="status">
     60   Verificao de preferncias da Economia de dados
     61 </h2>
     62 
     63 <p>
     64   No N Developer Preview, aplicativos podem usar a API {@link
     65  android.net.ConnectivityManager} para determinar quais restries
     66  de uso de dados esto sendo aplicadas. O mtodo {@code getRestrictBackgroundStatus()}
     67  retorna um dos seguintes valores:
     68 </p>
     69 
     70 <dl>
     71   <dt>
     72     {@code RESTRICT_BACKGROUND_STATUS_DISABLED}
     73   </dt>
     74 
     75   <dd>
     76     A Economia de dados est desativada.
     77   </dd>
     78 
     79   <dt>
     80     {@code RESTRICT_BACKGROUND_STATUS_ENABLED}
     81   </dt>
     82 
     83   <dd>
     84     O usurio ativou a Economia de dados para este aplicativo. Os aplicativos tentaro limitar o
     85  uso de dados em primeiro plano e gerenciar as restries ao
     86  uso de dados em segundo plano.
     87   </dd>
     88 
     89   <dt>
     90     {@code RESTRICT_BACKGROUND_STATUS_WHITELISTED}
     91   </dt>
     92 
     93   <dd>
     94     O usurio ativou a Economia de dados, mas o aplicativo est na lista de permisses. Os aplicativos
     95  ainda tentaro limitar o uso de dados em primeiro e segundo plano.
     96   </dd>
     97 </dl>
     98 
     99 <p>
    100    prtica recomendada limitar o uso de dados sempre que o dispositivo
    101  estiver conectado a uma rede tarifada, mesmo que a Economia de dados esteja desativada e o aplicativo
    102  esteja na lista de permisses. O modelo de cdigo a seguir usa {@link
    103  android.net.ConnectivityManager#isActiveNetworkMetered
    104  ConnectivityManager.isActiveNetworkMetered()} e {@code
    105  ConnectivityManager.getRestrictBackgroundStatus()} para determinar o volume mximo de dados
    106  que o aplicativo pode usar:
    107 </p>
    108 
    109 <pre>
    110 ConnectivityManager connMgr = (ConnectivityManager)
    111         getSystemService(Context.CONNECTIVITY_SERVICE);
    112 // Checks if the device is on a metered network
    113 if (connMgr.isActiveNetworkMetered()) {
    114   // Checks users Data Saver settings.
    115   switch (connMgr.getRestrictBackgroundStatus()) {
    116     case RESTRICT_BACKGROUND_STATUS_ENABLED:
    117     // Background data usage is blocked for this app. Wherever possible,
    118     // the app should also use less data in the foreground.
    119 
    120     case RESTRICT_BACKGROUND_STATUS_WHITELISTED:
    121     // The app is whitelisted. Wherever possible,
    122     // the app should use less data in the foreground and background.
    123 
    124     case RESTRICT_BACKGROUND_STATUS_DISABLED:
    125     // Data Saver is disabled. Since the device is connected to a
    126     // metered network, the app should use less data wherever possible.
    127   }
    128 } else {
    129   // The device is not on a metered network.
    130   // Use data as required to perform syncs, downloads, and updates.
    131 }
    132 </pre>
    133 
    134 <h3 id="request-whitelist">
    135   Solicitao de permisso para colocar na lista de permisses
    136 </h3>
    137 
    138 <p>
    139   Se o seu aplicativo precisa usar dados em segundo plano, ele pode solicitar permisso para
    140  entrar na lista de permisses enviando uma inteno
    141  <code>Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS</code>
    142  que contenha o URI no nome de pacote do aplicativo, por exemplo,
    143  <code>package:MY_APP_ID</code>.
    144 </p>
    145 
    146 <p>
    147   O envio da inteno e do URI abre o aplicativo <strong>Settings</strong> e
    148  exibe as configuraes de uso de dados de seu aplicativo. O usurio pode decidir ento se
    149  ativar os dados em segundo plano para o aplicativo. Antes de enviar a inteno, 
    150  prtica recomendada perguntar primeiro ao usurio se ele deseja iniciar o 
    151 aplicativo <strong>Settings</strong> com o objetivo de ativar o uso
    152  de dados em segundo plano.
    153 </p>
    154 
    155 <h2 id="monitor-changes">
    156   Monitoramento de alteraes nas preferncias da Economia de dados
    157 </h2>
    158 
    159 <p>
    160   Os aplicativos podem monitorar alteraes nas preferncias da Economia de dados criando um {@link
    161  android.content.BroadcastReceiver} para escutar {@code
    162 ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED} e registrar
    163  dinamicamente o receptor em {@link android.content.Context#registerReceiver
    164  Context.registerReceiver()}. Quando recebe esta transmisso, o aplicativo deve
    165  <a href="#status">verificar se as novas preferncias da Economia de dados afetam
    166  as permisses</a> chamando {@code
    167  ConnectivityManager.getRestrictBackgroundStatus()}.
    168 </p>
    169 
    170 <p class="note">
    171   <strong>Observao:</strong> O sistema s envia esta transmisso para aplicativos que
    172  se registram dinamicamente para receb-la em {@link
    173  android.content.Context#registerReceiver Context.registerReceiver()}. Os aplicativos
    174  que se registrarem para receber a transmisso no manifesto no a
    175  recebero.
    176 </p>
    177 
    178 <h2 id="testing">
    179   Teste com comandos do Android Debug Bridge
    180 </h2>
    181 
    182 O <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge (ADB)</a>
    183 oferece alguns comandos que podem ser usados para verificar e configurar permisses
    184 de rede:
    185 
    186 <dl>
    187   <dt>
    188     <code>$ adb shell dumpsys netpolicy</code>
    189   </dt>
    190 
    191   <dd>
    192     Gera um relatrio que inclui a configurao de restrio atual da rede de segundo plano global
    193 , os UIDs do pacote em lista de permisses e as permisses de rede
    194  de outros pacotes conhecidos.
    195   </dd>
    196 
    197   <dt>
    198     <code>$ adb shell cmd netpolicy</code>
    199   </dt>
    200 
    201   <dd>
    202     Exibe uma lista completa de comandos do Gerenciador de polticas de rede (netpolicy).
    203   </dd>
    204 
    205   <dt>
    206     <code>$ adb shell cmd netpolicy set restrict-background
    207     &lt;boolean&gt;</code>
    208   </dt>
    209 
    210   <dd>
    211     Ativa ou desativa o modo da Economia de dados ao passar <code>true</code> ou
    212  <code>false</code>, respectivamente.
    213   </dd>
    214 
    215   <dt>
    216     <code>$ adb shell cmd netpolicy add restrict-background-whitelist
    217     &lt;UID&gt;</code>
    218   </dt>
    219 
    220   <dd>
    221     Adiciona o UID do pacote especificado  lista de permisses para permitir o uso de dados de segundo plano
    222  tarifados.
    223   </dd>
    224 
    225   <dt>
    226     <code>$ adb shell cmd netpolicy remove restrict-background-whitelist
    227     &lt;UID&gt;</code>
    228   </dt>
    229 
    230   <dd>
    231     Adiciona o UID do pacote especificado  lista de permisses para bloquear o uso de dados
    232  de segundo plano tarifados enquanto a Economia de dados estiver ativada.
    233   </dd>
    234 </dl>