自作Androidアプリからpingを実行する
自作Android アプリからネットワークの疎通確認がしたくて悩んだ件についてまとめてみる。
java.net.InetAddress のisReachable() メソッドを使えば、疎通確認が出来そうであった。
しかしながら、実際このメソッドを使用し疎通確認を行ってみるも、上手く行かない。
具体的には、ネットワークに明らかに接続出来ているのにfalse を返してくれたり・・・。
http://stackoverflow.com/questions/2935325/android-debugging-inetaddress-isreachable
ICMP による疎通確認はrooted な端末じゃなきゃ実行出来ず、ポート7 を使ってみるも上手く行っていないのだろうか。
ともかく方向転換する事に。シンプルに、Android 端末の持つping コマンドを使用する。
/** * adb shell で実行可能なping コマンドを実行することでネットワークの疎通確認を行います * * @return 接続可能ならtrue, 不可能ならfalse */ public static boolean ping(){ Runtime runtime = Runtime.getRuntime(); Process proc = null; try{ proc = runtime.exec("ping -c 5 www.google.com"); proc.waitFor(); }catch(Exception e){} int exitVal = proc.exitValue(); if(exitVal == 0)return true; else return false; }
$ping -c 5 www.google.com を実行し、その結果で接続状況を確認している。