Правильный способ найти, находится ли сопряженное Android-устройство Bluetooth в диапазоне?

Я должен написать приложение, которое будет действовать как клиент bluetooth. То, что я пытаюсь сделать, это выяснить, каким будет лучший способ выяснить, поддерживает ли определенное устройство, которое я поддерживаю, не пытаясь все время использовать BluetoothDevice.connect(), и если он не находится в зоне действия. Здесь мы предполагаем, что устройство уже сопряжено.

Я боюсь, что было бы плохой практикой пытаться все время подключаться к определенному устройству, пока оно не окажется в зоне действия. Мне кажется, что это будет плохо для батареи.

Кто-нибудь знает какие-либо методы или концепции, которые должны использоваться для выполнения того, что я пытаюсь сделать?

Спасибо!

Ответ 1

Хорошо, так как я понимаю из вашего вопроса, вы хотите получить имя устройства, с которым вы сопрягаетесь, и если его в диапазоне

Итак, вот решение: -

  • Создайте класс с именем DeviceDetails:

класс DeviceDetails { public String name; public String address; публичный BluetoothDevice remoteDevice; }

  • Вам необходимо подключить и соединить ваши устройства, как описано здесь, как только это будет сделано и будет создано соединение, создайте объект DeviceDetails.

  • DeviceDetails selectedDevice;, и если у вас есть пользовательский адаптер для отображения списка устройств, перейдите в позицию из представления в ссылку selectedDevice. Пример: - selectedDevice = adapter.getItem(pos);

  • Теперь у вас есть объект SelectedDevice, который вы выбрали для сопряжения, таким образом вы можете сохранить его адрес и имя в

    предпочтения.

    Example:- 
    savePairedDeviceInfo(selectedDevice.name, selectedDevice.address);
        public void savePairedDeviceInfo(String name, String addr)
            {
                if(name != null && !name.equalsIgnoreCase(""))
                    editor.putString(PNAME_OF_DEVICE, name);
    
                if(addr != null && !addr.equalsIgnoreCase(""))
                    editor.putString(MAC_ADDRESS_OF_DEVICE, addr);
    
                editor.commit();
            }
    
  • Теперь, в следующий раз, когда вы захотите проверить, выполняется ли настройка спаривания или нет, проверьте имя и адрес устройства, получив значения из настроек. Используйте check (if cond.), Чтобы вернуть true, что более старое устройство, которое было сопряжено, было таким же или другим.

  • Если сопряженное устройство находится в радиусе действия, вы получите то же самое значение, которое оно попытается связать с другим устройством.

Сообщите мне, если вы поняли из моего объяснения или нет.

Ответ 2

Вы можете следовать ниже:

  • Получить список парных устройств из адаптера bluetooth.
  • Запустить обнаружение
  • Когда устройство найдено, скажем, устройство A, вы можете проверить, есть ли устройство A в списке парных устройств или нет. Если устройство A является одним из сопряженных устройств, значит, это парное доступное устройство в диапазоне.