WiFi管理
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
package com.example.defenseapplication.liveVideo
|
||||
|
||||
import android.os.Bundle
|
||||
import android.widget.Toast
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.example.defenseapplication.R
|
||||
import com.example.defenseapplication.adapter.AddLinkedUserAdapter
|
||||
import com.example.defenseapplication.adapter.UserItem
|
||||
import com.example.defenseapplication.databinding.AddLinkedUserActivityBinding
|
||||
import com.gyf.immersionbar.ImmersionBar
|
||||
|
||||
class AddLinkedUserActivity : AppCompatActivity() {
|
||||
private lateinit var binding: AddLinkedUserActivityBinding
|
||||
private val selectedPhoneSet = mutableSetOf<String>()
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = AddLinkedUserActivityBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
ImmersionBar.with(this)
|
||||
.statusBarDarkFont(true)
|
||||
.titleBar(binding.topBar)
|
||||
.init()
|
||||
|
||||
initRecyclerView()
|
||||
initListener()
|
||||
}
|
||||
|
||||
private fun initRecyclerView() {
|
||||
val mockData = listOf(
|
||||
UserItem("王五", "13566666666"),
|
||||
UserItem("赵六", "15733333333")
|
||||
)
|
||||
|
||||
binding.rvAddLinkedUser.layoutManager = LinearLayoutManager(this)
|
||||
binding.rvAddLinkedUser.adapter =
|
||||
AddLinkedUserAdapter(mockData, selectedPhoneSet) { phone, isChecked ->
|
||||
if (isChecked) {
|
||||
selectedPhoneSet.add(phone)
|
||||
} else {
|
||||
selectedPhoneSet.remove(phone)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun initListener() {
|
||||
binding.btnAddLinkedUser.setOnClickListener {
|
||||
if (selectedPhoneSet.isEmpty()) {
|
||||
Toast.makeText(this, getString(R.string.please_select_at_least_one_user), Toast.LENGTH_SHORT).show()
|
||||
} else {
|
||||
val message = getString(R.string.selected_users_voice, selectedPhoneSet.size)
|
||||
Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
binding.ivBack.setOnClickListener {
|
||||
finish()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,7 @@ import com.example.defenseapplication.adapter.LinkedUserAdapter
|
||||
import com.example.defenseapplication.databinding.LinkedUserActivityBinding
|
||||
import com.example.defenseapplication.view.CustomDialogFragmentText
|
||||
import com.gyf.immersionbar.ImmersionBar
|
||||
|
||||
//关联用户页面
|
||||
class LinkedUserActivity : AppCompatActivity() {
|
||||
|
||||
private lateinit var binding: LinkedUserActivityBinding
|
||||
@@ -176,8 +176,8 @@ class LinkedUserActivity : AppCompatActivity() {
|
||||
}
|
||||
|
||||
binding.btnAddLinkedUser.setOnClickListener {
|
||||
val intent = Intent(this, LinkedUserSearchActivity::class.java)
|
||||
startActivityForResult(intent, REQUEST_CODE_SEARCH)
|
||||
val intent = Intent(this, AddLinkedUserActivity::class.java)
|
||||
startActivity(intent)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -78,8 +78,10 @@ class SettingsActivity : BaseActivity() {
|
||||
val intent = Intent(this, LinkedUserActivity::class.java)
|
||||
startActivity( intent)
|
||||
}
|
||||
|
||||
|
||||
binding.itemWifiManage.setOnClickListener {
|
||||
val intent = Intent(this, WiFiManagementActivity::class.java)
|
||||
startActivity(intent)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,18 +1,36 @@
|
||||
package com.example.defenseapplication.liveVideo
|
||||
|
||||
import android.Manifest
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.IntentFilter
|
||||
import android.content.pm.PackageManager
|
||||
import android.net.wifi.ScanResult
|
||||
import android.net.wifi.WifiManager
|
||||
import android.os.Bundle
|
||||
import androidx.activity.enableEdgeToEdge
|
||||
import android.text.Editable
|
||||
import android.text.TextWatcher
|
||||
import android.view.Gravity
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import android.widget.PopupWindow
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.core.app.ActivityCompat
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.example.defenseapplication.R
|
||||
import com.example.defenseapplication.databinding.DeviceInfoActivityBinding
|
||||
import com.example.defenseapplication.databinding.LinkedUserActivityBinding
|
||||
import com.example.defenseapplication.adapter.WifiListAdapter
|
||||
import com.example.defenseapplication.databinding.DialogWifiListBinding
|
||||
import com.example.defenseapplication.databinding.WifiManagementActivityBinding
|
||||
import com.gyf.immersionbar.ImmersionBar
|
||||
|
||||
class WiFiManagementActivity : AppCompatActivity() {
|
||||
|
||||
private lateinit var binding: WifiManagementActivityBinding
|
||||
private lateinit var wifiManager: WifiManager
|
||||
private lateinit var wifiScanReceiver: BroadcastReceiver
|
||||
private var popupWindow: PopupWindow? = null
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = WifiManagementActivityBinding.inflate(layoutInflater)
|
||||
@@ -24,5 +42,118 @@ class WiFiManagementActivity : AppCompatActivity() {
|
||||
binding.ivBack.setOnClickListener {
|
||||
finish()
|
||||
}
|
||||
|
||||
binding.btnSelectWifi.setOnClickListener {
|
||||
showWifiListDialog()
|
||||
}
|
||||
|
||||
binding.etWifiName.addTextChangedListener(object : TextWatcher {
|
||||
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
|
||||
|
||||
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {}
|
||||
|
||||
override fun afterTextChanged(s: Editable?) {
|
||||
updateBottomButtonVisibility()
|
||||
}
|
||||
})
|
||||
wifiManager = applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
|
||||
|
||||
wifiScanReceiver = object : BroadcastReceiver() {
|
||||
override fun onReceive(context: Context, intent: Intent) {
|
||||
val success = intent.getBooleanExtra(WifiManager.EXTRA_RESULTS_UPDATED, false)
|
||||
if (success) {
|
||||
updateWifiList()
|
||||
}
|
||||
}
|
||||
}
|
||||
//点击确定成功失败吐司
|
||||
binding.btnConfirm.setOnClickListener {
|
||||
// if(){
|
||||
// ToastUtils.showSuccess(this, getString(R.string.wifi_connection_success))
|
||||
// }else{
|
||||
// ToastUtils.showError(this, getString(R.string.wifi_connection_failed))
|
||||
// }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private fun showWifiListDialog() {
|
||||
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
|
||||
!= PackageManager.PERMISSION_GRANTED ||
|
||||
ActivityCompat.checkSelfPermission(this, Manifest.permission.CHANGE_WIFI_STATE)
|
||||
!= PackageManager.PERMISSION_GRANTED) {
|
||||
ActivityCompat.requestPermissions(this,
|
||||
arrayOf(Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.CHANGE_WIFI_STATE),
|
||||
1001)
|
||||
return
|
||||
}
|
||||
|
||||
if (!wifiManager.isWifiEnabled) {
|
||||
wifiManager.isWifiEnabled = true
|
||||
}
|
||||
|
||||
wifiManager.startScan()
|
||||
|
||||
val dialogBinding = DialogWifiListBinding.inflate(LayoutInflater.from(this))
|
||||
popupWindow = PopupWindow(
|
||||
dialogBinding.root,
|
||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
ViewGroup.LayoutParams.WRAP_CONTENT
|
||||
).apply {
|
||||
isFocusable = true
|
||||
setBackgroundDrawable(null)
|
||||
setOnDismissListener {
|
||||
binding.maskView.visibility = android.view.View.GONE
|
||||
}
|
||||
showAtLocation(window.decorView, Gravity.BOTTOM, 0, 0)
|
||||
}
|
||||
|
||||
binding.maskView.visibility = android.view.View.VISIBLE
|
||||
|
||||
dialogBinding.rvWifiList.layoutManager = LinearLayoutManager(this@WiFiManagementActivity)
|
||||
|
||||
val wifiList = getWifiList()
|
||||
dialogBinding.rvWifiList.adapter = WifiListAdapter(wifiList) { wifiName ->
|
||||
binding.etWifiName.setText(wifiName)
|
||||
popupWindow?.dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateBottomButtonVisibility() {
|
||||
val wifiName = binding.etWifiName.text.toString().trim()
|
||||
binding.bottomButtonLayout.visibility =
|
||||
if (wifiName.isNotEmpty()) android.view.View.VISIBLE else android.view.View.GONE
|
||||
}
|
||||
|
||||
private fun getWifiList(): List<String> {
|
||||
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
|
||||
!= PackageManager.PERMISSION_GRANTED) {
|
||||
return emptyList()
|
||||
}
|
||||
val results: List<ScanResult> = wifiManager.scanResults
|
||||
return results.map { it.SSID }.distinct()
|
||||
}
|
||||
|
||||
private fun updateWifiList() {
|
||||
popupWindow?.contentView?.findViewById<androidx.recyclerview.widget.RecyclerView>(R.id.rvWifiList)?.let { recyclerView ->
|
||||
val wifiList = getWifiList()
|
||||
recyclerView.adapter = WifiListAdapter(wifiList) { wifiName ->
|
||||
binding.etWifiName.setText(wifiName)
|
||||
popupWindow?.dismiss()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
val intentFilter = IntentFilter()
|
||||
intentFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)
|
||||
registerReceiver(wifiScanReceiver, intentFilter)
|
||||
}
|
||||
|
||||
override fun onStop() {
|
||||
super.onStop()
|
||||
unregisterReceiver(wifiScanReceiver)
|
||||
popupWindow?.dismiss()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user