RxJava Android Bluetooth SDK 經(jīng)典藍(lán)牙服務(wù)端使用實(shí)例

服務(wù)端使用實(shí)例

請(qǐng)求檢測(cè)權(quán)限,啟動(dòng)服務(wù)監(jiān)聽
class MasterActivity : AppCompatActivity() {

    private var bluetoothManager: BluetoothServerManger? = null

    companion object {
        const val TAG: String = "MasterActivity"
    }

    private lateinit var searchDeviceLauncher: ActivityResultLauncher<Intent>

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_master)

        searchDeviceLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
            bluetoothManager!!.startAdvertiser()
        }
        startLis()
    }

    private fun startLis() {
        bluetoothManager = BluetoothServerManger(this)
        bluetoothManager!!.registerEvent()
        bluetoothManager!!.let {
            if (!it.bluetoothEnable()) {
                Log.i(TAG, "藍(lán)牙不可用")
                return
            }
            if (!it.bluetoothIsOpen()) {
                Log.i(TAG, "藍(lán)牙未開啟")
                return
            }
            // 權(quán)限
            if (it.havePermission()) {
                startDiscoverable()
            } else {
                requestBTPermissions()
            }
        }
    }

    /**
     * 請(qǐng)求權(quán)限
     */
    private fun requestBTPermissions() {
        // 掃描權(quán)限請(qǐng)求
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {
            ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION), 10086);
        } else {
            ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.BLUETOOTH_CONNECT, Manifest.permission.BLUETOOTH_SCAN), 10086);
        }
    }

    /**
     * 權(quán)限請(qǐng)求結(jié)果
     */
    override fun onRequestPermissionsResult(
        requestCode: Int,
        permissions: Array<out String>,
        grantResults: IntArray
    ) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        if (requestCode == 10086 && grantResults.sum() == 0) {
            startDiscoverable()
        }
    }

    private fun startDiscoverable() {
        var requestDiscoverIntent = Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE)
        requestDiscoverIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0)
        searchDeviceLauncher.launch(requestDiscoverIntent)
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容