2012-10-22 7 views
19

यदि एंड्रॉइड में Wifi या 3G (या 3G+) या EDGE कोई कनेक्शन है तो मुझे एंड्रॉइड में पता लगाने की आवश्यकता है। जब कोई कनेक्शन wifi या 3G होता है तो मैं सर्वर पर फोटो भेज सकता हूं, और जब सर्वर पर उन्हें भेजने के लिए केवल EDGE कनेक्शन होता है।पता लगाएं कि कनेक्शन वाईफाई, 3 जी या एंड्रॉइड में EDGE है या नहीं?

मैंने देखा कि वाईफाई कनेक्टिविटी ConnectivityManager.TYPE_WIFI के साथ और ConnectivityManager.TYPE_MOBILE और TelephonyManager.NETWORK_TYPE_EDGE के साथ पता लगाया जा सकता है EDGE कनेक्शन। लेकिन 3 जी या 3 जी + का पता कैसे लगाया जा सकता है?

अग्रिम धन्यवाद।

+0

इस उत्तर की जांच करें। यह आपको http://stackoverflow.com/questions/2802472/detect-network-connection-type-on-android/8548926#8548926 –

उत्तर

1
public class WifiState { 

    Context context; 

    public WifiState(Context context) { 
     this.context = context; 
    } 

    public void haveNetworkConnection() { 

     boolean haveConnectedWifi = false; 
     boolean haveConnectedMobile = false; 

     ConnectivityManager cm = (ConnectivityManager) context 
       .getSystemService(context.CONNECTIVITY_SERVICE); 
     NetworkInfo[] netInfo = cm.getAllNetworkInfo(); 
     for (NetworkInfo ni : netInfo) { 
      if (ni.getTypeName().equalsIgnoreCase("WIFI")) 
       if (ni.isConnected()) 
        haveConnectedWifi = true; 
      if (ni.getTypeName().equalsIgnoreCase("MOBILE")) 
       if (ni.isConnected()) 
        haveConnectedMobile = true; 

     } 
     if (haveConnectedWifi == false && haveConnectedMobile == false) { 

      //do something to handle if wifi & mobiledata is disabled 

     } else { 
       //do something else.. 
     } 
    } 
+0

मोबाइल केस का अर्थ है कि यह 3 जी कनेक्ट है ?? प्रलेखन के अनुसार – Gabrielle

+0

; हाँ। http://developer.android.com/reference/android/net/ConnectivityManager.html#TYPE_MOBILE –

37

https://gist.github.com/emil2k/5130324

import android.content.Context; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 
import android.telephony.TelephonyManager; 

/** 
* Check device's network connectivity and speed 
* @author emil http://stackoverflow.com/users/220710/emil 
* 
*/ 
public class Connectivity 
{ 
    /** 
    * Get the network info 
    * @param context 
    * @return 
    */ 
    public static NetworkInfo getNetworkInfo(Context context){ 
     ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     return cm.getActiveNetworkInfo(); 
    } 

    /** 
    * Check if there is any connectivity 
    * @param context 
    * @return 
    */ 
    public static boolean isConnected(Context context){ 
     NetworkInfo info = Connectivity.getNetworkInfo(context); 
     return (info != null && info.isConnected()); 
    } 

    /** 
    * Check if there is any connectivity to a Wifi network 
    * @param context 
    * @return 
    */ 
    public static boolean isConnectedWifi(Context context){ 
     NetworkInfo info = Connectivity.getNetworkInfo(context); 
     return (info != null && info.isConnected() && info.getType() == ConnectivityManager.TYPE_WIFI); 
    } 

    /** 
    * Check if there is any connectivity to a mobile network 
    * @param context 
    * @return 
    */ 
    public static boolean isConnectedMobile(Context context){ 
     NetworkInfo info = Connectivity.getNetworkInfo(context); 
     return (info != null && info.isConnected() && info.getType() == ConnectivityManager.TYPE_MOBILE); 
    } 

    /** 
    * Check if there is fast connectivity 
    * @param context 
    * @return 
    */ 
    public static boolean isConnectedFast(Context context){ 
     NetworkInfo info = Connectivity.getNetworkInfo(context); 
     return (info != null && info.isConnected() && Connectivity.isConnectionFast(info.getType(),info.getSubtype())); 
    } 

    /** 
    * Check if the connection is fast 
    * @param type 
    * @param subType 
    * @return 
    */ 
    public static boolean isConnectionFast(int type, int subType){ 
     if(type==ConnectivityManager.TYPE_WIFI){ 
      return true; 
     }else if(type==ConnectivityManager.TYPE_MOBILE){ 
      switch(subType){ 
       case TelephonyManager.NETWORK_TYPE_1xRTT: 
        return false; // ~ 50-100 kbps 
       case TelephonyManager.NETWORK_TYPE_CDMA: 
        return false; // ~ 14-64 kbps 
       case TelephonyManager.NETWORK_TYPE_EDGE: 
        return false; // ~ 50-100 kbps 
       case TelephonyManager.NETWORK_TYPE_EVDO_0: 
        return true; // ~ 400-1000 kbps 
       case TelephonyManager.NETWORK_TYPE_EVDO_A: 
        return true; // ~ 600-1400 kbps 
       case TelephonyManager.NETWORK_TYPE_GPRS: 
        return false; // ~ 100 kbps 
       case TelephonyManager.NETWORK_TYPE_HSDPA: 
        return true; // ~ 2-14 Mbps 
       case TelephonyManager.NETWORK_TYPE_HSPA: 
        return true; // ~ 700-1700 kbps 
       case TelephonyManager.NETWORK_TYPE_HSUPA: 
        return true; // ~ 1-23 Mbps 
       case TelephonyManager.NETWORK_TYPE_UMTS: 
        return true; // ~ 400-7000 kbps 
      /* 
      * Above API level 7, make sure to set android:targetSdkVersion 
      * to appropriate level to use these 
      */ 
       case TelephonyManager.NETWORK_TYPE_EHRPD: // API level 11 
        return true; // ~ 1-2 Mbps 
       case TelephonyManager.NETWORK_TYPE_EVDO_B: // API level 9 
        return true; // ~ 5 Mbps 
       case TelephonyManager.NETWORK_TYPE_HSPAP: // API level 13 
        return true; // ~ 10-20 Mbps 
       case TelephonyManager.NETWORK_TYPE_IDEN: // API level 8 
        return false; // ~25 kbps 
       case TelephonyManager.NETWORK_TYPE_LTE: // API level 11 
        return true; // ~ 10+ Mbps 
       // Unknown 
       case TelephonyManager.NETWORK_TYPE_UNKNOWN: 
       default: 
        return false; 
      } 
     }else{ 
      return false; 
     } 
    } 
} 
-1

पहले ConnectivityManager के लिए एक संदर्भ डिवाइस के check the Wifi and 3G status और फिर। आपको इस सेवा का उपयोग करने के लिए ACCESS_NETWORK_STATE अनुमति की आवश्यकता होगी।

ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); 
    NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
    NetworkInfo mMobile = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 

    if (mWifi.isAvailable() == true) { 
     return "Connected to WiFi"; 
    } else if (mMobile.isAvailable() == true) { 
     return "Connected to Mobile Network"; 
    } else return "No internet Connection" 
संबंधित मुद्दे