Я пытаюсь получить профиль прокси 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?