在 android 上检测到蓝牙关闭的 altbeacon

Detect an altbeacon with bluetooth off on android

作为一名 android 开发人员,我正在创建一个应用程序以应对使用 altbeacons 库读取 ibeacons 的挑战。

我能够识别 UUID、Major、Minor ..但是在测试中要求在关闭蓝牙的情况下进行读取,搜索后什么也没找到,不知何故可以这样做吗?

请帮助我,对不起我的英语。

谢谢!

我正在使用 didRangeBeaconsInRegion 检测

public void onBeaconServiceConnect() {

    beaconManager.removeAllMonitorNotifiers();

    beaconManager.removeAllRangeNotifiers();
    beaconManager.addRangeNotifier(new RangeNotifier() {
        @Override
        public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
            if (beacons.size() > 0) {
                Log.i(TAG, "my first beacon "
                        + beacons.iterator().next().getId1() + " "
                        + beacons.iterator().next().getId2() + " "
                        + beacons.iterator().next().getId3());

            }
        }
    });

    try {
        beaconManager.startRangingBeaconsInRegion(new Region("myRangingUniqueId", null, null, null));
    } catch (RemoteException e) {

    }
}

明确一点:如果蓝牙真的断电,绝对没有办法检测到蓝牙信标。如果你仔细想想,这个问题甚至没有意义。你怎么能在无线电接收器关闭的情况下接收到无线电信号?

这里唯一需要注意的是,某些 Android 设备型号和操作系统版本上的快速面板蓝牙图标并不会在您移动时真正关闭无线电将图标移到关闭位置——它仍然可用于扫描(信标检测所需的一切),但不适用于蓝牙 LE 连接或蓝牙经典配对。但并非所有 Android 设备都以这种方式运行。对于那些这样做的人,当它说蓝牙关闭时,指示器只是在告诉你错误。

我的例子:

@Override
public void onBeaconServiceConnect() {
        beaconManager.addMonitorNotifier(new MonitorNotifier() {
        @Override
        public void didEnterRegion(Region region) {
            Log.i(TAG, " enter region");
            try {
                beaconManager.startRangingBeaconsInRegion(region);
                Log.i(TAG, "region beacon" + region.getId1() + " " + region.getId2() + " " + region.getId3());
            } catch (RemoteException e) {
                e.printStackTrace();
            }
        }

        @Override
        public void didExitRegion(Region region) {
            Log.i(TAG, "I no longer see an beacon");
            try {
                beaconManager.stopRangingBeaconsInRegion(region);
            } catch (RemoteException e) {
                e.printStackTrace();
            }
        }

        @Override
        public void didDetermineStateForRegion(int state, Region region) {
            Log.i(TAG, "I have just switched from seeing/not seeing beacons: "+ state);
        }
    });

}

当我进入 didRangeBeaconsInRegion 时,我得到了 major 和 minor