BluetoothAdapter — bu nədir, metodları və Android-də Bluetooth idarəetməsi

Müəllif: IT Sectr Dərc olunub: 2026-07-16 Oxuma vaxtı: 10 dəq

BluetoothAdapter — Android-in sistem sinfi olub yerli Bluetooth adapterini təmsil edir. BluetoothAdapter Android-də bütün Bluetooth əməliyyatları üçün giriş nöqtəsidir: radionu yandırma (enable), cihazları skan etmə, görünməni idarəetmə (setScanMode), adapter haqqında məlumat əldə etmə (getName, getAddress, getState). Sinif BluetoothManager.getAdapter() (API 18+) və ya BluetoothAdapter.getDefaultAdapter() vasitəsilə əlçatandır. Bluetooth modulu olmayan cihazlarda getDefaultAdapter() null qaytarır. Android Developers, 2026-ya görə, BluetoothAdapter API 5-dən başlayaraq Android-də istənilən BLE tətbiqi üçün məcburi komponentdir.

Əsas məqamlar

  • BluetoothAdapter — Android-də yerli Bluetooth adapterini idarə etmək üçün sistem sinfi
  • getDefaultAdapter() — nümunə əldə etmək üçün statik metod; Bluetooth olmayan cihazlarda null qaytarır
  • getBluetoothLeScanner() — müasir BLE skanerinə giriş metodu (API 21+)
  • enable/disable — Bluetooth radiosunu yandırma və söndürmə metodları (BLUETOOTH_ADMIN icazəsi tələb olunur)
  • startDiscovery/startLeScan — klassik və BLE skanetmə metodları (LE Scan köhnəlmişdir, BluetoothLeScanner istifadə edin)

BluetoothAdapter nədir: mahiyyəti və nümunənin əldə edilməsi

BluetoothAdapter Android cihazının fiziki Bluetooth adapterini təmsil edir. Hər cihazın dəqiq bir adapteri var (istisna — bir neçə Bluetooth çipi olan Android Automotive, burada BluetoothManager.getAdapterList() istifadə olunur). BluetoothAdapter radionun vəziyyətini inkapsulə edir: STATE_OFF (0), STATE_TURNING_ON (1), STATE_ON (2), STATE_TURNING_OFF (3). Vəziyyət ACTION_STATE_CHANGED üzrə BroadcastReceiver vasitəsilə izlənilir.

BluetoothAdapter nümunəsinin əldə edilməsi Android-də hər hansı BLE tətbiqinin ilk addımıdır. Tövsiyə olunan metod — API 18+ ilə BluetoothManager.getAdapter(). Alternativ — API 5-dən işləyən, lakin daha az çevik olan BluetoothAdapter.getDefaultAdapter() statik metodu. Hər iki metod cihazda Bluetooth modulu yoxdursa null qaytarır (Wi-Fi-only planşetlər, emulyator). Null yoxlaması məcburidir: tətbiq düzgün şəkildə işini bitirməli və ya BLE funksiyalarını söndürməlidir.

kotlin
// BluetoothAdapter-in əldə edilməsi (tövsiyə olunur)
import android.bluetooth.BluetoothAdapter
import android.bluetooth.BluetoothManager
import android.content.Context

class BluetoothHelper(context: Context) {

    private val bluetoothAdapter: BluetoothAdapter?

    init {
        // Metod 1: BluetoothManager vasitəsilə (API 18+)
        val manager = context.getSystemService(Context.BLUETOOTH_SERVICE)
                as BluetoothManager?
        bluetoothAdapter = manager?.adapter

        // Metod 2: statik metod vasitəsilə (API 5+)
        // val adapter = BluetoothAdapter.getDefaultAdapter()

        // Null yoxlaması
        if (bluetoothAdapter == null) {
            // Cihaz Bluetooth-u dəstəkləmir
        }
    }

    // Bluetooth vəziyyətini yoxlayın
    fun isBluetoothEnabled(): Boolean {
        return bluetoothAdapter?.isEnabled == true
    }

    // Adapter haqqında məlumat əldə edin
    fun getAdapterInfo(): Map<String, String> {
        return mapOf(
            "name" to (bluetoothAdapter?.name ?: "N/A"),
            "address" to (bluetoothAdapter?.address ?: "N/A"),
            "state" to (bluetoothAdapter?.state?.toString() ?: "N/A"),
            "scanMode" to (bluetoothAdapter?.scanMode?.toString() ?: "N/A")
        )
    }
}

