diff options
| author | Arslaan Pathan <[email protected]> | 2026-03-30 22:13:08 +1300 |
|---|---|---|
| committer | Arslaan Pathan <[email protected]> | 2026-03-30 22:13:08 +1300 |
| commit | e92a1f4a6babca0827410426ae59cc7b24f401da (patch) | |
| tree | a9e93b75c41876368a4f66a7e4e9665c6832388f /app/src/main/java/com/arslaancodes/zwznfreefit/MainActivity.kt | |
| download | zwzn-freefit-android-e92a1f4a6babca0827410426ae59cc7b24f401da.tar.xz zwzn-freefit-android-e92a1f4a6babca0827410426ae59cc7b24f401da.zip | |
chore: Initial commit
Diffstat (limited to 'app/src/main/java/com/arslaancodes/zwznfreefit/MainActivity.kt')
| -rw-r--r-- | app/src/main/java/com/arslaancodes/zwznfreefit/MainActivity.kt | 75 |
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() + } + } + } + } + } +} |
