btAdapter.isMultipleAdvertiseSupported () всегда false - PullRequest
0 голосов
/ 21 октября 2019

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

  • Android 6.0 (LG, Nexus 5)
  • Android 9.0 (Honor 10)

В моем приложении / build.gradle:

implementation 'org.altbeacon:android-beacon-library:2.16.3'

В моей деятельности:

public void onClickGenerateBeacon(View view) {
        Beacon beacon = new Beacon.Builder()
                .setId1(UUID.randomUUID().toString())
                .setId2("1")
                .setId3("2")
                .setManufacturer(0x0118)
                .setTxPower(-59)
                .setDataFields(Arrays.asList(new Long[]{0l}))
                .build();
        BluetoothManager btManager = (BluetoothManager) getSystemService(BLUETOOTH_SERVICE);
        BluetoothAdapter btAdapter = btManager.getAdapter();
        boolean isSupported = false;
        if (btAdapter.isEnabled())
            isSupported = btAdapter.isMultipleAdvertisementSupported();

        if (isSupported) {
            BeaconParser beaconParser = new BeaconParser().setBeaconLayout("m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25");
            BeaconTransmitter beaconTransmitter = new BeaconTransmitter(getApplicationContext(), beaconParser);
            beaconTransmitter.startAdvertising(beacon);
        }
    }

Но Поддерживается всегда false. И как результат не выполнить:

new BeaconParser().setBeaconLayout("m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25");

Как я могу это исправить? Можно ли эмулировать маяки с помощью этой библиотеки или, может быть, есть другой подход?

1 Ответ

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

К сожалению, это невозможно исправить с помощью операционной системы Android, установленной на этих телефонах. Сама операционная система блокирует передачу рекламы BLE, если isMultipleAdvertiseSupported возвращает false. См. здесь для объяснения о Nexus 5.

Теоретически вы можете получить root права на Nexus 5 и установить другой образ ПЗУ, который не блокирует рекламу BLE. По своему опыту я знаю, что сборка Android L beta 1 для Nexus 5 позволяла рекламировать. Этот образ ПЗУ больше не доступен в Google, но вы можете найти другое устанавливаемое ПЗУ для Nexus 5, которое не блокирует это.

Что касается устройств Huawei Honor, многие не поддерживают рекламу, но некоторые другиеделать. Вот слегка устаревшая таблица , в которой показаны таблицы, которые поддерживают рекламу.

...