5
5
import android .content .res .AssetManager ;
6
6
import android .os .Bundle ;
7
7
import android .os .Environment ;
8
+ import android .text .Editable ;
9
+ import android .text .TextUtils ;
8
10
import android .util .Log ;
9
11
import android .view .LayoutInflater ;
10
12
import android .view .View ;
54
56
import java .util .Map ;
55
57
import java .util .UUID ;
56
58
import java .util .concurrent .atomic .AtomicInteger ;
59
+ import java .util .regex .Pattern ;
57
60
58
61
import javax .net .SocketFactory ;
59
62
@@ -75,6 +78,8 @@ public class IoTMqttFragment extends Fragment {
75
78
76
79
private Button mCloseConnectBtn ;
77
80
81
+ private EditText mIPEdit ;
82
+
78
83
private Button mSubScribeBtn ;
79
84
80
85
private Button mUnSubscribeBtn ;
@@ -165,9 +170,14 @@ public class IoTMqttFragment extends Fragment {
165
170
"Zcrqjyw+6baShrOfotoFDlFE/wqf6FjhgeRkOb5QlA==\n " +
166
171
"-----END CERTIFICATE-----\n " ;
167
172
// ssh 要访问的IP
168
- private String sshHost = "192.168.1.107" ;
169
- // ssh 端口号
170
- private int sshPort = 8022 ;
173
+ private String sshHost = "" ;
174
+ // ssh 端口号
175
+ private int sshPort = 0 ;
176
+
177
+ String pattern = "^(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\ ."
178
+ + "(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\ ."
179
+ + "(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\ ."
180
+ + "(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])$" ;
171
181
172
182
private volatile boolean mIsConnected ;
173
183
@@ -264,27 +274,47 @@ public void onNothingSelected(AdapterView<?> parent) {
264
274
mConnectBtn .setOnClickListener (new View .OnClickListener () {
265
275
@ Override
266
276
public void onClick (View view ) {
267
- if (!mIsConnected ) {
268
- SharedPreferences settings = mParent .getSharedPreferences ("config" , Context .MODE_PRIVATE );
269
- mBrokerURL = settings .getString (BROKER_URL , mBrokerURL );
270
- mProductID = settings .getString (PRODUCT_ID , mProductID );
271
- mDevName = settings .getString (DEVICE_NAME , mDevName );
272
- mDevPSK = settings .getString (DEVICE_PSK , mDevPSK );
273
- mSubProductID = settings .getString (SUB_PRODUCID , mSubProductID );
274
- mSubDevName = settings .getString (SUB_DEVNAME , mSubDevName );
275
- mSubDevPsk = settings .getString (SUB_DEVICE_PSK , mSubDevPsk );
276
-
277
- mTestTopic = settings .getString (TEST_TOPIC , mTestTopic );
278
-
279
- mDevCert = settings .getString (DEVICE_CERT , mDevCert );
280
- mDevPriv = settings .getString (DEVICE_PRIV , mDevPriv );
281
-
282
- mMQTTSample = new MQTTSample (mParent , new SelfMqttActionCallBack (), mBrokerURL , mProductID , mDevName , mDevPSK ,
283
- mDevCert , mDevPriv , mSubProductID , mSubDevName , mTestTopic , null , null , true , new SelfMqttLogCallBack (), sshHost , sshPort );
284
- mMQTTSample .setSubDevPsk (mSubDevPsk );
285
- mMQTTSample .connect ();
277
+ Editable ip = mIPEdit .getText ();
278
+ String [] ipInfo ;
279
+ if (TextUtils .isEmpty (ip )) {
280
+ Toast .makeText (requireContext (), "请输入ip" , Toast .LENGTH_SHORT ).show ();
281
+ } else if ((ipInfo = ip .toString ().split (":" )).length != 2 ) {
282
+ Toast .makeText (requireContext (), "ip与端口输入格式错误" , Toast .LENGTH_SHORT ).show ();
286
283
} else {
287
- mParent .printLogInfo (TAG , "Mqtt has been connected, do not connect it again." , mLogInfoText , TXLog .LEVEL_INFO );
284
+ if (!Pattern .compile (pattern ).matcher (ipInfo [0 ]).matches ()) {
285
+ Toast .makeText (requireContext (), "ip地址输入格式错误" , Toast .LENGTH_SHORT ).show ();
286
+ return ;
287
+ } else {
288
+ sshHost = ipInfo [0 ];
289
+ }
290
+ if (!Pattern .compile ("^\\ d{4}$" ).matcher (ipInfo [1 ]).matches ()) {
291
+ Toast .makeText (requireContext (), "端口号输入格式错误" , Toast .LENGTH_SHORT ).show ();
292
+ return ;
293
+ } else {
294
+ sshPort = Integer .parseInt (ipInfo [1 ]);
295
+ }
296
+ if (!mIsConnected ) {
297
+ SharedPreferences settings = mParent .getSharedPreferences ("config" , Context .MODE_PRIVATE );
298
+ mBrokerURL = settings .getString (BROKER_URL , mBrokerURL );
299
+ mProductID = settings .getString (PRODUCT_ID , mProductID );
300
+ mDevName = settings .getString (DEVICE_NAME , mDevName );
301
+ mDevPSK = settings .getString (DEVICE_PSK , mDevPSK );
302
+ mSubProductID = settings .getString (SUB_PRODUCID , mSubProductID );
303
+ mSubDevName = settings .getString (SUB_DEVNAME , mSubDevName );
304
+ mSubDevPsk = settings .getString (SUB_DEVICE_PSK , mSubDevPsk );
305
+
306
+ mTestTopic = settings .getString (TEST_TOPIC , mTestTopic );
307
+
308
+ mDevCert = settings .getString (DEVICE_CERT , mDevCert );
309
+ mDevPriv = settings .getString (DEVICE_PRIV , mDevPriv );
310
+
311
+ mMQTTSample = new MQTTSample (mParent , new SelfMqttActionCallBack (), mBrokerURL , mProductID , mDevName , mDevPSK ,
312
+ mDevCert , mDevPriv , mSubProductID , mSubDevName , mTestTopic , null , null , true , new SelfMqttLogCallBack (), sshHost , sshPort );
313
+ mMQTTSample .setSubDevPsk (mSubDevPsk );
314
+ mMQTTSample .connect ();
315
+ } else {
316
+ mParent .printLogInfo (TAG , "Mqtt has been connected, do not connect it again." , mLogInfoText , TXLog .LEVEL_INFO );
317
+ }
288
318
}
289
319
}
290
320
});
@@ -589,6 +619,7 @@ public void onClick(View view) {
589
619
public void initView (View view ) {
590
620
mConnectBtn = view .findViewById (R .id .connect );
591
621
mCloseConnectBtn = view .findViewById (R .id .close_connect );
622
+ mIPEdit = view .findViewById (R .id .ed_ip );
592
623
mSubScribeBtn = view .findViewById (R .id .subscribe_topic );
593
624
mUnSubscribeBtn = view .findViewById (R .id .unSubscribe_topic );
594
625
mPublishBtn = view .findViewById (R .id .publish_topic );
0 commit comments