首页 > 解决方案 > java.lang.NoSuchMethodError: android.bluetooth.BluetoothAdapter.getBluetoothLeAdvertiser

问题描述

我想通过Android 4.4 传输 Beacon。(银河系)

此处帮助: 在此处输入链接描述

在我的安卓应用中:

fun onClickTransmittingBeacon(view: View) {
        val result = BeaconTransmitter.checkTransmissionSupported(this)
        Log.d(TAG, "onClickTransmittingBeacon, result = $result")
        val beacon = Beacon.Builder()
                .setId1("2f234454-cf6d-4a0f-adf2-f4911ba9ffa6")
                .setId2("1")
                .setId3("2")
                .setManufacturer(0x0118)
                .setTxPower(-59)
                .setDataFields(Arrays.asList(*arrayOf(0L)))
                .build()
        val beaconParser = BeaconParser().setBeaconLayout("m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25")
        val beaconTransmitter = BeaconTransmitter(applicationContext, beaconParser)
        beaconTransmitter.startAdvertising(beacon)
}

在 logcat 中:

onClickTransmittingBeacon, result = 1

因此,我的设备支持 BLE。好的。

但是为什么在 logcat 中我得到运行时异常:

10-22 18:49:00.472 D/com.myproject.android.activity.RangingActivity(25202): onClickTransmittingBeacon, result = 1
10-22 18:49:00.472 D/BeaconParser(25202): Parsing beacon layout: m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25
10-22 18:49:00.479 D/BluetoothManagerService(  378): Message: 20
10-22 18:49:00.479 D/BluetoothManagerService(  378): Added callback: android.bluetooth.IBluetoothManagerCallback$Stub$Proxy@42b207b8:true
10-22 18:49:00.487 D/AndroidRuntime(25202): Shutting down VM
10-22 18:49:00.487 W/dalvikvm(25202): threadid=1: thread exiting with uncaught exception (group=0x41879700)
10-22 18:49:00.644 D/dalvikvm(25202): GC_FOR_ALLOC freed 433K, 5% free 9589K/10060K, paused 19ms, total 19ms
10-22 18:49:00.737 E/AndroidRuntime(25202): FATAL EXCEPTION: main
10-22 18:49:00.737 E/AndroidRuntime(25202): java.lang.IllegalStateException: Could not execute method for android:onClick
10-22 18:49:00.737 E/AndroidRuntime(25202):     at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:402)
10-22 18:49:00.737 E/AndroidRuntime(25202):     at android.view.View.performClick(View.java:4240)
10-22 18:49:00.737 E/AndroidRuntime(25202):     at android.view.View$PerformClick.run(View.java:17721)
10-22 18:49:00.737 E/AndroidRuntime(25202):     at android.os.Handler.handleCallback(Handler.java:730)
10-22 18:49:00.737 E/AndroidRuntime(25202):     at android.os.Handler.dispatchMessage(Handler.java:92)
10-22 18:49:00.737 E/AndroidRuntime(25202):     at android.os.Looper.loop(Looper.java:137)
10-22 18:49:00.737 E/AndroidRuntime(25202):     at android.app.ActivityThread.main(ActivityThread.java:5103)
10-22 18:49:00.737 E/AndroidRuntime(25202):     at java.lang.reflect.Method.invokeNative(Native Method)
10-22 18:49:00.737 E/AndroidRuntime(25202):     at java.lang.reflect.Method.invoke(Method.java:525)
10-22 18:49:00.737 E/AndroidRuntime(25202):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
10-22 18:49:00.737 E/AndroidRuntime(25202):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-22 18:49:00.737 E/AndroidRuntime(25202):     at dalvik.system.NativeStart.main(Native Method)
10-22 18:49:00.737 E/AndroidRuntime(25202): Caused by: java.lang.reflect.InvocationTargetException
10-22 18:49:00.737 E/AndroidRuntime(25202):     at java.lang.reflect.Method.invokeNative(Native Method)
10-22 18:49:00.737 E/AndroidRuntime(25202):     at java.lang.reflect.Method.invoke(Method.java:525)
10-22 18:49:00.737 E/AndroidRuntime(25202):     at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397)
10-22 18:49:00.737 E/AndroidRuntime(25202):     ... 11 more
10-22 18:49:00.737 E/AndroidRuntime(25202): Caused by: java.lang.NoSuchMethodError: android.bluetooth.BluetoothAdapter.getBluetoothLeAdvertiser
10-22 18:49:00.737 E/AndroidRuntime(25202):     at org.altbeacon.beacon.BeaconTransmitter.<init>(BeaconTransmitter.java:58)
10-22 18:49:00.737 E/AndroidRuntime(25202):     at com.myproject.android.activity.RangingActivity.onClickTransmittingBeacon(RangingActivity.kt:140)
10-22 18:49:00.737 E/AndroidRuntime(25202):     ... 14 more
10-22 18:49:00.753 W/ActivityManager(  378):   Force finishing activity com.myproject.android.debug/com.myproject.android.activity.RangingActivity
10-22 18:49:00.886 D/dalvikvm(  378): GC_FOR_ALLOC freed 1494K, 32% free 21228K/31108K, paused 92ms, total 93ms
10-22 18:49:00.901 I/ActivityManager(  378): Process android.process.acore (pid 24435) has died.
10-22 18:49:01.175 D/dalvikvm(25202): GC_FOR_ALLOC freed 541K, 6% free 9557K/10136K, paused 51ms, total 52ms
10-22 18:49:01.401 W/ActivityManager(  378): Activity pause timeout for ActivityRecord{427f8038 u0 com.myproject.android.debug/com.myproject.android.activity.RangingActivity}
10-22 18:49:01.542 D/dalvikvm(25202): GC_FOR_ALLOC freed 227K, 6% free 9598K/10136K, paused 31ms, total 31ms
10-22 18:49:01.784 I/CrashlyticsCore(25202): Crashlytics report upload complete: 5DAF24D2036F-0001-6272-04D09418ED6A

标签: androidandroid-ibeacon

解决方案


Android 4.4 太旧了,无法支持。你需要Andorid 5。


推荐阅读