2016-03-21 23 views
-1

Aşağıdaki kod Ethernet bağlantısını kontrol etmek için kullanılabilir:Bir Android cihazının bir yönlendiriciye bağlı olup olmadığını tespit etmek mümkün mü?

  1. Bu yönlendirici bağlı:

    o bağlıysa
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    if(cm.getNetworkInfo(ConnectivityManager.TYPE_ETHERNET).getState() == NetworkInfo.State.CONNECTED) 
    { 
    ... 
    } 
    

    , en az iki olasılık vardır.

  2. Başka bir aygıta bağlı olan

nasıl birbirinden ayırt edilebilir (diğer bir deyişle bağlantı peer to peer)?

+0

da gösterildiği gibi sadece p2p ağ için diğer cihazlara bağlı olan bir yönlendiriciye bağlı olabilir WiFi burada http://technofaq.org/posts/2014/12/geek-speak-configuring-a-router-for-p2p-networking/. Bunu neden belirlemek istediğinizi bize daha kolay cevap verebilmenizi sağlayabilir. Ayrıca bir çevrimiçi sunucuya ping yapmayı denerseniz, bir yönlendiricinin sizi bağlayacağını düşünüyorum, ancak bir p2p bağlantısı başarısız olacaktır. Düşüncem doğru mu? Ayrıca yönlendiricinin veya cihazların MAC adresini biliyor musunuz? – Shreyans

+0

@Shreyans Cihazın iki senaryo vardır: bir bilgi işlem cihazına (P2P) bağlanması ve bir yönlendiriciye (örn. AP) bağlanması. Uygulama bu iki senaryo için farklı görevler gerçekleştirir. Kullanıcının senaryoyu belirlemesini istemek yerine, otomatik olarak algılamayı tercih ederiz. – Hong

+0

Tamam, P2P davasında çevrimiçi API çağrıları her zaman doğru olmaz mı? – Shreyans

cevap

-1

aşağıdaki gibi kod:

public static int getNetWorkType(Context context) { 

    ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo networkInfo = manager.getActiveNetworkInfo(); 

    if (networkInfo != null && networkInfo.isConnected()) { 
     String type = networkInfo.getTypeName(); 

     if (type.equalsIgnoreCase("WIFI")) { 
      mNetWorkType = NETWORKTYPE_WIFI; 
     } else if (type.equalsIgnoreCase("MOBILE")) { 
      String proxyHost = android.net.Proxy.getDefaultHost(); 

      mNetWorkType = TextUtils.isEmpty(proxyHost) 
        ? (isFastMobileNetwork(context) ? NETWORKTYPE_3G : NETWORKTYPE_2G) 
        : NETWORKTYPE_WAP; 
     } 
    } else { 
     mNetWorkType = NETWORKTYPE_INVALID; 
    } 

    return mNetWorkType; 
} 

not: hotpoint da

+1

Tip MOBILE, WIFI P2P değil, cihazın hücresel radyo içindir. –

+0

OP, WIFI ve mobil bağlantı türleri arasında değil, WIN ve – Shreyans

+0

@Shreyans No'yu gösterdiğiniz gibi birbirinden ayırmak istiyor, Wi-Fi bağlantısı değil, iki tip Ethernet bağlantısını (Ethernet kablosuyla) ayırt etmek istiyorum. Yine de, cevabın sorumu yanıtlamadığına işaret ettiğiniz için teşekkür ederim. – Hong

İlgili konular