Ver Fonte

add introduce

zhaoyadi há 8 meses atrás
pai
commit
9cef8db292
23 ficheiros alterados com 315 adições e 125 exclusões
  1. 27 0
      xiaodou/src/main/java/com/luojigou/product/base/AbsIntroduceActivity.kt
  2. 40 0
      xiaodou/src/main/java/com/luojigou/product/base/BaseActivity.kt
  3. 17 9
      xiaodou/src/main/java/com/luojigou/product/xiaodou/XDConnectActivity.kt
  4. 9 5
      xiaodou/src/main/java/com/luojigou/product/xiaodou/XDConnectService.kt
  5. 5 25
      xiaodou/src/main/java/com/luojigou/product/xiaodou/XDIntroduceActivity.kt
  6. 0 1
      xiaodou/src/main/java/com/luojigou/product/xiaodou/XDScanWifiActivity.kt
  7. 10 13
      xiaodou/src/main/java/com/luojigou/product/xiaodou/ble/XDScanBLENormalFragment.kt
  8. 45 0
      xiaodou/src/main/java/com/luojigou/product/xiaodou/connect/XDConnectPasswordFragment.kt
  9. 43 0
      xiaodou/src/main/java/com/luojigou/product/xiaodou/connect/XDConnectPasswordSsidFragment.kt
  10. 9 0
      xiaodou/src/main/java/com/luojigou/product/xiaodou/connect/XDConnectSuccessFragment.kt
  11. 3 8
      xiaodou/src/main/java/com/luojigou/product/xiaodou/wifi/XDScanWifiAdapter.kt
  12. 0 9
      xiaodou/src/main/java/com/luojigou/product/xiaodou/wifi/XDScanWifiEntity.kt
  13. 13 0
      xiaodou/src/main/java/com/luojigou/product/xiaodou/wifi/XDScanWifiInfo.kt
  14. 3 38
      xiaodou/src/main/java/com/luojigou/product/xiaodou/wifi/XDScanWifiNormalFragment.kt
  15. 3 3
      xiaodou/src/main/res-xiaodou/layout/activity_xd_introduce.xml
  16. 17 0
      xiaodou/src/main/res/drawable/ble_disable.xml
  17. 17 0
      xiaodou/src/main/res/drawable/ble_permission.xml
  18. 3 3
      xiaodou/src/main/res/drawable/ic_lock.xml
  19. 23 0
      xiaodou/src/main/res/layout/fragment_connect_password.xml
  20. 26 0
      xiaodou/src/main/res/layout/fragment_connect_password_ssid.xml
  21. 1 1
      xiaodou/src/main/res/layout/fragment_scanble_disable.xml
  22. 1 1
      xiaodou/src/main/res/layout/fragment_scanble_permission.xml
  23. 0 9
      xiaodou/src/main/res/layout/fragment_scanwifi_normal.xml

+ 27 - 0
xiaodou/src/main/java/com/luojigou/product/base/AbsIntroduceActivity.kt

@@ -0,0 +1,27 @@
+package com.luojigou.product.base
+
+import android.view.View
+import android.widget.Button
+import com.luojigou.product.R
+
+abstract class AbsIntroduceActivity : BaseActivity(), View.OnClickListener {
+
+    private lateinit var buttonStart: Button
+
+    override fun onCreate(savedInstanceState: android.os.Bundle?) {
+        super.onCreate(savedInstanceState)
+        setTitle("连接引导")
+        buttonStart = findViewById(R.id.btn_intro_start)
+        buttonStart.setOnClickListener(this)
+    }
+
+    override fun getLayoutId(): Int = R.layout.activity_xd_introduce
+
+    override fun onClick(v: View?) {
+        when (v?.id) {
+            R.id.btn_intro_start -> startActivity()
+        }
+    }
+
+    abstract fun startActivity()
+}

+ 40 - 0
xiaodou/src/main/java/com/luojigou/product/base/BaseActivity.kt

@@ -1,14 +1,29 @@
 package com.luojigou.product.base
 
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.content.IntentFilter
 import android.graphics.drawable.ColorDrawable
 import android.os.Bundle
 import androidx.annotation.LayoutRes
 import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import com.luojigou.product.xiaodou.XDConnectActivity