BluetoothHelper sinfi BluetoothManager vasitəsilə BluetoothAdapter-in əldə edilməsini və sonrakı null yoxlamasını nümayiş etdirir. isBluetoothEnabled isEnabled-i yoxlayır — hər hansı BLE əməliyyatından əvvəl məcburi şərtdir. getAdapterInfo cihazın adını, MAC ünvanını, vəziyyətini və görünmə rejimini qaytarır. Vacib: Android 10+-da (API 29+) sistem xidməti, əgər tətbiqdə BLUETOOTH_ADMIN və ACCESS_FINE_LOCATION icazəsi yoxdursa, saxta MAC ünvanı (02:00:00:00:00:00) qaytarır.

BluetoothAdapter-in əsas metodları: enable, disable, getState, getAddress

BluetoothAdapter Bluetooth radiosunu idarəetmə metodlarını təqdim edir. enable() və disable() Bluetooth-u yandırır və söndürür. Hər iki metod BLUETOOTH_ADMIN icazəsi tələb edir və asinxron yerinə yetirilir: enable() çağırışından sonra sistem radionu yandırma prosesinə başlayır, vəziyyət BluetoothAdapter.ACTION_STATE_CHANGED aksiyonu ilə BroadcastReceiver vasitəsilə izlənilir. Android 10+-dan etibarən enable() və disable() əlavə sistem icazəsi tələb edir — adi tətbiqlər istifadəçi dialoqu olmadan Bluetooth-u proqramla idarə edə bilməz.

getState() adapterin cari vəziyyətini qaytarır: STATE_OFF (10), STATE_TURNING_ON (11), STATE_ON (12), STATE_TURNING_OFF (13). getAddress() Bluetooth adapterinin MAC ünvanını qaytarır. Android 6+-da MAC ünvanını sorğulamaq üçün ACCESS_FINE_LOCATION (və ya API 31+ üçün ACCESS_COARSE_LOCATION) tələb olunur. Android 10+-da getAddress() sabit 02:00:00:00:00:00 ünvanını qaytarır — real ünvan ictimai API vasitəsilə əlçatan deyil.

getScanMode() adapterin görünmə rejimini müəyyən edir: SCAN_MODE_NONE (görünməz), SCAN_MODE_CONNECTABLE (qoşulmuşlar üçün görünən), SCAN_MODE_CONNECTABLE_DISCOVERABLE (hamı üçün görünən). Görünmə rejimi təhlükəsizlik üçün vaxtla məhdudlaşdırılıb (adətən 60–300 saniyə). Rejimin setScanMode() vasitəsilə qurulması BLUETOOTH_ADMIN və Android 10+-da sistem icazəsi tələb edir.

MetodTəsvirTələb olunan icazə
enable()Bluetooth radiosunun yandırılmasıBLUETOOTH_ADMIN
disable()Bluetooth radiosunun söndürülməsiBLUETOOTH_ADMIN
getState()Adapterin cari vəziyyətiBLUETOOTH
getAddress()Adapterin MAC ünvanıBLUETOOTH + ACCESS_FINE_LOCATION (API 23+)
getScanMode()Cihazın görünmə rejimiBLUETOOTH
setScanMode()Görünmə rejiminin qurulmasıBLUETOOTH_ADMIN

Cihazların skan edilməsi: startDiscovery və BluetoothLeScanner

BluetoothAdapter iki skanetmə növünü dəstəkləyir. Klassik Bluetooth skanetməsi (BR/EDR) startDiscovery() vasitəsilə işə salınır — telefonlar və qulaqlıqlar da daxil olmaqla bütün növ Bluetooth cihazlarını aşkarlayır. Nəticələr BluetoothDevice.ACTION_FOUND aksiyonu ilə BroadcastReceiver vasitəsilə qaytarılır. startDiscovery() 12 saniyə işləyir və cancelDiscovery() çağırışı ilə ləğv edilə bilər. Bu metod BLE üçün köhnəlmişdir — BluetoothLeScanner istifadə edin.

