Scan for beacons from device with no BLE

Is there a method i can call to start monitoring for all Estimote beacons from a device that HAS BLUETOOTH BUT NO BLE?

I haven’t been able to find any documentation for this.

This is the code im using in android to start scanning and then start the monitoring listener. Any help here will be appreciated.

if (beaconManager.hasBluetooth()) {
    beaconManager.connect(new BeaconManager.ServiceReadyCallback() {
        @Override
        public void onServiceReady() {
            try {
                Log.d(TAG, "serviceReady");
                beaconManager.startMonitoring(ALL_ESTIMOTE_BEACONS);
            } catch (RemoteException e) {
                Log.e(TAG, "Cannot start ranging", e);
            }
        }
    });
}

Unfortunately, Bluetooth LE is a hard requirement to be able to detect beacons. There’s no way around that.

Well the detection is indeed possible with normal Bluetooth Scan (As you can see in the picture Sony Xperia M Bluetooth v4.0, A2DP)

The real question is if there is some way i can get the Major and Minor details from the beacon after normal bluetooth detection? Does estimote has nomal scan (not BLE) integrated in the API.

I can see you are getting RSSI. Do you also get the data payload? If so, you can easily decode it to get UUID, Minor and Major.

What do you mean exactly with Data Payload? thanks

Looks like that by scanning you’re getting some bluetooth packets. I assumed that, by the fact that it shows you received signal strength for every packet. By payload I mean, what those packets contain. It’s binary data which presnted in hex may look for example like this:

4C00 02 15 B9407F30F5F8466EAFF925556B57FE6D ED4E 8931 B6

I havent been able to get anything but the MacAddress and the name of the device, i think i will have to go with MacAddress and do some kind of patch around that.

Thanks anyways.

Sony Xperia M does have Bluetooth Low Energy, that’s why you’re getting scan results.

Did the beaconManager.hasBluetooth() tell you your Xperia doesn’t support Bluetooth LE?

The experia M doesn’t have BLE, http://www.gsmarena.com/sony_xperia_m-5497.php, also, when i start the app, the services can’t start monitoring for beacons, and it works on my S6.

I assure you, if it didn’t have BLE, it wouldn’t detect beacons no matter what app/scanner (:

Bluetooth 4.0, Bluetooth Smart, Bluetooth Low Energy are all the same technology, it’s just known under all these names.

Im a little confused, i get the part that Bluetooth Low Energy aka SMART is a part of Bluetooth 4.0 specification, but how come on Xperia device when running beaconManager.hasBluetooth() it takes me to the else condition. Do you think this is a hardware issue? The same code is running fine in GalaxyS6 and GalaxyS5 and finding beacons and entering geofence works just fine.

When running

    if (beaconManager.hasBluetooth()) {
        Log.d(TAG, "Device has BLE");
        beaconManager.connect(new BeaconManager.ServiceReadyCallback() {
            @Override
            public void onServiceReady() {
                try {
                    Log.d(TAG, "serviceReady");
                    beaconManager.startMonitoring(ALL_ESTIMOTE_BEACONS);
                } catch (RemoteException e) {
                    Log.e(TAG, "Cannot start ranging", e);
                }
            }
        });
    }
    else{
        Log.d(TAG, "Device doesnt has BLE");
    }

11-20 08:51:57.975 11092-11092/roneskinder.x111 D/roneskinder.x111.estimote_monitor.BeaconsMonitoringService: Device doesnt has BLE

Interesting. This means that the Android API reports your Xperia as not BLE-capable, even if it is. You can try commenting out the if statement for a moment and seeing if despite this you can actually detect beacons. If you can, you’ll need to add an exception to your if condition for Xperia.

I removed the if statement to see if it detected beacons, but what it actually happens is that the line beaconManager.startMonitoring(ALL_ESTIMOTE_BEACONS); never gets called, so it never start to scan for beacons, this is the new code,

beaconManager.connect(new BeaconManager.ServiceReadyCallback() {
    @Override
    public void onServiceReady() {
        try {
            Log.d(TAG, "serviceReady");
            beaconManager.startMonitoring(ALL_ESTIMOTE_BEACONS);
        } catch (RemoteException e) {
            Log.e(TAG, "Cannot start ranging", e);
        }
    }
});

11-23 08:44:02.988 6896-6896/? D/roneskinder.x111.estimote_monitor.BeaconsMonitoringService: serviceReady << it goes this far but the beacon monitoring never start
11-23 08:44:03.468 821-1243/? I/ActivityManager: START u0 {cmp=roneskinder.x111/.activities.ActivityLogin} from pid 6896
11-23 08:44:03.689 6447-6927/? I/Icing.InternalIcingCorporaProvider: Updating corpora: A: roneskinder.x111, C: MAYBE
11-23 08:44:04.019 821-821/? I/ActivityManager: START u0 {cmp=roneskinder.x111/.activities.ActivityMain} from pid 6896
11-23 08:44:04.149 1617-6956/? D/PackageBroadcastService: Received broadcast action=android.intent.action.PACKAGE_ADDED and uri=roneskinder.x111
11-23 08:44:04.259 6896-6896/? D/roneskinder.x111.tabs.FragmentPromotions: idUser: 2
11-23 08:44:04.319 1617-6964/? D/h: Processing package: roneskinder.x111
11-23 08:44:04.339 1617-6964/? D/GassUtils: Found app info for package roneskinder.x111:2. Hash: c09ee0dbd7e237338529fcf6b9b74a348889eecdf560358295e791bb0f81aec6
11-23 08:44:04.339 1617-6964/? D/h: Found info for package roneskinder.x111 in db.
11-23 08:44:04.620 821-874/? I/ActivityManager: Displayed roneskinder.x111/.activities.ActivityMain: +596ms (total +1s115ms)
11-23 08:44:05.180 1617-7003/? D/PackageBroadcastService: Received broadcast action=android.intent.action.PACKAGE_REPLACED and uri=roneskinder.x111