心跳帧

public class HeartBeatService extends Service implements Runnable {
	private Thread mThread;
	private HeartBeatMsg mHeartBeatMsg;
	private DatagramSocket mDatagramSocket;
	private DatagramPacket mDatagramPacket;
	private String ServerIp;
	private boolean isTip = true;
	private boolean flag;
	/**
	 * 本地端口
	 */
	private static int LOCALPORT = 57000;
	/**
	 * 服务器端口
	 */
	private static int SERVERPORT = 37000;

	@Override
	public IBinder onBind(Intent intent) {
		return null;
	}

	@Override
	public void onStart(Intent intent, int startId) {
		super.onStart(intent, startId);
		flag = true;
		ServerIp = intent.getExtras().getString("serverIp");
		mThread = new Thread(this);
		mHeartBeatMsg = new HeartBeatMsg();
		mHeartBeatMsg.setMonitorId(intent.getExtras().getInt("monitorId"));
		try {
			mDatagramSocket = new DatagramSocket(LOCALPORT);
			mDatagramPacket = new DatagramPacket(mHeartBeatMsg.getByteData(),
					13, InetAddress.getByName(ServerIp), SERVERPORT);
		} catch (Exception e) {
			e.printStackTrace();
		}
		mThread.start();
	}

	@Override
	public void onDestroy() {
		flag = false;
		super.onDestroy();
	}

	@Override
	public void run() {
		int i = 0;
		while (flag) {
			ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
			List<RunningTaskInfo> tasks = am.getRunningTasks(3);
			if ("cn.csv.mobileclient".equals(tasks.get(0).topActivity
					.getPackageName())) {
				isTip = true;
			} else {
				isTip = false;
			}

			if (isTip) {
				try {
					mDatagramSocket.send(mDatagramPacket);
					LogUtil.d(this, "第" + i++ + "次发送心跳");
					SystemClock.sleep(1000 * 10);
				} catch (IOException e) {
					e.printStackTrace();
				}
			} else {
				stopService(new Intent(getApplicationContext(),
						HeartBeatService.class));
			}
		}
	}
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值