Задать вопрос

Как получить список всех Bluetooth-устройств на Android?

Точнее задача: нужно получать через колбэк bt-устройство и уже с ним работать, но на такой изи задаче что то застрял. Никогда не удавалась работать с блютузом, буду благодарен в любом участии в вопросе!

Вот класс с логикой:
package com.arturprgr.meshmessenger.manager

import android.Manifest
import android.app.Activity
import android.bluetooth.BluetoothAdapter
import android.bluetooth.BluetoothManager
import android.bluetooth.le.ScanCallback
import android.bluetooth.le.ScanResult
import android.content.Context
import android.content.pm.PackageManager
import android.widget.Toast
import androidx.core.app.ActivityCompat

class MeshManager(private val context: Context) {
    private var btAdapter: BluetoothAdapter? = null
    private val message = mutableListOf<Pair<String, String>>()

    fun tryConnectToDevice() {
        if (btAdapter == null) {
            val service = context.getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager
            btAdapter = service.adapter
        }
        if (btAdapter?.isEnabled == true) {
            if (ActivityCompat.checkSelfPermission(
                    context, Manifest.permission.BLUETOOTH_SCAN
                ) != PackageManager.PERMISSION_GRANTED
            ) ActivityCompat.requestPermissions(
                context as Activity,
                arrayOf(Manifest.permission.BLUETOOTH_SCAN),
                1
            )
        } else return
        Toast.makeText(context, "Scan", Toast.LENGTH_LONG).show()
        btAdapter?.bluetoothLeScanner?.startScan(object : ScanCallback() {
            override fun onScanResult(callbackType: Int, result: ScanResult) {
                super.onScanResult(callbackType, result)
                Toast.makeText(context, "${result.device.address}", Toast.LENGTH_LONG).show()
            }
        })
    }

    fun sendMessage(targetDeviceId: String, message: String) {
        this.message.add(targetDeviceId to message)
        tryConnectToDevice()
    }
}


Вот код активности:
package com.arturprgr.meshmessenger

import android.os.Bundle
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.arturprgr.meshmessenger.databinding.ActivityMainBinding
import com.arturprgr.meshmessenger.manager.MeshManager

class MainActivity : AppCompatActivity() {
    private lateinit var binding: ActivityMainBinding
    private lateinit var meshManager: MeshManager

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        meshManager = MeshManager(this@MainActivity)
        enableEdgeToEdge()
        setContentView(binding.root)
        ViewCompat.setOnApplyWindowInsetsListener(binding.root) { v, insets ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
            insets
        }

        meshManager.tryConnectToDevice()
    }
}
  • Вопрос задан
  • 25 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы