我试图使用altBeacon库查找iBeacon,但出现此错误:

01-31 11:34:08.628 31582-31582/es.deusto.beaconsapp2 I/art: Late-enabling -Xcheck:jni
01-31 11:34:08.700 31582-31582/es.deusto.beaconsapp2 W/System: ClassLoader referenced unknown path: /data/app/es.deusto.beaconsapp2-1/lib/arm
01-31 11:34:08.713 31582-31582/es.deusto.beaconsapp2 D/BeaconParser: Parsing beacon layout: m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25
01-31 11:34:08.715 31582-31582/es.deusto.beaconsapp2 D/BeaconParser: Parsing beacon layout: m:2-3=0x0215,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25
01-31 11:34:08.749 31582-31597/es.deusto.beaconsapp2 D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
01-31 11:34:08.772 31582-31582/es.deusto.beaconsapp2 W/BluetoothCrashResolver: Can't read macs from BluetoothCrashResolverState.txt
01-31 11:34:08.803 31582-31600/es.deusto.beaconsapp2 W/DistanceConfigFetcher: Can't reach server
01-31 11:34:08.804 31582-31600/es.deusto.beaconsapp2 W/ModelSpecificDistanceCalculator: Cannot updated distance models from online database at java.net.UnknownHostException: Unable to resolve host "data.altbeacon.org": No address associated with hostname
01-31 11:34:08.892 31582-31597/es.deusto.beaconsapp2 I/Adreno-EGL: <qeglDrvAPI_eglInitialize:379>: QUALCOMM Build: 10/21/15, 369a2ea, I96aee987eb
01-31 11:34:08.895 31582-31597/es.deusto.beaconsapp2 I/OpenGLRenderer: Initialized EGL, version 1.4
01-31 11:34:08.985 31582-31582/es.deusto.beaconsapp2 D/BluetoothAdapter: STATE_ON
01-31 11:34:08.987 31582-31594/es.deusto.beaconsapp2 D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=6
01-31 11:34:08.989 31582-31594/es.deusto.beaconsapp2 W/Binder: Caught a RuntimeException from the binder stub implementation.
01-31 11:34:08.989 31582-31594/es.deusto.beaconsapp2 W/Binder: java.lang.SecurityException: Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission to get scan results
01-31 11:34:08.989 31582-31594/es.deusto.beaconsapp2 W/Binder:     at android.os.Parcel.readException(Parcel.java:1620)
01-31 11:34:08.989 31582-31594/es.deusto.beaconsapp2 W/Binder:     at android.os.Parcel.readException(Parcel.java:1573)
01-31 11:34:08.989 31582-31594/es.deusto.beaconsapp2 W/Binder:     at android.bluetooth.IBluetoothGatt$Stub$Proxy.startScan(IBluetoothGatt.java:772)
01-31 11:34:08.989 31582-31594/es.deusto.beaconsapp2 W/Binder:     at android.bluetooth.le.BluetoothLeScanner$BleScanCallbackWrapper.onClientRegistered(BluetoothLeScanner.java:324)
01-31 11:34:08.989 31582-31594/es.deusto.beaconsapp2 W/Binder:     at android.bluetooth.IBluetoothGattCallback$Stub.onTransact(IBluetoothGattCallback.java:56)
01-31 11:34:08.989 31582-31594/es.deusto.beaconsapp2 W/Binder:     at android.os.Binder.execTransact(Binder.java:453)


我下载了altBeacon库,并将其移至我的proyect的“库”文件夹中。然后,我将compile 'org.altbeacon:android-beacon-library:2+'行放入应用程序的gradle中。
我使用的类是:

     public class MainActivity extends Activity implements BeaconConsumer{


        private static final String TAG = "BeaconReferenceApp";
        private BeaconManager beaconManager;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            beaconManager = BeaconManager.getInstanceForApplication(this);
                beaconManager.getBeaconParsers().clear();
    //i think that i should use "0x0215"
                beaconManager.getBeaconParsers().add(new BeaconParser().
setBeaconLayout("m:2-3=0x0215,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25"));
                beaconManager.bind(this);

   //I link the activity with the layout
            setContentView(R.layout.activity_main);
        }

        @Override
        protected void onDestroy() {
            super.onDestroy();
            beaconManager.unbind(this);
        }


            @Override
            public void onBeaconServiceConnect() {
    //I use the ID of my beacon
                final Region region = new Region("myBeacons", Identifier.parse("A7AE2EB71F004168B99BA749BAC1CA64"), null, null);
                beaconManager.setMonitorNotifier(new MonitorNotifier() {
                    @Override
                    public void didEnterRegion(Region region) {
                    try {
                        Log.d(TAG, "didEnterRegion");
                        beaconManager.startRangingBeaconsInRegion(region);
                    } catch (RemoteException e) {
                        e.printStackTrace();
                    }
                }

                @Override
                public void didExitRegion(Region region) {
                    try {
                        Log.d(TAG, "didExitRegion");
                        beaconManager.stopRangingBeaconsInRegion(region);
                    } catch (RemoteException e) {
                        e.printStackTrace();
                    }
                }

                @Override
                public void didDetermineStateForRegion(int i, Region region) {

                }
            });

//i set the notifier
            beaconManager.setRangeNotifier(new RangeNotifier() {
                @Override
                public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
                    for (Beacon oneBeacon : beacons) {
                        Log.d(TAG, "distance: " + oneBeacon.getDistance() + " id:" + oneBeacon.getId1() + "/" + oneBeacon.getId2() + "/" + oneBeacon.getId3());
                        }
                    }
                });

                try {
                    beaconManager.startMonitoringBeaconsInRegion(region);
                } catch (RemoteException e) {
                    e.printStackTrace();
                }

            }
        }

最佳答案

Android 6现在要求扫描BLE信标的应用程序获得运行时访问位置的权限。

您可以在我的博客文章中阅读有关如何执行此操作的完整详细信息:

http://developer.radiusnetworks.com/2015/09/29/is-your-beacon-app-ready-for-android-6.html
}

10-02 08:29