How to get the AltBeacon library's BootstrapRegion to recognize the iBeacon layout?

Deadly 提交于 2019-12-03 20:41:38

Edit your project.properties file and add the line:

manifestmerger.enabled=true

See full instructions here:

http://altbeacon.github.io/android-beacon-library/configure.html

The problem has nothing to do with the beacon type you are trying to recognize. Without the manifest merging enabled, you AndroidManifest.xml file doesn't have the service definition inherited from the library to start up the BeaconService, so no beacons of any kind are ever detected.

Using Eclipse, you can tell if manifest merging is working properly by doing a build, then looking at your generated manifest in bin/AndroidManifest.xml. This manifest should include the entries below.

If all else fails, you may copy these entries into your project manifest manually:

<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

<!-- nest the entries below underneath your application tag -->

    <service android:enabled="true" android:exported="true" android:isolatedProcess="false" android:label="beacon" android:name="org.altbeacon.beacon.service.BeaconService">
    </service>
    <service android:enabled="true" android:name="org.altbeacon.beacon.BeaconIntentProcessor">
    </service>
    <receiver android:name="org.altbeacon.beacon.startup.StartupBroadcastReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
            <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
            <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
        </intent-filter>
    </receiver>

If you aren't detecting beacons at all, make sure the library's BeaconService is running and that it notices bluetooth devices. To do this, enable debug logging by placing a line like below in the onCreate method of your application or activity:

mBeaconManager.setDebug(true);

Run your app while capturing the results of LogCat. You should look for lines like the ones below to tell you if the BeaconService is starting up successfully:

I/BeaconService( 7140): beaconService version 2.0-beta4 is starting up
I/BeaconService( 7140): binding
I/BeaconService( 7140): start ranging received
D/BeaconService( 7140): Currently ranging 1 regions.

If you see lines like this, then this means the service is starting up successfully. Then turn on your beacon and look for lines like below, which will tell you whether or not you are detecting bluetooth devices at all, and whether they are recognized as beacons:

D/BtGatt.GattService( 2006): onScanResult() - address=00:07:80:02:60:20, rssi=-65
D/BeaconService( 1772): got record
D/BeaconParser( 1772): This is a recognized beacon advertisement -- beac seen
D/BeaconService( 1772): beacon detected multiple times in scan cycle :id1: 2f234454-cf6d-4a0f-adf2-f4911ba9ffa6 id2: 1 id3: 3


D/BtGatt.GattService( 2006): onScanResult() - address=D4:CB:08:6F:DA:AD, rssi=-82
D/BeaconService( 7140): got record
D/BeaconParser( 7140): This is not a matching Beacon advertisement.  (Was expecting be ac.  The bytes I see are: 0201061aff0000001012f234454cf6d4a0fadf2f4911ba9ffa600010001b90000000000000000000000000000000000000000000000000000000000000000

The first snippet shows a successful decoding of a bluetooth device that is recognized as a beacon. The second snippet shows the detection of a bluetooth device that is NOT recognized as a beacon. If you don't see any snippets like either, then that indicates that the service is not running, or that it is not detecting bluetooth devices at all.

Once you get a LogCat capture like this, please add an excerpt of it to your question, which can help troubleshoot further.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!