一、功能:
1.Android WIFI连接与断开,保存连接IP及端口。
2.WIFI控制3个继电器
3.16进制发送指令,可以单条和多条发送,用逗号隔开。
4.16进制接收
如需特别功能可以找我定制(程序源码,定制专家 手机:18910620895 旺旺:chenhao0568 QQ:345139427)。
二、源码如下:
登陆Login.java
package com.example.eeeee;import java.io.InputStream;import java.io.OutputStream;import java.net.InetAddress;import java.net.Socket;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.annotation.SuppressLint;import android.app.Activity;import android.view.View;import android.widget.Button;import android.widget.CheckBox;import android.widget.EditText;import android.widget.Toast;import android.content.Intent;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;@SuppressLint("NewApi")public class Login<E, K, V> extends Activity { public static Socket mSocket; public static InputStream ips; public static OutputStream ops;// private final String DEBUG_TAG = "mySocketAct"; private String ip; private String port; //private ImageButton but7=null; private EditText ServerIp = null; private EditText ServerPort = null; private Button btn_login = null; private CheckBox remember; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.login); //“登陆”页面------------------------------------------------------------------------------------------- this.ServerIp = (EditText)super.findViewById(R.id.et_ip); this.ServerPort = (EditText)super.findViewById(R.id.et_port); btn_login = (Button)this.findViewById(R.id.btn_login); remember = (CheckBox)this.findViewById(R.id.cb_remember); loadIpPort(); ////载入IP地址及端口 btn_login.setOnClickListener(new View.OnClickListener() { //按“登陆”按钮后的事件 @Override public void onClick(View arg0) { // TODO Auto-generated method stub //容错判断 ip = ServerIp.getText().toString().trim(); port = ServerPort.getText().toString().trim(); ServerIp.requestFocus(); if(ip==null|ip.trim().equals("")) ServerIp.setError("请输入IP地址!"); if(port==null|port.trim().equals("")) ServerPort.setError("请输入端口号!"); else { connect(); } return; } }); } public void saveIpPort() //保存IP地址及端口 { SharedPreferences uiState = getSharedPreferences("RS485 Controller", MODE_PRIVATE); Editor et=uiState.edit(); et.putString("ip",ServerIp.getText().toString()); et.putString("port",ServerPort.getText().toString()); et.commit(); } public void loadIpPort() //载入IP地址及端口 { SharedPreferences uiState = getSharedPreferences("RS485 Controller", MODE_PRIVATE); ServerIp.setText(uiState.getString("ip","192.168.1.180" )); ServerPort.setText(uiState.getString("port", "8899")); } public void connect() { Toast.makeText(Login.this, "连接中……", Toast.LENGTH_SHORT).show(); new Thread(new Runnable() { @Override public void run() { try { mSocket = new Socket(InetAddress.getByName(ip), Integer.parseInt(port)); // mSocket =new Socket("192.168.1.180",8899); ops = mSocket.getOutputStream(); ips =mSocket.getInputStream(); } catch (Exception e) { e.printStackTrace(); } finally { } handler.sendMessage(handler.obtainMessage()); } }).start(); } // 消息处理队列 private Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { if (mSocket == null) { Toast.makeText(Login.this, "连接失败,请重新登陆!", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(Login.this, "连接成功!", Toast.LENGTH_SHORT).show(); if (remember.isChecked()) { saveIpPort();} //保存IP地址及端口 Intent intent = new Intent(); intent.setClass(Login.this,Relay.class); startActivity(intent); //进入Login页面 // finish(); } return false; } } );}
先上图: