Проблемы с обнаружением Bluetooth - PullRequest
0 голосов
/ 14 октября 2019

Поэтому мне нужно устройство A (клиент) для подключения к устройству B (сервер), и я получил его на работу, но не во всех случаях. После открытия приложения я хочу разрешить обнаружение устройства

private void enableDiscoverability() {
        Intent discoverableIntent = new 
                      Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);

    discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 
    3600);
            startActivity(discoverableIntent);
    }

, и я настроил приемник для поиска одного конкретного устройства (только сейчас я все еще учусь использовать Bluetooth)

private final BroadcastReceiver receiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
            TextView output = findViewById(R.id.output);
            String action = intent.getAction();
            if (BluetoothDevice.ACTION_FOUND.equals(action)) {
                // Discovery has found a device. Get the BluetoothDevice
                // object and its info from the Intent.
                BluetoothDevice temp = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                String deviceName = temp.getName();
                Log.i("Device ", deviceName + " was found");
                String deviceHardwareAddress = temp.getAddress();
                if (deviceHardwareAddress.equalsIgnoreCase("DC:F7:56:DD:73:8F")) {
                    device = temp;
                    startClient();
                }
            }
        }
    };

Так вот моя проблема. Когда устройство A остается включенным, оно некоторое время обнаруживает новые устройства, но не обнаруживает новое устройство B через несколько минут. Оба устройства должны иметь приемник и быть обнаруживаемыми.

Есть ли тайм-аут при обнаружении устройств? Произойдет ли что-нибудь с приемником, если он попытается подключиться, но не получится? Я пытался найти его, но я все еще новичок с Bluetooth, поэтому я не знаю, с чего начать. Я был бы более чем рад опубликовать больше кода, если это будет необходимо

1 Ответ

1 голос
/ 14 октября 2019

Да. Каждое устройство имеет таймаут обнаружения. Лучшее место для начала - bluetooth.com с огромным количеством видео и документов. В Bluetooth есть время ожидания для каждого действия, такого как обнаружение, подключение, передача данных и т. Д.

...