+import com.luojigou.product.xiaodou.XDConnectService
 
 abstract class BaseActivity : AppCompatActivity() {
+    private var _isFinishing = false
+    private val finishReceiver = object : BroadcastReceiver() {
+        override fun onReceive(context: Context?, intent: Intent?) {
+            finish()
+        }
+    }
+
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(getLayoutId())
+        setupFinishReceiver()
     }
 
     @LayoutRes
@@ -21,4 +36,29 @@ abstract class BaseActivity : AppCompatActivity() {
             this.setBackgroundDrawable(ColorDrawable(0x00000000))
         }
     }
+
+    private fun setupFinishReceiver() {
+        if (!_isFinishing && this !is XDConnectActivity) {
+            val intentFilter = IntentFilter()
+            intentFilter.addAction(XDConnectService.ACTION_CONNECT_FINISH)
+            ContextCompat.registerReceiver(
+                this,
+                finishReceiver,
+                intentFilter,
+                ContextCompat.RECEIVER_EXPORTED
+            )
+            _isFinishing = true
+        }
+    }
+
+    private fun teardownFinishReceiver() {
+        if (_isFinishing) {
+            unregisterReceiver(finishReceiver)
+        }
+    }
+
+    override fun onDestroy() {
+        teardownFinishReceiver()
+        super.onDestroy()
+    }
 }

+ 17 - 9
xiaodou/src/main/java/com/luojigou/product/xiaodou/XDConnectActivity.kt

@@ -4,6 +4,7 @@ import android.content.BroadcastReceiver
 import android.content.Context
 import android.content.Intent
 import android.content.IntentFilter
+import android.net.wifi.ScanResult
 import android.os.Bundle
 import androidx.core.content.ContextCompat
 import androidx.fragment.app.Fragment
@@ -14,15 +15,21 @@ import com.luojigou.product.xiaodou.connect.XDConnectErrorFragment
 import com.luojigou.product.xiaodou.connect.XDConnectFailFragment
 import com.luojigou.product.xiaodou.connect.XDConnectNotFoundFragment
 import com.luojigou.product.xiaodou.connect.XDConnectPasswordErrorFragment
+import com.luojigou.product.xiaodou.connect.XDConnectPasswordFragment
+import com.luojigou.product.xiaodou.connect.XDConnectPasswordSsidFragment
 import com.luojigou.product.xiaodou.connect.XDConnectSuccessFragment
 import com.luojigou.product.xiaodou.connect.XDConnectTimeoutFragment
