Android Bluetooth getProxyProfile возвращает true, но слушатель никогда не вызывается - PullRequest
1 голос
/ 29 января 2020

Я пытаюсь получить профиль прокси BluetoothHeadset в Android.

Я использую код Kotlin из документации SDK

В моем активность У меня есть поле для bluetoothHeadset и прослушиватель профиля, чтобы установить его:

    var bluetoothHeadset: BluetoothHeadset? = null

    private val profileListener = object : BluetoothProfile.ServiceListener {

        override fun onServiceConnected(profile: Int, proxy: BluetoothProfile) {
            Log.d(TAG, "profile is $profile")
            if (profile == BluetoothProfile.HEADSET) {
                bluetoothHeadset = proxy as BluetoothHeadset
            }
        }

        override fun onServiceDisconnected(profile: Int) {
            if (profile == BluetoothProfile.HEADSET) {
                bluetoothHeadset = null
            }
        }
    }

В onCreate я получаю адаптер bluetooth и вызываю getProxyProfile:

        val bluetoothAdapter: BluetoothAdapter? = BluetoothAdapter.getDefaultAdapter()
        if (bluetoothAdapter == null) {
            Log.e(TAG, "No Bluetooth Adapter.")
        } else {
            // Verify bluetooth is enabled
            if (!bluetoothAdapter.isEnabled) {
                val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
                startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT)
            }

            // Establish connection to the proxy.
            bluetoothAdapter.getProfileProxy(
                this@MainActivity,
                profileListener,
                BluetoothProfile.HEADSET
            )

Странная вещь в том, что bluetoothHeadset никогда не устанавливается.

Вопрос не может подключиться к Bluetooth-гарнитуре в android охватывает ситуации, в которых может произойти сбой getProxyProfile, о чем свидетельствует возвращение false. Я подтвердил, что в моем случае getProxyProfile возвращает true , а не false .

Я также подтвердил в logcat, что onServiceConnected никогда не вызывается.

Почему getProxyProfile возвращает true, но слушатель никогда не устанавливает bluetoothHeadset?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...