package com.gd.windtrend.frontpos.service;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import com.gd.windtrend.frontpos.bean.PingEvent;
import org.greenrobot.eventbus.EventBus;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Timer;
import java.util.TimerTask;
public class PingService extends Service {
private Timer mTimer;
private TimerTask mTimerTask;
@Override
public void onCreate() {
super.onCreate();
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
final String ip = intent.getStringExtra("IP");
mTimerTask = new TimerTask() {
@Override
public void run() {
ping(ip);
}
};
mTimer = new Timer();
mTimer.schedule(mTimerTask,100,1000);
return super.onStartCommand(intent, flags, startId);
}
private void ping(String ip){
int index = 0;
try {
String delay = "";
Process p = null;
p = Runtime.getRuntime().exec("/system/bin/ping -c 4 "+ ip);//ping 4次
BufferedReader buf =new BufferedReader(new InputStreamReader(p.getInputStream()));
String str = null;
while((str = buf.readLine())!= null){
++index;
if(str.contains("avg")){
int i = str.indexOf("/",20);
int j = str.indexOf(".", i);
delay = str.substring(i+1, j);
EventBus.getDefault().post(new PingEvent(delay,true));
}
}
}catch (Exception e){
}
//ping 4 次正常可以 readLine 8条数据
if (index < 8){
EventBus.getDefault().post(new PingEvent("",false));
}
}
@Override
public void onDestroy() {
super.onDestroy();
if (mTimer != null && mTimerTask != null){
mTimerTask.cancel();
mTimer.cancel();
}
}
}
网友评论