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 <boolean></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 <UID></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 <UID></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>