-import com.luojigou.product.xiaodou.wifi.XDScanWifiInfo
+import com.luojigou.product.xiaodou.wifi.ssid
 
 class XDConnectActivity : BaseActivity() {
     companion object {
-        fun startConnect(context: Context, device: XDScanWifiInfo) {
+        const val ACTION_SELECT_WIFI_SSID = "com.luojigou.xiaodou.ble.ACTION_SELECT_WIFI_SSID"
+        const val ACTION_SELECT_WIFI_WPA = "com.luojigou.xiaodou.ble.ACTION_SELECT_WIFI_WPA"
+
+        fun startConnect(context: Context, wifi: ScanResult?) {
             val intent = Intent(context, XDConnectActivity::class.java)
-            intent.putExtra(XDConnectService.ACTION_SELECT_WIFI_DEVICE_DATA, device)
+            intent.putExtra(ACTION_SELECT_WIFI_SSID, wifi?.ssid())
+            intent.putExtra(ACTION_SELECT_WIFI_WPA, wifi?.capabilities?.contains("WPA"))
             context.startActivity(intent)
         }
     }
@@ -55,7 +62,7 @@ class XDConnectActivity : BaseActivity() {
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setTitle("连接Wi-Fi")
-        setFragment(connectingFragment)
+//        setFragment(connectingFragment)
 
         val intentFilter = IntentFilter()
         intentFilter.apply {
@@ -75,12 +82,13 @@ class XDConnectActivity : BaseActivity() {
             ContextCompat.RECEIVER_EXPORTED,
         )
 
-        val device = intent.getParcelableExtra<XDScanWifiInfo>(XDConnectService.ACTION_SELECT_WIFI_DEVICE_DATA)
+        val ssid = intent.getStringExtra(ACTION_SELECT_WIFI_SSID)
+        val wpa = intent.getBooleanExtra(ACTION_SELECT_WIFI_WPA, true)
 
-        if (device != null) {
-            val intent = Intent(XDConnectService.ACTION_SELECT_WIFI_DEVICE)
-            intent.putExtra(XDConnectService.ACTION_SELECT_WIFI_DEVICE_DATA, device)
-            sendBroadcast(intent)
+        if (ssid != null) {
+            setFragment(XDConnectPasswordFragment(ssid))
+        } else {
+            setFragment(XDConnectPasswordSsidFragment())
         }
     }
 

+ 9 - 5
xiaodou/src/main/java/com/luojigou/product/xiaodou/XDConnectService.kt

@@ -51,7 +51,6 @@ class XDConnectService : Service() {
         const val ACTION_CONNECT_BLE_RESULT_ERROR = "com.luojigou.xiaodou.ble.ACTION_CONNECT_BLE_RESULT_ERROR"
         const val ACTION_CONNECT_BLE_RESULT_SUCCESS = "com.luojigou.xiaodou.ble.ACTION_CONNECT_BLE_RESULT_SUCCESS"
 
-        const val ACTION_CONNECT_WIFI = "com.luojigou.xiaodou.ble.ACTION_CONNECT_WIFI"
         const val ACTION_CONNECT_WIFI_RESULT_TIMEOUT = "com.luojigou.xiaodou.ble.ACTION_CONNECT_WIFI_RESULT_TIMEOUT" // -2
         const val ACTION_CONNECT_WIFI_RESULT_ERROR = "com.luojigou.xiaodou.ble.ACTION_CONNECT_WIFI_RESULT_ERROR" // -1
         const val ACTION_CONNECT_WIFI_RESULT_SUCCESS = "com.luojigou.xiaodou.ble.ACTION_CONNECT_WIFI_RESULT_SUCCESS" // 0
@@ -60,7 +59,8 @@ class XDConnectService : Service() {
         const val ACTION_CONNECT_WIFI_RESULT_NOT_FOUND = "com.luojigou.xiaodou.ble.ACTION_CONNECT_WIFI_RESULT_NOT_FOUND" // 3
         const val ACTION_CONNECT_WIFI_RESULT_PASSWORD_ERROR = "com.luojigou.xiaodou.ble.ACTION_CONNECT_WIFI_RESULT_PASSWORD_ERROR" // 4
 
-        private val deviceServiceUuidMask = UUID.fromString("0000af00-0000-1000-8000-00805f9b34fb")
+        const val ACTION_CONNECT_FINISH = "com.luojigou.xiaodou.ble.ACTION_CONNECT_FINISH"
+
         private val wifiConnectServiceUUID = UUID.fromString("0000ae80-0000-1000-8000-00805f9b34fb")
         private val wifiConnectWriteUUID = UUID.fromString("0000ae81-0000-1000-8000-00805f9b34fb")
         private val wifiConnectNotifyUUID = UUID.fromString("0000ae82-0000-1000-8000-00805f9b34fb")
@@ -112,8 +112,8 @@ class XDConnectService : Service() {
                     wifiInfo?.let { connectWifi(wifiInfo) }
                 }
 
-                ACTION_CONNECT_WIFI -> {
-
+                ACTION_CONNECT_FINISH->{
+                    stopSelf()
                 }
             }
         }
@@ -215,7 +215,7 @@ class XDConnectService : Service() {
         intentFilter.addAction(ACTION_RESTART_SCAN)
         intentFilter.addAction(ACTION_SELECT_BLE_DEVICE)
         intentFilter.addAction(ACTION_SELECT_WIFI_DEVICE)
-        intentFilter.addAction(ACTION_CONNECT_WIFI)
+        intentFilter.addAction(ACTION_CONNECT_FINISH)
         ContextCompat.registerReceiver(
             this, bluetoothReceiver, intentFilter, ContextCompat.RECEIVER_EXPORTED
         )
@@ -270,6 +270,10 @@ class XDConnectService : Service() {
     }
 
     private fun connectBLE(device: XDScanBLEDevice) {
+        bluetoothGatt?.disconnect()
+        bluetoothGatt?.close()
+        writeCharacteristic = null
+
         broadcastUpdate(ACTION_CONNECT_BLE)
         val bleDevice = bluetoothDevices.firstOrNull { it.address == device.address }?.device
             ?: return

+ 5 - 25
xiaodou/src/main/java/com/luojigou/product/xiaodou/XDIntroduceActivity.kt

@@ -1,31 +1,11 @@
 package com.luojigou.product.xiaodou
 
 import android.content.Intent
-import android.view.View
-import android.widget.Button
-import com.luojigou.product.R
-import com.luojigou.product.base.BaseActivity
+import com.luojigou.product.base.AbsIntroduceActivity
 
-class XDIntroduceActivity : BaseActivity(), View.OnClickListener {
-
-    private lateinit var buttonStart: Button
-
-    override fun onCreate(savedInstanceState: android.os.Bundle?) {
-        super.onCreate(savedInstanceState)
-        setTitle("连接引导")
-
-        buttonStart = findViewById(R.id.btn_xd_start)
-        buttonStart.setOnClickListener(this)
-    }
-
-    override fun getLayoutId(): Int = R.layout.activity_xd_introduce
-
-    override fun onClick(v: View?) {
-        when (v?.id) {
-            R.id.btn_xd_start -> {
-                val intent = Intent(this, XDScanBLEActivity::class.java)
-                startActivity(intent)
-            }
-        }
+class XDIntroduceActivity : AbsIntroduceActivity() {
+    override fun startActivity() {
+        val intent = Intent(this, XDScanBLEActivity::class.java)
+        startActivity(intent)
     }
 }

+ 0 - 1
xiaodou/src/main/java/com/luojigou/product/xiaodou/XDScanWifiActivity.kt

@@ -70,7 +70,6 @@ class XDScanWifiActivity : BaseActivity(), XDScanWifiStatus.Host {
     private fun setupReceiver() {
         val intentFilter = IntentFilter()
         intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
-        intentFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
         intentFilter.addAction("android.net.wifi.CONFIGURED_NETWORKS_CHANGE");
         intentFilter.addAction("android.net.wifi.LINK_CONFIGURATION_CHANGED");
         intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);

+ 10 - 13
xiaodou/src/main/java/com/luojigou/product/xiaodou/ble/XDScanBLENormalFragment.kt

@@ -95,6 +95,16 @@ class XDScanBLENormalFragment(private val host: XDScanBLEStatus.Host) : Fragment
 
                         if (list != null) {
                             setAdapterValue(list)
+
+                            if (list.size == 1) {
+                                val intent = Intent(XDConnectService.ACTION_SELECT_BLE_DEVICE)
+                                intent.putExtra(
+                                    XDConnectService.ACTION_SELECT_BLE_DEVICE_DATA,
+                                    list[0]
+                                )
+                                requireActivity().sendBroadcast(intent)
+                                XDScanWifiActivity.start(requireContext())
+                            }
                         }
                     }
                 }
@@ -118,14 +128,6 @@ class XDScanBLENormalFragment(private val host: XDScanBLEStatus.Host) : Fragment
         )
     }
 
-    private fun stopService() {
-        requireContext().stopService(
-            Intent(
-                requireContext(), XDConnectService::class.java
-            )
-        )
-    }
-
     private fun restartScan() {
         setAdapterValue(listOf())
         val intent = Intent(XDConnectService.ACTION_RESTART_SCAN)
@@ -135,9 +137,4 @@ class XDScanBLENormalFragment(private val host: XDScanBLEStatus.Host) : Fragment
     private fun setAdapterValue(list: List<XDScanBLEDevice>) {
         adapter.setValues(list)
     }
-
-    override fun onDetach() {
-        stopService()
-        super.onDetach()
-    }
 }

+ 45 - 0
xiaodou/src/main/java/com/luojigou/product/xiaodou/connect/XDConnectPasswordFragment.kt

@@ -0,0 +1,45 @@
+package com.luojigou.product.xiaodou.connect
+
+import android.content.Intent
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.Button
+import android.widget.EditText
+import android.widget.TextView
+import androidx.fragment.app.Fragment
+import com.luojigou.product.R
+import com.luojigou.product.xiaodou.XDConnectService
+import com.luojigou.product.xiaodou.wifi.XDScanWifiInfo
+
+class XDConnectPasswordFragment(private val ssid: String) : Fragment() {
+    override fun onCreateView(
+        inflater: LayoutInflater,
+        container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        return inflater.inflate(R.layout.fragment_connect_password, container, false)
+    }
+
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        super.onViewCreated(view, savedInstanceState)
+
+        val ssid = view.findViewById<TextView>(R.id.tv_ssid)
+        ssid.text = this.ssid
+
+        val pwd = view.findViewById<EditText>(R.id.et_pwd)
+        val button = view.findViewById<Button>(R.id.btn_pwd)
+
+        button.setOnClickListener {
+            val pwdText = pwd.getText()
+
+            val intent = Intent(XDConnectService.ACTION_SELECT_WIFI_DEVICE)
+            intent.putExtra(
+                XDConnectService.ACTION_SELECT_WIFI_DEVICE_DATA,
+                XDScanWifiInfo(this.ssid, pwdText.toString())
+            )
+            requireActivity().sendBroadcast(intent)
+        }
+    }
+}

+ 43 - 0
xiaodou/src/main/java/com/luojigou/product/xiaodou/connect/XDConnectPasswordSsidFragment.kt

@@ -0,0 +1,43 @@
+package com.luojigou.product.xiaodou.connect
+
+import android.content.Intent
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.Button
+import android.widget.EditText
+import androidx.fragment.app.Fragment
+import com.luojigou.product.R
+import com.luojigou.product.xiaodou.XDConnectService
+import com.luojigou.product.xiaodou.wifi.XDScanWifiInfo
+
+class XDConnectPasswordSsidFragment : Fragment() {
+    override fun onCreateView(
+        inflater: LayoutInflater,
+        container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        return inflater.inflate(R.layout.fragment_connect_password_ssid, container, false)
+    }
+
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        super.onViewCreated(view, savedInstanceState)
+
+        val ssid = view.findViewById<EditText>(R.id.et_ssid)
+        val pwd = view.findViewById<EditText>(R.id.et_pwd)
+        val button = view.findViewById<Button>(R.id.btn_pwd)
+
+        button.setOnClickListener {
+            val ssidText = ssid.getText()
+            val pwdText = pwd.getText()
+
+            val intent = Intent(XDConnectService.ACTION_SELECT_WIFI_DEVICE)
+            intent.putExtra(
+                XDConnectService.ACTION_SELECT_WIFI_DEVICE_DATA,
+                XDScanWifiInfo(ssidText.toString(), pwdText.toString())
+            )
+            requireActivity().sendBroadcast(intent)
+        }
+    }
+}

+ 9 - 0
xiaodou/src/main/java/com/luojigou/product/xiaodou/connect/XDConnectSuccessFragment.kt

@@ -1,11 +1,13 @@
 package com.luojigou.product.xiaodou.connect
 
+import android.content.Intent
 import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import androidx.fragment.app.Fragment
 import com.luojigou.product.R
+import com.luojigou.product.xiaodou.XDConnectService
 
 class XDConnectSuccessFragment : Fragment() {
     override fun onCreateView(
@@ -15,4 +17,11 @@ class XDConnectSuccessFragment : Fragment() {
     ): View? {
         return inflater.inflate(R.layout.fragment_connect_success, container, false)
     }
+
+    override fun onResume() {
+        super.onResume()
+
+        val intent = Intent(XDConnectService.ACTION_CONNECT_FINISH)
+        requireActivity().sendBroadcast(intent)
+    }
 }

+ 3 - 8
xiaodou/src/main/java/com/luojigou/product/xiaodou/wifi/XDScanWifiAdapter.kt

@@ -11,8 +11,7 @@ import androidx.recyclerview.widget.RecyclerView
 import com.luojigou.product.R
 
 class XDScanWifiAdapter(
-    private val itemClickListener: (ScanResult) -> Unit,
-    private val addClickListener: () -> Unit,
+    private val itemClickListener: (ScanResult?) -> Unit,
 ) : RecyclerView.Adapter<XDScanWifiAdapter.ViewHolder>() {
     private val list: MutableList<ScanResult> = ArrayList()
 
@@ -38,16 +37,12 @@ class XDScanWifiAdapter(
     override fun onBindViewHolder(holder: ViewHolder, position: Int) {
         if (position == list.size) {
             holder.itemView.setOnClickListener {
-                addClickListener.invoke()
+                itemClickListener.invoke(null)
             }
         } else {
             val item = list[position]
 
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
-                holder.name.text = item.wifiSsid?.toString()
-            } else {
-                holder.name.text = item.BSSID
-            }
+            holder.name.text = item.ssid()
 
             if (item.capabilities.contains("WPA")) {
                 holder.img.setImageResource(R.drawable.ic_lock)

+ 0 - 9
xiaodou/src/main/java/com/luojigou/product/xiaodou/wifi/XDScanWifiEntity.kt

@@ -1,9 +0,0 @@
-package com.luojigou.product.xiaodou.wifi
-
-data class XDScanWifiEntity(
-    val ssid:String,
-    val bssid:String,
-    val rssi:Int,
-    val level:Int,
-    val frequency:Int,
-)

+ 13 - 0
xiaodou/src/main/java/com/luojigou/product/xiaodou/wifi/XDScanWifiInfo.kt

@@ -1,8 +1,21 @@
 package com.luojigou.product.xiaodou.wifi
 
+import android.net.wifi.ScanResult
+import android.os.Build
 import android.os.Parcel
 import android.os.Parcelable
 
+fun ScanResult.ssid(): String = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+    val s = this.wifiSsid.toString()
+    if (s.isBlank()) {
+        s
+    } else {
+        s.substring(1, s.length - 1)
+    }
+} else {
+    BSSID
+}
+
 data class XDScanWifiInfo(
     val ssid: String,
     val password: String,

+ 3 - 38
xiaodou/src/main/java/com/luojigou/product/xiaodou/wifi/XDScanWifiNormalFragment.kt

@@ -6,12 +6,10 @@ import android.content.Context
 import android.content.Intent
 import android.content.IntentFilter
 import android.net.wifi.WifiManager
-import android.os.Build
 import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
-import android.widget.Button
 import androidx.core.content.ContextCompat
 import androidx.fragment.app.Fragment
 import androidx.recyclerview.widget.LinearLayoutManager
@@ -23,40 +21,9 @@ import com.luojigou.product.xiaodou.XDConnectActivity
 class XDScanWifiNormalFragment(private val host: XDScanWifiStatus.Host) : Fragment() {
     private lateinit var wifiScanReceiver: BroadcastReceiver
 
-    private val adapter = XDScanWifiAdapter(
-        { wifi ->
-            XDScanWifiPasswordFragment {
-                val wifi = XDScanWifiInfo(
-                    ssid = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
-                        val s = wifi.wifiSsid.toString()
-                        s.substring(1, s.length - 1)
-                    } else {
-                        wifi.BSSID
-                    }, password = it
-                )
-
-                XDConnectActivity.startConnect(
-                    requireContext(),
-                    wifi
-                )
-            }.show(
-                requireActivity().supportFragmentManager,
-                "password"
-            )
-        },
-        {
-            XDScanWifiPasswordWithSsidFragment { ssid, pwd ->
-                XDConnectActivity.startConnect(
-                    requireContext(),
-                    XDScanWifiInfo(ssid, pwd)
-                )
-
-            }.show(
-                requireActivity().supportFragmentManager,
-                "password"
-            )
-        },
-    )
+    private val adapter = XDScanWifiAdapter {
+        XDConnectActivity.startConnect(requireContext(), it)
+    }
 
     override fun onCreateView(
         inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
@@ -67,8 +34,6 @@ class XDScanWifiNormalFragment(private val host: XDScanWifiStatus.Host) : Fragme
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
 
-        val restartScanButton = view.findViewById<Button>(R.id.scan_again) //        restartScanButton.setOnClickListener { restartScan() }
-
         val recyclerView = view.findViewById<RecyclerView>(R.id.scan_list)
         val layoutManager = LinearLayoutManager(requireContext(), RecyclerView.VERTICAL, false)
         recyclerView.layoutManager = layoutManager

+ 3 - 3
xiaodou/src/main/res-xiaodou/layout/activity_xd_introduce.xml

@@ -5,17 +5,17 @@
     android:layout_height="match_parent">
 
     <TextView
-        android:id="@+id/tv_xd_introduce"
+        android:id="@+id/tv_intro_desc"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="这里是连接指导说明"
-        app:layout_constraintBottom_toTopOf="@id/btn_xd_start"
+        app:layout_constraintBottom_toTopOf="@id/btn_intro_start"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintRight_toRightOf="parent"
         app:layout_constraintTop_toTopOf="parent" />
 
     <Button
-        android:id="@+id/btn_xd_start"
+        android:id="@+id/btn_intro_start"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_margin="16dp"

Diff do ficheiro suprimidas por serem muito extensas
+ 17 - 0
xiaodou/src/main/res/drawable/ble_disable.xml


Diff do ficheiro suprimidas por serem muito extensas
+ 17 - 0
xiaodou/src/main/res/drawable/ble_permission.xml


+ 3 - 3
xiaodou/src/main/res/drawable/ic_lock.xml

@@ -8,20 +8,20 @@
       android:strokeLineJoin="round"
       android:strokeWidth="2"
       android:fillColor="#00000000"
-      android:strokeColor="currentColor"
+      android:strokeColor="#FFC4CAD4"
       android:strokeLineCap="round"/>
   <path
       android:pathData="M11,16a1,1 0,1 0,2 0a1,1 0,0 0,-2 0"
       android:strokeLineJoin="round"
       android:strokeWidth="2"
       android:fillColor="#00000000"
-      android:strokeColor="currentColor"
+      android:strokeColor="#FFC4CAD4"
       android:strokeLineCap="round"/>
   <path
       android:pathData="M8,11v-4a4,4 0,1 1,8 0v4"
       android:strokeLineJoin="round"
       android:strokeWidth="2"
       android:fillColor="#00000000"
-      android:strokeColor="currentColor"
+      android:strokeColor="#FFC4CAD4"
       android:strokeLineCap="round"/>
 </vector>

+ 23 - 0
xiaodou/src/main/res/layout/fragment_connect_password.xml

@@ -0,0 +1,23 @@
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:padding="16dp">
+
+    <TextView
+        android:id="@+id/tv_ssid"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"/>
+
+    <EditText
+        android:id="@+id/et_pwd"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:hint="请在此输入wifi密码" />
+
+    <Button
+        android:id="@+id/btn_pwd"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="确定" />
+</LinearLayout>

+ 26 - 0
xiaodou/src/main/res/layout/fragment_connect_password_ssid.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:padding="16dp">
+
+    <EditText
+        android:id="@+id/et_ssid"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:focusable="auto"
+        android:hint="请在此输入wifi名称" />
+
+    <EditText
+        android:id="@+id/et_pwd"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:hint="请在此输入wifi密码" />
+
+    <Button
+        android:id="@+id/btn_pwd"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="确定" />
+</LinearLayout>

+ 1 - 1
xiaodou/src/main/res/layout/fragment_scanble_disable.xml

@@ -17,7 +17,7 @@
         <ImageView
             android:layout_width="200dp"
             android:layout_height="300dp"
-            android:src="@drawable/wifi_disable" />
+            android:src="@drawable/ble_disable" />
 
         <Button
             android:id="@+id/btn_open"

+ 1 - 1
xiaodou/src/main/res/layout/fragment_scanble_permission.xml

@@ -17,7 +17,7 @@
         <ImageView
             android:layout_width="200dp"
             android:layout_height="300dp"
-            android:src="@drawable/wifi_permission" />
+            android:src="@drawable/ble_permission" />
 
         <Button
             android:id="@+id/btn_open"

+ 0 - 9
xiaodou/src/main/res/layout/fragment_scanwifi_normal.xml

@@ -1,20 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
-
     <androidx.recyclerview.widget.RecyclerView
         android:id="@+id/scan_list"
         android:layout_width="match_parent"
         android:layout_height="match_parent" />
 
-    <Button
-        android:id="@+id/scan_again"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="重新扫描"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintRight_toRightOf="parent" />
 </androidx.constraintlayout.widget.ConstraintLayout>

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff