package activemq.xmg.com.activemq_mqtt.activity; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import org.eclipse.paho.android.service.MqttAndroidClient; import org.eclipse.paho.client.mqttv3.MqttConnectOptions; import org.eclipse.paho.client.mqttv3.MqttException; import activemq.xmg.com.activemq_mqtt.R; import activemq.xmg.com.activemq_mqtt.callback.ConnectCallBackHandler; import activemq.xmg.com.activemq_mqtt.callback.MqttCallbackHandler; import butterknife.Bind; import butterknife.ButterKnife; import static android.R.attr.port; public class MainActivity extends AppCompatActivity { @Bind(R.id.ed_client_id) EditText edClientId; @Bind(R.id.ed_server) EditText edServer; @Bind(R.id.ed_port) EditText edPort; @Bind(R.id.btn_connect) Button btnConnect; private String clientID; private String serverIP; private String port; private static MqttAndroidClient client; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); setTitle("即时通讯"); btnConnect.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Log.d("MainActivity","MainActivity/btnConnect"); //获取用户id clientID = edClientId.getText().toString().trim(); //获取ip地址 serverIP = edServer.getText().toString().trim(); //获取端口号 port = edPort.getText().toString().trim(); startConnect(clientID,serverIP,port); } }); } private void startConnect(String clientID, String serverIP, String port) { //服务器地址 String uri ="tcp://"; uri=uri+serverIP+":"+port; Log.d("MainActivity",uri+" "+clientID); /** * 连接的选项 */ MqttConnectOptions conOpt = new MqttConnectOptions(); /**设计连接超时时间*/ conOpt.setConnectionTimeout(3000); /**设计心跳间隔时间300秒*/ conOpt.setKeepAliveInterval(300); /** * 创建连接对象 */ client = new MqttAndroidClient(this,uri, clientID); /** * 连接后设计一个回调 */ client.setCallback(new MqttCallbackHandler(this, clientID)); /** * 开始连接服务器,参数:ConnectionOptions, IMqttActionListener */ try { client.connect(conOpt, null, new ConnectCallBackHandler(this)); } catch (MqttException e) { e.printStackTrace(); } } /** * 获取MqttAndroidClient实例 * @return */ public static MqttAndroidClient getMqttAndroidClientInstace(){ if(client!=null) return client; return null; } @Override protected void onDestroy() { super.onDestroy(); if(client!=null) try { client.disconnect(); } catch (MqttException e) { e.printStackTrace(); } } }