java.lang.NoSuchMethodError: android.bluetoothAdapter.getBluetoothLeAdvertiser at org.altbeacon.beacon - PullRequest
0 голосов
/ 17 апреля 2019

Получение ошибки на планшетах Asus, Samsung с версией ОС 4.4.2 Версия библиотеки маяков Android.

Получение под вопросом.

Я попытался обновить библиотеку, обработав сбой, но все еще мог видеть ошибку ниже: -

java.lang.NoSuchMethodError: android.bluetooth.BluetoothAdapter.getBluetoothLeAdvertiser at org.altbeacon.beacon.g. (Неизвестный источник) в com.mangomirror.app.activity.a.b (Неизвестный источник) в com.mangomirror.app.activity.HomeActivity $ 2.a (неизвестный источник) по адресу d.g $ a $ 1 $ 1.run (неизвестный источник) в android.os.Handler.handleCallback (Handler.java:733) в android.os.Handler.dispatchMessage (Handler.java:95) в android.os.Looper.loop (Looper.java:136) в android.app.ActivityThread.main (ActivityThread.java:5001) в java.lang.reflect.Method.invokeNative (родной метод) в java.lang.reflect.Method.invoke (Method.java:515) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:785) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:601) на dalvik.system.NativeStart.main (собственный метод)

Ниже мой код: -

public void broadcastAsBeacon(int major, int minor) {
Beacon beacon = new Beacon.Builder()
.setId1("2f234454-cf6d-4a0f-adf2-f4911ba9ffa6")
.setId2(String.valueOf(major))
.setId3(String.valueOf(minor))
.setManufacturer(0x004C)
.setTxPower(txPower)
.setRssi(-89)
.setDataFields(Arrays.asList(new Long[]{0l}))
.build();

    BeaconParser beaconParser = new BeaconParser()
            .setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24");//
    try {
        beaconTransmitter = new BeaconTransmitter(this, beaconParser);
    }catch(Exception e){
        Log.i("TAG", String.valueOf(e));
    }

    if (beaconTransmitter!=null) {
        beaconTransmitter.startAdvertising(beacon, new AdvertiseCallback() {

            @Override
            public void onStartFailure(int errorCode) {
                Log.e("Class", "Advertisement start failed with code: " + errorCode);
            }

            @Override
            public void onStartSuccess(AdvertiseSettings settingsInEffect) {
                Log.i("class", "Advertisement start succeeded." + settingsInEffect.getTxPowerLevel());
                Log.i("class", "Advertisement start succeeded." + settingsInEffect);
            }
        });
    }
}

private boolean isBleEnabled() {
    BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();


    if (bluetoothAdapter == null) {
        // Device does not support Bluetooth
    } else {
        if (bluetoothAdapter!=null) {
            if (!bluetoothAdapter.isEnabled()) {
                Intent enableBtIntent = new Intent(ACTION_REQUEST_ENABLE);
                startActivityForResult(enableBtIntent, REQUEST_ENABLE_BLE);
                return false;
            }
        }
    }

    return true;
}

1 Ответ

0 голосов
/ 17 апреля 2019

Передача поддерживается только на Android 5.0+. В соответствии с библиотекой docs необходимо проверить, поддерживается ли передача в первую очередь, путем вызова

int result = BeaconTransmitter.checkTransmissionSupported(context);

Если устройство поддерживает передачу, метод возвращает BeaconTransmitter.SUPPORTED. Может также вернуться:

NOT_SUPPORTED_MIN_SDK
NOT_SUPPORTED_BLE
NOT_SUPPORTED_MULTIPLE_ADVERTISEMENTS (deprecated)
NOT_SUPPORTED_CANNOT_GET_ADVERTISER_MULTIPLE_ADVERTISEMENTS
NOT_SUPPORTED_CANNOT_GET_ADVERTISER
...