packagemy.work.Library;importjava.util.Timer;importjava.util.TimerTask;importjava.util.regex.Matcher;importjava.util.regex.Pattern;importandroid.app.Activity;importandroid.app.AlertDialog;importandroid.content.Context;importandroid.content.DialogInterface;importandroid.content.Intent;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;importandroid.view.Menu;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.ImageButton;importandroid.widget.ImageView;importandroid.widget.TextView;public class WsnActivty extendsActivity {/**Called when the activity is first created.*/
privateButton btnNetwork;private String strIpAddr = null;staticTextView textTips;private ClientThread clientThread = null;privateMessage MainMsg;public staticHandler mainHandler;static final int TIPS_UPDATE_UI = 3; //tips_update_ui
@Overridepublic voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initControl();
initMainHandler();
}private voidinitControl() {//TODO Auto-generated method stub
btnNetwork =(Button) findViewById(R.id.btn_network);
btnNetwork.setOnClickListener(newButtonClick());
textTips=(TextView) findViewById(R.id.Tips);
textTips.setText(R.string.init_tips);
}class ButtonClick implementsOnClickListener {
@Overridepublic voidonClick(View v) {switch(v.getId()) {case R.id.btn_network: //连接网络
showDialog(WsnActivty.this);break;
}
}
}//显示连接对话框
private voidshowDialog(Context context) {final EditText editIP = newEditText(context);
editIP.setText("192.168.0.10");
AlertDialog.Builder builder= newAlertDialog.Builder(context);//builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("请输入服务器IP地址");
builder.setView(editIP);
builder.setPositiveButton("连接", newDialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, intwhichButton) {
strIpAddr=editIP.getText().toString();boolean ret =isIPAddress(strIpAddr);if(ret) {
textTips.setText("服务器IP地址:" +strIpAddr);
}else{
strIpAddr= null;
textTips.setText("IP地址不合法,请重新设置");return;
}
clientThread= new ClientThread(strIpAddr);//建立客户端线程
clientThread.start();//mainTimer = new Timer();//定时查询所有终端信息//setTimerTask();
}
});
builder.setNeutralButton("取消", newDialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, intwhichButton) {if (clientThread != null) {
MainMsg=ClientThread.childHandler
.obtainMessage(ClientThread.RX_EXIT);
ClientThread.childHandler.sendMessage(MainMsg);
textTips.setText("与服务器断开连接");
}
}
});
builder.show();
}//判断输入IP是否合法
private booleanisIPAddress(String ipaddr) {boolean flag = false;
Pattern pattern=Pattern
.compile("\\b((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\b");
Matcher m=pattern.matcher(ipaddr);
flag=m.matches();returnflag;
}voidinitMainHandler() {
mainHandler= newHandler() {//主线程消息处理中心
public voidhandleMessage(Message msg) {switch(msg.what) {caseTIPS_UPDATE_UI:
String str= (String) msg.obj; //连接成功
textTips.setText(str);break;
}super.handleMessage(msg);
}
};
}
}