BluetoothAdapter vasitəsilə BLE skanetməsi köhnəlmiş startLeScan(LeScanCallback) metodu ilə yerinə yetirilir. API 21-dən etibarən Google BluetoothAdapter.getBluetoothLeScanner() vasitəsilə əldə edilən BluetoothLeScanner-dən istifadə etməyi tövsiyə edir. BluetoothLeScanner daha çevik API təqdim edir: ScanSettings vasitəsilə skanetmə konfiqurasiyası (rejim, callback type, match mode), ScanFilter vasitəsilə filtrləmə (xidmət UUID-si, cihaz adı, MAC ünvanı üzrə) və fon skanetməsi üçün PendingIntent dəstəyi.

kotlin
// Köhnəlmiş və yeni BLE skanetmə API-si
import android.bluetooth.BluetoothAdapter
import android.bluetooth.le.*

class BLEScanner(private val bluetoothAdapter: BluetoothAdapter?) {

    // KÖHNƏLMİŞ: startLeScan (API 18+, API 21)
    @Suppress("DEPRECATION")
    fun legacyScan() {
        bluetoothAdapter?.startLeScan { device, rssi, scanRecord ->
            print("Found (LE Scan): $device.name, RSSI: $rssi")
        }
    }

    // YENİ: BluetoothLeScanner (API 21+)
    fun modernScan() {
        val scanner = bluetoothAdapter?.bluetoothLeScanner
            ?: return

        // Skanetmə parametrləri
        val settings = ScanSettings.Builder()
            .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
            .setCallbackType(ScanSettings.CALLBACK_TYPE_ALL_MATCHES)
            .setMatchMode(ScanSettings.MATCH_MODE_AGGRESSIVE)
            .build()

        // Xidmət üzrə filtrlə (Ürək döyüntüsü UUID)
        val filters = listOf(
            ScanFilter.Builder()
                .setServiceUuid(ParcelUuid.fromString("0000180D-0000-1000-8000-00805F9B34FB"))
                .build()
        )

        // Skanetməyə başla
        scanner.startScan(filters, settings, object : ScanCallback() {
            override fun onScanResult(callbackType: Int, result: ScanResult) {
                val device = result.device
                val rssi = result.rssi
                print("Found (BLE Scanner): ${device.name}, RSSI: $rssi, address: ${device.address}")
            }

            override fun onScanFailed(errorCode: Int) {
                print("Scan error: $errorCode")
            }
        })
    }
}

BLEScanner sinfi köhnəlmiş startLeScan və müasir BluetoothLeScanner-i müqayisə edir. legacyScan-də LeScanCallback callback-i BluetoothDevice, RSSI və xam scanRecord alır. modernScan-də LOW_LATENCY rejimi (maksimum aşkarlama sürəti) ilə ScanSettings və nəbz xidmətinin UUID-si (Heart Rate Service 0x180D) üzrə filtrləmə üçün ScanFilter istifadə olunur. ScanCallback genişləndirilmiş məlumatları olan ScanResult obyekti ilə onScanResult təqdim edir: ad, RSSI, reklam məlumatları, qoşulma növü.

BluetoothManager: BluetoothAdapter-ə giriş üçün müasir API

BluetoothManager — Bluetooth əməliyyatlarını idarə etmək üçün API 18-də (Android 4.3) təqdim edilmiş Android sistem xidmətidir. API 18-ə qədər BluetoothAdapter əldə etməyin yeganə yolu getDefaultAdapter() statik metodu idi. BluetoothManager təqdim edir: adapter — BluetoothAdapter nümunəsi, getConnectedDevices() — qoşulmuş cihazların siyahısı, getDevicesMatchingConnectionStates() — vəziyyət üzrə filtrləmə. BluetoothManager həmçinin köhnə API-lərdə BluetoothLeScanner əldə etmək üçün istifadə olunur.

BluetoothManager-in üstünlükləri birbaşa BluetoothAdapter.getDefaultAdapter() çağırışı ilə müqayisədə: tətbiq statik sinqletondan asılı deyil, menecer konteksti (Activity/Application) nəzərə alır, bu da Android Enterprise çoxhesablı ssenariləri üçün vacibdir. Bir neçə Bluetooth çipi olan Android Automotive-də BluetoothManager.getAdapterList() bütün mövcud adapterləri qaytarır — BluetoothAdapter.getDefaultAdapter() yalnız birincini qaytarır.

kotlin
// BLE üçün BluetoothManager istifadəsi
class BLEConnection(context: Context) {

