#android #android-bluetooth
Вопрос:
Кажется, я не могу заставить свое приложение подключиться к устройству Bluetooth и программно установить PIN-код.
Я пытался не прерывать трансляцию, и это не помогло. Если я не выполню BroadcastReceiver
это , он предложит пользователю ввести PIN-код, и он успешно соединится. Но если я попытаюсь установить PIN-код напрямую, это никогда не сработает. И я даже попытался указать byteArray
кодировку в UTF-8, но безрезультатно. Я даже пытался вручную настроить byteArray
и все равно ничего.
Кроме того, я объявил все необходимые разрешения в Манифесте:
- BLUETOOTH_АДМИН
- блютус
- BLUETOOTH-СОЕДИНЕНИЕ
- BLUETOOTH_SCAN
- ACCESS_COARSE_LOCATION
- ACCESS_FINE_LOCATION
- ACCESS_BACKGROUND_LOCATION
Что я делаю не так?
class MainActivity: AppCompatActivity() {
private var broadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(p0: Context?, p1: Intent?) {
var device: BluetoothDevice? = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE)
device?.setPin("1234".toByteArray())
this.abortBroadcast()
}}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.devicelist)
ActivityCompat.requestPermissions(this,arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),1)
registerReceiver(broadcastReceiver, IntentFilter(BluetoothDevice.ACTION_PAIRING_REQUEST))
findViewById<Button>(R.id.button3).setOnClickListener{
var ble = BluetoothAdapter.getDefaultAdapter()
var dev = ble.getRemoteDevice("00:20:04:32:8A:EE")
dev.createBond()
}
}}
Комментарии:
1. Вы также запрашивали разрешения на выполнение для разрешения на фоновое расположение? Только объявления их в манифесте не всегда достаточно. Пожалуйста, взгляните на это, если это может быть полезно: github.com/warting/permissions-ui