Как лучше получить список всех 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() } }
Нужно решить такую задачу?
Заказать помощь
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Другие ответы (0)
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопросВам также может быть интересно
VPN
Как правильно настроить vless для Android TV?
0 ответов
Pyrogram
Как правильно зарегистрировать юзер бота в Telegram?
0 ответов
печатные-платы
Как заставить запускаться программу M3.exe от компании Hanxing AOI в инспекционной машине на Windows 7 Pro?
0 ответов
VPN
Почему подключение через VPN работает только на wi-fi, а через кабель нет, где ошибка?
0 ответов