    private val bluetoothManager: BluetoothManager =
        context.getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager

    private val adapter: BluetoothAdapter? = bluetoothManager.adapter

    // Qoşulmuş BLE cihazlarının siyahısını əldə edin
    fun getConnectedDevices(): List<BluetoothDevice> {
        return bluetoothManager.getConnectedDevices(
            BluetoothProfile.GATT
        )
    }

    // Cihazları vəziyyət üzrə filtrlə
    fun getDevicesByState(states: IntArray): List<BluetoothDevice> {
        return bluetoothManager.getDevicesMatchingConnectionStates(
            BluetoothProfile.GATT, states
        )
    }

    // Cihazda BLE dəstəyini yoxlayın
    fun isBLESupported(): Boolean {
        return adapter != null && context.packageManager
            .hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)
    }

    // Sistem dialoqu vasitəsilə Bluetooth-un yandırılmasını tələb edin
    fun requestEnableBluetooth(activity: MainActivity) {
        if (adapter?.isEnabled == false) {
            val intent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
            activity.startActivityForResult(intent, REQUEST_ENABLE_BT)
        }
    }

    companion object {
        const val REQUEST_ENABLE_BT = 1001
    }
}

BLEConnection sinfi BluetoothAdapter-ə giriş və qoşulmuş GATT cihazlarının siyahısını əldə etmək üçün BluetoothManager-dən istifadə edir. isBLESupported BLE radiosunun mövcudluğunu PackageManager.hasSystemFeature(FEATURE_BLUETOOTH_LE) vasitəsilə yoxlayır — BLE olmadan Bluetooth Classic olan cihazlar üçün vacib yoxlamadır. requestEnableBluetooth sistem xidməti tələb etmədən Bluetooth-un yandırılması üçün sistem dialoqunu göstərir (ACTION_REQUEST_ENABLE) — bu, Android 10+-da sistem tətbiqi olmadan Bluetooth-u yandırmağın yeganə qanuni yoludur.

BluetoothAdapter ilə iş üçün Android icazələri

İcazələr BluetoothAdapter üçün Android-in hər versiyası ilə təkamül edib. Android 6–11-də (API 23–30) BLE skanetməsi üçün BLUETOOTH, BLUETOOTH_ADMIN və ACCESS_FINE_LOCATION məcburidir. Android 12+-da (API 31+) Google icazələri bölüb: ACCESS_FINE_LOCATION BLUETOOTH_SCAN (skanetmə), BLUETOOTH_CONNECT (qoşulma), BLUETOOTH_ADVERTISE (reklam) ilə əvəz olunub. BLE cihazlarını axtarmaq üçün BLUETOOTH_SCAN kifayətdir, yer tələb olunmur.

İcazə cədvəli Android versiyaları üzrə:

ƏməliyyatAPI 23–30API 31+
BLE skanetməsiACCESS_FINE_LOCATIONBLUETOOTH_SCAN (yer olmadan)
BLE-yə qoşulmaACCESS_FINE_LOCATIONBLUETOOTH_CONNECT
BLE reklamıACCESS_FINE_LOCATIONBLUETOOTH_ADVERTISE
Yandırma/söndürməBLUETOOTH_ADMINBLUETOOTH_ADMIN (sistem)
MAC ünvanının alınmasıACCESS_FINE_LOCATIONBLUETOOTH_CONNECT (saxta ünvan)

Android 12+-da bütün Bluetooth icazələri icra vaxtı icazələridir — onlar ActivityResultContracts.RequestMultiplePermissions vasitəsilə icra vaxtı tələb olunmalıdır. BLUETOOTH_SCAN və BLUETOOTH_ADVERTISE NEARBY_DEVICES qrupuna aiddir, BLUETOOTH_CONNECT — eyni qrupa. BLUETOOTH və BLUETOOTH_ADMIN icazələri API < 31 ilə uyğunluq üçün manifestdə qalır, lakin API 31+ üçün onlar nəzərə alınmır — Google yeni icazələrin açıq şəkildə göstərilməsini tələb edir.

kotlin
// Android 12+-da Bluetooth icazələrinin tələbi
import android.Manifest
import android.content.pm.PackageManager
import android.os.Build
import androidx.core.content.ContextCompat

class PermissionHelper(context: Context) {

