2010-05-07 9 views
9

Android Hizmeti'ni ping araması yapmak için nasıl kullanabilirim? Düğme tıklamasıyla bir web sayfasını açmam gerekiyor, ancak arka planda istatistik koleksiyonu için başka bir URL'ye gidin.Android Service - Ping URL'si

Kod parçacıkları büyük ölçüde yararlı olacaktır

Teşekkür Chris

cevap

16

sadece, bu kodu kullanabilirsiniz bir url ping istiyorsanız düşünüyorum: İsterseniz

try { 
    URL url = new URL("http://"+params[0]); 

    HttpURLConnection urlc = (HttpURLConnection) url.openConnection(); 
    urlc.setRequestProperty("User-Agent", "Android Application:"+Z.APP_VERSION); 
    urlc.setRequestProperty("Connection", "close"); 
    urlc.setConnectTimeout(1000 * 30); // mTimeout is in seconds 
    urlc.connect(); 

    if (urlc.getResponseCode() == 200) { 
     Main.Log("getResponseCode == 200"); 
     return new Boolean(true); 
    } 
} catch (MalformedURLException e1) { 
    e1.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

Ve ping eşdeğerine sahip olmak için, aramadan önce ve sonra bir System.currentTimeMillis() koyabilirsiniz ve farkı hesaplayabilirsiniz.

kod parçacığını yardımcı

umutlar hep böyle başarısız Android 4 cihazlar hariç benim için iyi çalışıyor here

+0

bulundu. Herhangi bir fikir? – dee

+9

Aramayı ana iş parçanızdan kaldırmanız gerekiyor. Android 4, ANR sorunlarını önlemek için ana iş parçasında ağ çağrıları zorlar. –

+2

Bu, tam 3 yönlü bir el sıkışma ile bir TCP bağlantısı kuracaktır. Yani zaman ping gibi bir şey değildir ('ICMP-echo -> ICMP-reply') –