From e49b03fb994b99812604b60546b95ed70b9b71fb Mon Sep 17 00:00:00 2001 From: neilyhe <228429803@qq.com> Date: Wed, 23 Oct 2024 16:10:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E7=A1=AC=E7=BC=96=E7=A0=81ip?= =?UTF-8?q?=E5=9C=B0=E5=9D=80=E5=92=8C=E7=AB=AF=E5=8F=A3=E5=8F=B7=EF=BC=8C?= =?UTF-8?q?=E7=94=B1=E6=89=8B=E5=8A=A8=E8=BE=93=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/android/app/IoTMqttFragment.java | 77 ++-- .../src/main/res/layout/fragment_iot_mqtt.xml | 386 ++++++++++-------- .../src/main/res/values/strings.xml | 2 + ...34\347\250\213\347\231\273\345\275\225.md" | 6 +- 4 files changed, 269 insertions(+), 202 deletions(-) diff --git a/hub/hub-android-demo/src/main/java/com/tencent/iot/hub/device/android/app/IoTMqttFragment.java b/hub/hub-android-demo/src/main/java/com/tencent/iot/hub/device/android/app/IoTMqttFragment.java index 5f384c0d9..4eccc1d82 100644 --- a/hub/hub-android-demo/src/main/java/com/tencent/iot/hub/device/android/app/IoTMqttFragment.java +++ b/hub/hub-android-demo/src/main/java/com/tencent/iot/hub/device/android/app/IoTMqttFragment.java @@ -5,6 +5,8 @@ import android.content.res.AssetManager; import android.os.Bundle; import android.os.Environment; +import android.text.Editable; +import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -54,6 +56,7 @@ import java.util.Map; import java.util.UUID; import java.util.concurrent.atomic.AtomicInteger; +import java.util.regex.Pattern; import javax.net.SocketFactory; @@ -75,6 +78,8 @@ public class IoTMqttFragment extends Fragment { private Button mCloseConnectBtn; + private EditText mIPEdit; + private Button mSubScribeBtn; private Button mUnSubscribeBtn; @@ -165,9 +170,14 @@ public class IoTMqttFragment extends Fragment { "Zcrqjyw+6baShrOfotoFDlFE/wqf6FjhgeRkOb5QlA==\n" + "-----END CERTIFICATE-----\n"; // ssh 要访问的IP - private String sshHost = "***REMOVED***"; - // ssh 端口号 - private int sshPort = 8022; + private String sshHost = ""; + // ssh 端口号 + private int sshPort = 0; + + String pattern = "^(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\." + + "(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\." + + "(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\." + + "(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])$"; private volatile boolean mIsConnected; @@ -264,27 +274,47 @@ public void onNothingSelected(AdapterView parent) { mConnectBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - if (!mIsConnected) { - SharedPreferences settings = mParent.getSharedPreferences("config", Context.MODE_PRIVATE); - mBrokerURL = settings.getString(BROKER_URL, mBrokerURL); - mProductID = settings.getString(PRODUCT_ID, mProductID); - mDevName = settings.getString(DEVICE_NAME, mDevName); - mDevPSK = settings.getString(DEVICE_PSK, mDevPSK); - mSubProductID = settings.getString(SUB_PRODUCID, mSubProductID); - mSubDevName = settings.getString(SUB_DEVNAME, mSubDevName); - mSubDevPsk = settings.getString(SUB_DEVICE_PSK, mSubDevPsk); - - mTestTopic = settings.getString(TEST_TOPIC, mTestTopic); - - mDevCert = settings.getString(DEVICE_CERT, mDevCert); - mDevPriv = settings.getString(DEVICE_PRIV, mDevPriv); - - mMQTTSample = new MQTTSample(mParent, new SelfMqttActionCallBack(), mBrokerURL, mProductID, mDevName, mDevPSK, - mDevCert, mDevPriv, mSubProductID, mSubDevName, mTestTopic, null, null, true, new SelfMqttLogCallBack(), sshHost, sshPort); - mMQTTSample.setSubDevPsk(mSubDevPsk); - mMQTTSample.connect(); + Editable ip = mIPEdit.getText(); + String[] ipInfo; + if (TextUtils.isEmpty(ip)) { + Toast.makeText(requireContext(), "请输入ip", Toast.LENGTH_SHORT).show(); + } else if ((ipInfo = ip.toString().split(":")).length != 2) { + Toast.makeText(requireContext(), "ip与端口输入格式错误", Toast.LENGTH_SHORT).show(); } else { - mParent.printLogInfo(TAG, "Mqtt has been connected, do not connect it again.", mLogInfoText, TXLog.LEVEL_INFO); + if (!Pattern.compile(pattern).matcher(ipInfo[0]).matches()) { + Toast.makeText(requireContext(), "ip地址输入格式错误", Toast.LENGTH_SHORT).show(); + return; + } else { + sshHost = ipInfo[0]; + } + if (!Pattern.compile("^\\d{4}$").matcher(ipInfo[1]).matches()) { + Toast.makeText(requireContext(), "端口号输入格式错误", Toast.LENGTH_SHORT).show(); + return; + } else { + sshPort = Integer.parseInt(ipInfo[1]); + } + if (!mIsConnected) { + SharedPreferences settings = mParent.getSharedPreferences("config", Context.MODE_PRIVATE); + mBrokerURL = settings.getString(BROKER_URL, mBrokerURL); + mProductID = settings.getString(PRODUCT_ID, mProductID); + mDevName = settings.getString(DEVICE_NAME, mDevName); + mDevPSK = settings.getString(DEVICE_PSK, mDevPSK); + mSubProductID = settings.getString(SUB_PRODUCID, mSubProductID); + mSubDevName = settings.getString(SUB_DEVNAME, mSubDevName); + mSubDevPsk = settings.getString(SUB_DEVICE_PSK, mSubDevPsk); + + mTestTopic = settings.getString(TEST_TOPIC, mTestTopic); + + mDevCert = settings.getString(DEVICE_CERT, mDevCert); + mDevPriv = settings.getString(DEVICE_PRIV, mDevPriv); + + mMQTTSample = new MQTTSample(mParent, new SelfMqttActionCallBack(), mBrokerURL, mProductID, mDevName, mDevPSK, + mDevCert, mDevPriv, mSubProductID, mSubDevName, mTestTopic, null, null, true, new SelfMqttLogCallBack(), sshHost, sshPort); + mMQTTSample.setSubDevPsk(mSubDevPsk); + mMQTTSample.connect(); + } else { + mParent.printLogInfo(TAG, "Mqtt has been connected, do not connect it again.", mLogInfoText, TXLog.LEVEL_INFO); + } } } }); @@ -589,6 +619,7 @@ public void onClick(View view) { public void initView(View view) { mConnectBtn = view.findViewById(R.id.connect); mCloseConnectBtn = view.findViewById(R.id.close_connect); + mIPEdit = view.findViewById(R.id.ed_ip); mSubScribeBtn = view.findViewById(R.id.subscribe_topic); mUnSubscribeBtn = view.findViewById(R.id.unSubscribe_topic); mPublishBtn = view.findViewById(R.id.publish_topic); diff --git a/hub/hub-android-demo/src/main/res/layout/fragment_iot_mqtt.xml b/hub/hub-android-demo/src/main/res/layout/fragment_iot_mqtt.xml index 69a9e18af..a5bb627b9 100644 --- a/hub/hub-android-demo/src/main/res/layout/fragment_iot_mqtt.xml +++ b/hub/hub-android-demo/src/main/res/layout/fragment_iot_mqtt.xml @@ -16,216 +16,247 @@ android:id="@+id/spinner4" android:layout_width="match_parent" android:layout_height="wrap_content" - android:entries="@array/setup_items"/> + android:entries="@array/setup_items" /> - - - -