    fun getRequiredPermissions(): Array<String> {
        return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
            // Android 12+: BLE skanetməsi
            arrayOf(
                Manifest.permission.BLUETOOTH_SCAN,
                Manifest.permission.BLUETOOTH_CONNECT,
                Manifest.permission.BLUETOOTH_ADVERTISE
            )
        } else {
            // Android 6-11: BLE skanetməsi
            arrayOf(
                Manifest.permission.ACCESS_FINE_LOCATION,
                Manifest.permission.BLUETOOTH,
                Manifest.permission.BLUETOOTH_ADMIN
            )
        }
    }

    // Bütün icazələri yoxlayın
    fun hasPermissions(context: Context): Boolean {
        return getRequiredPermissions().all { permission ->
            ContextCompat.checkSelfPermission(context, permission)
                    == PackageManager.PERMISSION_GRANTED
        }
    }
}

PermissionHelper sinfi API səviyyəsindən asılı olaraq düzgün icazə dəstini qaytarır. Android 12+-da yer olmadan BLUETOOTH_SCAN, BLUETOOTH_CONNECT, BLUETOOTH_ADVERTISE istifadə olunur. Android 6–11-də BLE skanetməsi üçün hələ də ACCESS_FINE_LOCATION tələb olunur. Tərtibatçı ActivityResultContracts və ya RxPermissions vasitəsilə icazə tələb edərkən hər iki ssenarini nəzərə almalıdır.

Kotlin-də BluetoothAdapter ilə işin tam nümunəsi

Tam nümunə — BLE cihazını skan etmək, qoşulmaq və məlumat oxumaq üçün BluetoothAdapter istifadə edən Kotlin-də BLE tətbiqi. Nümunə icazələrin yoxlanılması, adapterin əldə edilməsi, BluetoothLeScanner vasitəsilə skanetmə və BluetoothDevice.connectGatt vasitəsilə qoşulmanı əhatə edir.

kotlin
// Kotlin-də tam BLE meneceri
class BLEManager(private val context: Context) {

    private val bluetoothManager: BluetoothManager =
        context.getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager
    private val adapter: BluetoothAdapter? = bluetoothManager.adapter
    private var scanner: BluetoothLeScanner? = adapter?.bluetoothLeScanner
    private var gatt: BluetoothGatt? = null

    // 1. Xidmətlərin aşkarlanması
    fun canScan(): Boolean {
        return adapter?.isEnabled == true
                && scanner != null
                && PermissionHelper(context).hasPermissions(context)
    }

    // 2. Filtrlə skanetmə
    fun startScanning(callback: (BluetoothDevice, Int) -> Unit) {
        if (!canScan()) return

        val settings = ScanSettings.Builder()
            .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
            .setReportDelay(0)
            .build()

        scanner?.startScan(null, settings, object : ScanCallback() {
            override fun onScanResult(callbackType: Int, result: ScanResult) {
                callback(result.device, result.rssi)
            }
        })
    }

    // 3. Skanetməni dayandır
    fun stopScanning() {
        scanner?.stopScan(object : ScanCallback() {})
    }

    // 4. BLE cihazına qoşul
    fun connectToDevice(device: BluetoothDevice) {
        if (adapter?.isEnabled != true) return

        gatt = device.connectGatt(
            context,
            false,
            object : BluetoothGattCallback() {
                override fun onConnectionStateChange(gatt: BluetoothGatt, status: Int, newState: Int) {
                    if (newState == BluetoothProfile.STATE_CONNECTED) {
                        gatt.discoverServices()
                    }
                }

                override fun onServicesDiscovered(gatt: BluetoothGatt, status: Int) {
                    // Xidmətlər tapıldı, xarakteristikaları oxumaq olar
                }
            },
            BluetoothDevice.TRANSPORT_LE
        )
    }

    // 5. Resursları boşalt
    fun disconnect() {
        gatt?.disconnect()
        gatt?.close()
        gatt = null
    }
}

BLEManager meneceri Android-də tam BLE dövranını birləşdirir: adapter və icazələrin yoxlanılması (canScan), ScanSettings ilə BluetoothLeScanner vasitəsilə skanetmə (startScanning), TRANSPORT_LE ilə BluetoothDevice.connectGatt vasitəsilə qoşulma (connectToDevice), resursların boşaldılması (disconnect). Bütün BLE əməliyyatları UI axınında yerinə yetirilir — Android BluetoothGattCallback callbacklərini əsas axında çağırır. Məhsuldar BLE tapşırıqları üçün GATT əməliyyatlarını fon HandlerThread-ə çıxarmaq tövsiyə olunur.

