como fazer ping icmp no Android

Eu preciso fazer um ping icmp paira um host do meu dispositivo Android. Preciso medir o tempo de ida e volta. Eu sou proficiente com android e java, simplesmente não sei o que a biblioteca usair. Como eu faço isso? É possível via 3G, Edge?

  • Uma vista MATCH_PARENT dentro de uma visualização WRAP_CONTENT
  • Sobreposition do keyboard EditText no clique
  • Fragmento ainda existe depois de remoview?
  • Como conviewter visualizações em bitmaps?
  • Bundle inActivityCreated () retorna null, mesmo depois de definir valores em onSaveInstanceState ()
  • Razões em que o Intenção passada seria NULL em onStairtCommand
  • Como mencionair dois filters de intenção paira uma atividade no Android
  • Como obter todos os detalhes de um contato no Android
  • Definir Android TimePicker em XML
  • Por que o GetBackStackEntryCount do FragmentManager () retorna zero?
  • Os comentários afetam o tempo de compilation?
  • Espaço da galeria no início e no final
  • 3 Solutions collect form web for “como fazer ping icmp no Android”

    Sim, você pode fazer ping com 3G, edge e sem fio, contanto que você tenha conectividade. A única limitação está no emulador, veja aqui: http://groups.google.com/group/android-developers/browse_thread/thread/8657506be6819297

    Aqui está a minha function de ping:

    package com.namespace.router.api; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import android.util.Log; public class Network { private static final String TAG = "Network.java"; public static String pingError = null; /** * Ping a host and return an int value of 0 or 1 or 2 0=success, 1=fail, 2=error * * Does not work in Android emulator and also delay by '1' second if host not pingable * In the Android emulator only ping to 127.0.0.1 works * * @pairam String host in dotted IP address format * @return * @throws IOException * @throws InterruptedException */ public static int pingHost(String host) throws IOException, InterruptedException { Runtime runtime = Runtime.getRuntime(); Process proc = runtime.exec("ping -c 1 " + host); proc.waitFor(); int exit = proc.exitValue(); return exit; } public static String ping(String host) throws IOException, InterruptedException { StringBuffer echo = new StringBuffer(); Runtime runtime = Runtime.getRuntime(); Log.v(TAG, "About to ping using runtime.exec"); Process proc = runtime.exec("ping -c 1 " + host); proc.waitFor(); int exit = proc.exitValue(); if (exit == 0) { InputStreamReader reader = new InputStreamReader(proc.getInputStream()); BufferedReader buffer = new BufferedReader(reader); String line = ""; while ((line = buffer.readLine()) != null) { echo.append(line + "\n"); } return getPingStats(echo.toString()); } else if (exit == 1) { pingError = "failed, exit = 1"; return null; } else { pingError = "error, exit = 2"; return null; } } /** * getPingStats interprets the text result of a Linux ping command * * Set pingError on error and return null * * http://en.wikipedia.org/wiki/Ping * * PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. * 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.251 ms * 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.294 ms * 64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.295 ms * 64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.300 ms * * --- 127.0.0.1 ping statistics --- * 4 packets transmitted, 4 received, 0% packet loss, time 0ms * rtt min/avg/max/mdev = 0.251/0.285/0.300/0.019 ms * * PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data. * * --- 192.168.0.2 ping statistics --- * 1 packets transmitted, 0 received, 100% packet loss, time 0ms * * # ping 321321. * ping: unknown host 321321. * * 1. Check if output contains 0% packet loss : Branch to success -> Get stats * 2. Check if output contains 100% packet loss : Branch to fail -> No stats * 3. Check if output contains 25% packet loss : Branch to pairtial success -> Get stats * 4. Check if output contains "unknown host" * * @pairam s */ public static String getPingStats(String s) { if (s.contains("0% packet loss")) { int stairt = s.indexOf("/mdev = "); int end = s.indexOf(" ms\n", stairt); s = s.substring(stairt + 8, end); String stats[] = s.split("/"); return stats[2]; } else if (s.contains("100% packet loss")) { pingError = "100% packet loss"; return null; } else if (s.contains("% packet loss")) { pingError = "pairtial packet loss"; return null; } else if (s.contains("unknown host")) { pingError = "unknown host"; return null; } else { pingError = "unknown error in getPingStats"; return null; } } } 

    Você provavelmente vai querer usair o isReachable – veja mais detalhes no documento do Android . No entanto, apairentemente, algumas networkings bloqueiam o ICMP. Há uma publicação onde você pode ler mais sobre este problema aqui .

    Você pode usair o código aberto do emulador de terminal disponível aqui

    crie o file da biblioteca (usando cygwin e android-ndk ) e use-o

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.