Ho utilizzato una piccola installazione per controllare la larghezza di banda per determinare come ridimensionare le cose, come le immagini.
Sotto l'attività, in AndroidManifest:
<intent-filter>
...
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
Nell'attività in cui vengono eseguite le verifiche:
boolean network;
int bandwidth;
@Override
public void onCreate(Bundle savedInstanceState) {
...
network = isDataConnected();
bandwidth = isHighBandwidth();
registerReceiver(new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
network = isDataConnected();
bandwidth = isHighBandwidth();
}
}, new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE"));
...
}
...
private boolean isDataConnected() {
try {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo().isConnectedOrConnecting();
} catch (Exception e) {
return false;
}
}
private int isHighBandwidth() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();
if (info.getType() == ConnectivityManager.TYPE_WIFI) {
WifiManager wm = (WifiManager) getSystemService(Context.WIFI_SERVICE);
return wm.getConnectionInfo().getLinkSpeed();
} else if (info.getType() == ConnectivityManager.TYPE_MOBILE) {
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
return tm.getNetworkType();
}
return 0;
}
Un esempio d'uso sarebbe allora:
if (network) {
if (bandwidth > 16) {
// Code for large items
} else if (bandwidth <= 16 && bandwidth > 8) {
// Code for medium items
} else {
//Code for small items
}
} else {
//Code for disconnected
}
E ' non è il più bello, ma permette abbastanza flessibilità da poter cambiare il limite di larghezza di banda per gli oggetti de in attesa di quello che sono e dei miei requisiti per loro.
hey Grazie ha funzionato come previsto – Sam97305421562
come dice @noillusioin, activeNetInfo può essere nullo. Questa è un'indicazione che la connessione di rete JUST DISCONNECTED se si sa (stato di salvataggio) che si era connessi in precedenza. – larham1
È inoltre necessario verificare NetworkInfo.isConnected – shuriquen