Home | History | Annotate | Download | only in features
      1 page.title=Ahorro de datos
      2 metaDescription=User-enabled data usage optimization.
      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       En este documento
     11     </h2>
     12 
     13     <ol>
     14       <li>
     15         <a href="#status">Verificacin de las preferencias de ahorro de datos</a>
     16         <ol>
     17           <li>
     18             <a href="#request-whitelist">Solicitud de permisos de lista blanca</a>
     19           </li>
     20         </ol>
     21       </li>
     22 
     23       <li>
     24         <a href="#monitor-changes">Control de cambios en las preferencias
     25  de ahorro de datos</a>
     26       </li>
     27 
     28       <li>
     29         <a href="#testing">Pruebas con comandos de Android Debug Bridge</a>
     30       </li>
     31     </ol>
     32   </div>
     33 </div>
     34 
     35 <p>
     36   Durante la vida til de un smartphone, el costo de un plan de datos mviles puede
     37  superar fcilmente el costo del propio dispositivo. En la versin N Developer Preview, los usuarios pueden
     38  habilitar el ahorro de datos en todo el dispositivo a fin de reducir el uso de datos, ya sea con
     39  servicio de itinerancia, cerca del final del ciclo de facturacin o con un pequeo paquete de datos prepago.
     40 </p>
     41 
     42 <p>
     43   Cuando un usuario habilita el ahorro de datos en <strong>Settings</strong> y el dispositivo est conectado
     44  a una red de uso medido, el sistema bloquea el uso de datos en segundo plano y enva seales
     45  a las aplicaciones para que utilicen menos datos en primer plano siempre que sea posible. Los usuarios pueden
     46  incluir aplicaciones especficas en la lista blanca para permitir el uso de datos medidos en segundo plano, incluso cuando est activado el ahorro
     47  de datos.
     48 </p>
     49 
     50 <p>
     51   La N Developer Preview extiende la API {@link android.net.ConnectivityManager}
     52  para que las aplicaciones puedan <a href="#status">recuperar las preferencias de
     53  ahorro de datos del usuario</a> y <a href="#monitor-changes">controlar
     54  los cambios en las preferencias</a>. Se considera una buena prctica que las aplicaciones verifiquen si el
     55  usuario habilit el ahorro de datos y se esfuercen por reducir el uso de datos en primer
     56  y segundo plano.
     57 </p>
     58 
     59 <h2 id="status">
     60   Verificacin de las preferencias de ahorro de datos
     61 </h2>
     62 
     63 <p>
     64   En la N Developer Preview, las aplicaciones pueden utilizar la API {@link
     65   android.net.ConnectivityManager} para determinar qu restricciones
     66  de uso de datos se aplican. Mediante el mtodo {@code getRestrictBackgroundStatus()}
     67 , se devuelve uno de los siguientes valores:
     68 </p>
     69 
     70 <dl>
     71   <dt>
     72     {@code RESTRICT_BACKGROUND_STATUS_DISABLED}
     73   </dt>
     74 
     75   <dd>
     76     El ahorro de datos est inhabilitado.
     77   </dd>
     78 
     79   <dt>
     80     {@code RESTRICT_BACKGROUND_STATUS_ENABLED}
     81   </dt>
     82 
     83   <dd>
     84     El usuario habilit el ahorro de datos para esta aplicacin. Las aplicaciones deben esforzarse por reducir
     85  el uso de datos en primer plano y manejar correctamente las restricciones para
     86  el uso de datos en segundo plano.
     87   </dd>
     88 
     89   <dt>
     90     {@code RESTRICT_BACKGROUND_STATUS_WHITELISTED}
     91   </dt>
     92 
     93   <dd>
     94     El usuario habilit el ahorro de datos, pero la aplicacin se encuentra en la lista blanca. Las aplicaciones an deben
     95  esforzarse por reducir el uso de datos en primer y segundo plano.
     96   </dd>
     97 </dl>
     98 
     99 <p>
    100   Se considera una buena prctica limitar el uso de datos siempre que el dispositivo est
    101  conectado a una red de uso medido, incluso si el ahorro de datos est deshabilitado o la aplicacin
    102  se encuentra en la lista blanca. El siguiente cdigo de muestra utiliza {@link
    103   android.net.ConnectivityManager#isActiveNetworkMetered
    104   ConnectivityManager.isActiveNetworkMetered()} y {@code
    105   ConnectivityManager.getRestrictBackgroundStatus()} para determinar la cantidad de datos
    106  que la aplicacin debe utilizar:
    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   Solicitud de permisos de lista blanca
    136 </h3>
    137 
    138 <p>
    139   Si la aplicacin necesita utilizar datos en segundo plano, esta puede solicitar permisos de
    140  lista blanca mediante el envo de una intent
    141  <code>Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS</code>
    142  que contenga un URI del nombre de paquete de la aplicacin, como por ejemplo,
    143  <code>package:MY_APP_ID</code>.
    144 </p>
    145 
    146 <p>
    147   Mediante el envo de la intent y el URI, se inicia la aplicacin <strong>Settings</strong> y
    148  se muestra la configuracin de uso de datos para la aplicacin. El usuario luego puede decidir si
    149  habilita los datos en segundo plano para la aplicacin. Antes de enviar esta intent, resulta
    150  buena prctica consultarle primero al usuario acerca de si desea iniciar la aplicacin
    151  <strong>Settings</strong> con el objetivo de habilitar el uso de datos
    152  en segundo plano.
    153 </p>
    154 
    155 <h2 id="monitor-changes">
    156   Control de cambios en las preferencias de ahorro de datos
    157 </h2>
    158 
    159 <p>
    160   Las aplicaciones pueden controlar los cambios en las preferencias de ahorro de datos mediante la creacin de un {@link
    161   android.content.BroadcastReceiver} para escuchar {@code
    162   ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED} y mediante un registro
    163  dinmico del receptor con {@link android.content.Context#registerReceiver
    164   Context.registerReceiver()}. Cuando una aplicacin recibe esta transmisin, debe
    165  <a href="#status">verificar si las nuevas preferencias de ahorro de datos afectan los
    166  permisos; para ello,</a> la aplicacin debe llamar a {@code
    167   ConnectivityManager.getRestrictBackgroundStatus()}.
    168 </p>
    169 
    170 <p class="note">
    171   <strong>Nota:</strong> El sistema nicamente enva esta transmisin a las aplicaciones que
    172  se registran dinmicamente para recibirla con {@link
    173   android.content.Context#registerReceiver Context.registerReceiver()}. Las aplicaciones
    174  que en su manifiesto registran que la reciben no la
    175  recibirn.
    176 </p>
    177 
    178 <h2 id="testing">
    179   Pruebas con comandos de Android Debug Bridge
    180 </h2>
    181 
    182 <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge (ADB)</a>
    183 ofrece algunos comandos que puedes utilizar para verificar y configurar los permisos
    184 de red:
    185 
    186 <dl>
    187   <dt>
    188     <code>$ adb shell dumpsys netpolicy</code>
    189   </dt>
    190 
    191   <dd>
    192     Se genera un informe en el que se incluyen la configuracin global actual de restricciones de red
    193  en segundo plano, los UID de paquetes que se encuentran actualmente en una lista blanca y los permisos
    194  de red de otros paquetes conocidos.
    195   </dd>
    196 
    197   <dt>
    198     <code>$ adb shell cmd netpolicy</code>
    199   </dt>
    200 
    201   <dd>
    202     Se muestra una lista completa de los comandos del administrador de polticas de red (polticas de red).
    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     Se habilita o deshabilita el modo de ahorro de datos cuando se asignan los valores <code>true</code> o
    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     Se agrega el UID del paquete especfico a la lista blanca para permitir el uso de datos
    222  medidos en segundo plano.
    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     Se quita el UID del paquete especfico de la lista blanca para bloquear el uso de datos
    232  medidos en segundo plano mientras el ahorro de datos est habilitado.
    233   </dd>
    234 </dl>