Tez-tez verilən suallar

Android-də BluetoothAdapter nədir?

BluetoothAdapter — Android cihazının yerli Bluetooth adapterini təmsil edən sinif. BluetoothManager.getAdapter() (API 18+) və ya BluetoothAdapter.getDefaultAdapter() vasitəsilə əldə edilir. Bluetooth-u yandırma/söndürmə, cihazları skan etmə, görünməni idarəetmə və adapter haqqında məlumat əldə etmə metodlarını təqdim edir. Bluetooth modulu olmayan cihazlarda null qaytarır.

Niyə BluetoothAdapter.getDefaultAdapter() null qaytarır?

Səbəb — cihazda Bluetooth radiosunun olmamasıdır. Wi-Fi-only planşetlər, Android emulyatoru və Bluetooth olmayan Android TV üçün xarakterikdir. Tətbiq işə düşəndə getDefaultAdapter()-i null üçün yoxlayın və adapter yoxdursa BLE funksiyalarını söndürün. Alternativ — daha dəqiq müəyyən etmək üçün PackageManager.hasSystemFeature(FEATURE_BLUETOOTH_LE) vasitəsilə yoxlama.

BluetoothLeScanner startLeScan-dan nə ilə fərqlənir?

BluetoothLeScanner (API 21+) — ScanFilter, ScanSettings və PendingIntent dəstəyi ilə BLE skanetməsi üçün müasir API. startLeScan (API 18+) — məhdud məlumat dəsti ilə LeScanCallback qəbul edən köhnəlmiş BluetoothAdapter metodu. BluetoothLeScanner Google tərəfindən bütün yeni layihələr üçün tövsiyə olunur, UUID üzrə filtrləməyə, enerji istehlakı rejimini konfiqurasiya etməyə və PendingIntent vasitəsilə fonda işləməyə imkan verir.

Android 12+-da BLE üçün hansı icazələr lazımdır?

Android 12+-da (API 31) BLE skanetməsi üçün BLUETOOTH_SCAN, qoşulma üçün BLUETOOTH_CONNECT, reklam üçün BLUETOOTH_ADVERTISE tələb olunur. ACCESS_FINE_LOCATION yer icazəsi artıq BLE üçün tələb olunmur. Android 6–11-də ACCESS_FINE_LOCATION lazımdır. Bütün icazələr ActivityResultContracts vasitəsilə icra vaxtı tələb olunur.

Bluetooth-u dialoq olmadan proqramla yandırmaq olar?

Android 10+-dan etibarən sistem dialoqu olmadan Bluetooth-u proqramla yandırmaq yalnız BLUETOOTH_PRIVILEGED icazəsi olan sistem tətbiqləri üçün mümkündür. Adi tətbiqlər Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE) və startActivityForResult istifadə etməlidir — istifadəçi sistem dialoqunda yandırmanı təsdiqləyir. Manifestdə BLUETOOTH_ADMIN Android 10+-da enable() hüququ vermir.

Nəticə

  • BluetoothAdapter — Android-də bütün Bluetooth əməliyyatları üçün giriş nöqtəsi, BluetoothManager və ya getDefaultAdapter() vasitəsilə əldə edilir
  • getState()isEnabled — hər hansı BLE əməliyyatından əvvəl Bluetooth radiosunun vəziyyətinin əsas yoxlamaları
  • BluetoothLeScanner (API 21+) ScanFilter, ScanSettings və PendingIntent dəstəyi ilə köhnəlmiş startLeScan-ı əvəz edir
  • BluetoothManager — çoxhesablı ssenarilər və Automotive dəstəyi ilə BluetoothAdapter əldə etməyin müasir üsulu
  • İcazələr təkamül edib: ACCESS_FINE_LOCATION (API 23-30) → BLUETOOTH_SCAN/CONNECT/ADVERTISE (API 31+)
  • enable()/disable() — Android 10+-da adi tətbiqlər üçün yalnız ACTION_REQUEST_ENABLE sistem dialoqu vasitəsilə
  • connectGatt — BluetoothGattCallback vasitəsilə BLE periferiyası ilə GATT qoşulması qurmaq üçün BluetoothDevice metodu

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun