aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/com/arslaancodes/zwznfreefit/MainActivity.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/com/arslaancodes/zwznfreefit/MainActivity.kt')
-rw-r--r--app/src/main/java/com/arslaancodes/zwznfreefit/MainActivity.kt75
1 files changed, 75 insertions, 0 deletions
diff --git a/app/src/main/java/com/arslaancodes/zwznfreefit/MainActivity.kt b/app/src/main/java/com/arslaancodes/zwznfreefit/MainActivity.kt
new file mode 100644
index 0000000..59bff65
--- /dev/null
+++ b/app/src/main/java/com/arslaancodes/zwznfreefit/MainActivity.kt
@@ -0,0 +1,75 @@
+package com.arslaancodes.zwznfreefit
+
+import android.Manifest
+import android.bluetooth.BluetoothDevice
+import android.content.pm.PackageManager
+import android.os.Bundle
+import android.widget.*
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.app.ActivityCompat
+import android.content.Intent
+
+class MainActivity : AppCompatActivity() {
+ private lateinit var bleManager: BleManager
+ private lateinit var statusText: TextView
+ private lateinit var scanButton: Button
+ private lateinit var deviceList: ListView
+
+ private val devices = mutableListOf<BluetoothDevice>()
+ private val deviceNames = mutableListOf<String>()
+ private lateinit var adapter: ArrayAdapter<String>
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_main)
+ window.decorView.systemUiVisibility = (
+ android.view.View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
+ or android.view.View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
+ )
+
+ bleManager = BleManager(this)
+ statusText = findViewById(R.id.statusText)
+ scanButton = findViewById(R.id.scanButton)
+ deviceList = findViewById(R.id.deviceList)
+
+ adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, deviceNames)
+ deviceList.adapter = adapter
+
+ deviceList.setOnItemClickListener { _, _, position, _ ->
+ val device = devices[position]
+ statusText.text = "Connecting to ${device.name ?: device.address}..."
+ bleManager.connect(device) {
+ runOnUiThread {
+ val intent = Intent(this, DeviceActivity::class.java)
+ intent.putExtra("device_address", device.address)
+ startActivity(intent)
+ }
+ }
+ }
+
+ scanButton.setOnClickListener {
+ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH_SCAN) != PackageManager.PERMISSION_GRANTED || ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED || ActivityCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) {
+ ActivityCompat.requestPermissions(this,
+ arrayOf(
+ Manifest.permission.BLUETOOTH_SCAN,
+ Manifest.permission.BLUETOOTH_CONNECT,
+ Manifest.permission.ACCESS_FINE_LOCATION
+ ), 1)
+ return@setOnClickListener
+ }
+ devices.clear()
+ deviceNames.clear()
+ adapter.notifyDataSetChanged()
+ statusText.text = "Scanning..."
+ bleManager.scan { device ->
+ runOnUiThread {
+ if (devices.none { it.address == device.address }) {
+ devices.add(device)
+ deviceNames.add(device.name ?: device.address)
+ adapter.notifyDataSetChanged()
+ }
+ }
+ }
+ }
+ }
+}