【问题标题】:android altbeacon bluetooth low energyandroid altbeacon 蓝牙低功耗
【发布时间】:2015-06-15 07:27:27
【问题描述】:

我正在尝试使用蓝牙低能量扫描信标和三星 Galaxy S5 上的 altbeacon-library,可能我没有正确理解它,或者我无法让它运行。

我的清单的一部分如下所示:

<uses-sdk android:minSdkVersion="18" android:targetSdkVersion="21" />

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

<application
....
<service
    android:name=".BeaconScanner"
    android:icon="@drawable/ic_launcher"
    android:label="BeaconScanner" >
</service>
....

我正在扫描服务中的信标:

public class BeaconScanner extends Service implements BeaconConsumer {

private BeaconManager beaconManager;
private DBHelper myDB;

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

      myDB = new DBHelper(this);
      if (Build.VERSION.SDK_INT >= 19 && getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {
          // BLE
          BeaconManager.setAndroidLScanningDisabled(true);
      } else {
          // kein BLE

      }
      beaconManager = BeaconManager.getInstanceForApplication(this);
      beaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25"));
      beaconManager.setForegroundBetweenScanPeriod(15000l);
      beaconManager.setBackgroundBetweenScanPeriod(15000l);
      beaconManager.bind(this);

      return Service.START_STICKY;
}

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

@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onBeaconServiceConnect() {
    beaconManager.setRangeNotifier(new RangeNotifier() {

        @Override
        public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
            if (beacons.size() > 0) {
                for(Beacon beacon : beacons)
                {
                    if (beacon != null && beacon.getId1() != null) {
                        System.out.println("id1: " + beacon.getId1().toString());
                        System.out.println("id2: " + beacon.getId2().toString());
                        System.out.println("id3: " + beacon.getId3().toString());
                        String majorMinor = beacon.getId2().toString() + "-" + beacon.getId3().toString();
                        System.out.println(majorMinor);
                        long count = myDB.beaconExists(majorMinor);
                        System.out.println(count);
                        if (count == 0) {
                            getAndInsertBeaconDataSet(myDB, majorMinor);
                            System.out.println("inserted beacon: " + majorMinor);
                        }
                    }
                }
            }
        }
    });

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

    }
}

private Boolean getAndInsertBeaconDataSet(DBHelper dbHelper, String beaconId) {
    try {
        BeaconGetter beaconGetter = new BeaconGetter();
        return beaconGetter.execute(dbHelper, beaconId).get();
    } catch (Exception e) {
        return false;
    }
}

}

我检查了我的手机是否能够使用蓝牙低功耗,确实如此。 如果我的蓝牙未激活,我会从库中收到此消息:

06-15 09:16:46.399: W/CycledLeScanner(22748): Bluetooth is disabled.  Cannot scan for beacons.

如果我激活蓝牙,则库工作正常,并且所有信标都在范围内。

所以也许我理解错了,我需要在android上激活蓝牙才能使用蓝牙低功耗吗?我认为可以在不激活蓝牙的情况下获得蓝牙信号?

如果可以在不激活蓝牙的情况下扫描低功耗蓝牙:我做错了什么?

任何帮助表示赞赏,在此先感谢。

罗特曼

【问题讨论】:

    标签: android bluetooth bluetooth-lowenergy altbeacon


    【解决方案1】:

    您必须激活蓝牙才能使用 BLE(低功耗)。否则您无法扫描信标。此外,您的设备必须支持 BLE,大多数现代设备都支持它。

    【讨论】:

      【解决方案2】:

      我想有一种方法可以在不激活蓝牙的情况下使用 BLE 扫描信标。 检查图像:我不知道怎么做,但我推测一定有办法

      【讨论】:

      • 我想通了。我们必须编写一个系统应用程序并使用 > BluetoothAdapter.enableBLE() 方法。此方法适用于使用低功耗蓝牙扫描附近设备的特殊/系统应用程序,这主要用于定位准确性。即使在设备设置中关闭蓝牙。然后我们可以使用 > BluetoothAdapter.LeScanCallback 回调来获取设备详细信息。谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 2016-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-27
      相关资源
      最近更新 更多