标签: android-ibeacon

在Android 5.0 Lollipop上减少了BLE startScan检测到的设备

精简版:

在我使用Android 5.0 Lollipop的测试中,我注意到android.bluetooth.le.BluetoothLeScanner检测BLE设备的频率低于Android 4.4 KitKat.为什么这样,还有其他选择吗?

长版:

我正在开发一款Android应用程序,专门用于Nexus 7平板电脑,专注于检测蓝牙低功耗(BLE)设备.该应用程序主要感兴趣的是信标的RSSI值,以确定它们与平板电脑的接近程度.这意味着我不需要连接到BLE设备,因为在检测到设备时RSSI值会传递给扫描回调.

在Android 4.4 KitKat中,当我调用时BluetoothAdapter.startLeScan(LeScanCallback),对于每个检测到的BLE设备,我的回调仅被调用ONCE.(我已经看到一些讨论声称每个设备的行为可能不同)但是,我对不断变化的RSSI值感兴趣,所以目前推荐的方法是以设定的间隔(在我的情况下为250ms)连续执行startLeScan和stopLeScan:

public class TheOldWay {

    private static final int SCAN_INTERVAL_MS = 250;

    private Handler scanHandler = new Handler();
    private boolean isScanning = false;

    public void beginScanning() {
        scanHandler.post(scanRunnable);
    }

    private Runnable scanRunnable = new Runnable() {
        @Override
        public void run() {
            BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();

            if (isScanning) {
                adapter.stopLeScan(leScanCallback);
            } else if (!adapter.startLeScan(leScanCallback)) {
                // an error occurred during startLeScan
            }

            isScanning = …
Run Code Online (Sandbox Code Playgroud)

rssi bluetooth-lowenergy ibeacon-android android-ibeacon android-5.0-lollipop

20
推荐指数
2
解决办法
2万
查看次数

Android BTLE - >找不到回调包装器

我在我的应用程序中使用Android Beacon Library,我逐字逐句地复制了他们的测距示例,但我不断收到您在代码下方看到的错误.任何帮助将不胜感激,我刚刚进入BTLE/beacons

package com.example.josh.beacons;

import android.os.Bundle;
import android.os.RemoteException;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import org.altbeacon.beacon.Beacon;
import org.altbeacon.beacon.BeaconConsumer;
import org.altbeacon.beacon.BeaconManager;
import org.altbeacon.beacon.BeaconParser;
import org.altbeacon.beacon.RangeNotifier;
import org.altbeacon.beacon.Region;

import java.util.Collection;

public class MainActivity extends AppCompatActivity implements BeaconConsumer {
    protected static final String TAG = "RangingActivity";
    private BeaconManager beaconManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        beaconManager = BeaconManager.getInstanceForApplication(this);
        beaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25"));
        beaconManager.bind(this);
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        beaconManager.unbind(this);
    }
    @Override
    public void onBeaconServiceConnect() {
        beaconManager.setRangeNotifier(new RangeNotifier() {
            @Override
            public void didRangeBeaconsInRegion(Collection<Beacon> …
Run Code Online (Sandbox Code Playgroud)

android android-ibeacon altbeacon

11
推荐指数
2
解决办法
9692
查看次数

如何在不使用任何库的情况下检测android中的IBeacon

我是Ibeacon的新手,我想知道我们可以在不使用任何SDKLibrary或库的情况下检测到android中的Ibeacon,任何人都可以提供示例示例.

我知道像Radius Networks这样的图书馆.但我不想使用任何图书馆

android ibeacon ibeacon-android android-ibeacon

8
推荐指数
1
解决办法
2万
查看次数

如何在Android中使用Estimote SDK获取Beacon的唯一ID

我正在开发一个我正在使用Beacons的应用程序.我已经完成了相关的Estimote SDK.现在问题是我需要知道特定灯塔的唯一ID.假设我有3个信标,并且所有信标都存在于设备的范围内.现在我想根据信标的唯一ID执行不同的功能.为此,我需要知道每个灯塔的唯一ID.目前我正在为Beacon提供UUID,只是检查它是否在设备区域内.我的代码如下: -

private static final String ESTIMOTE_PROXIMITY_UUID = "XYZ";
private static final Region ALL_ESTIMOTE_BEACONS = new Region("regionId",ESTIMOTE_PROXIMITY_UUID, null, null);

beaconManager.setMonitoringListener(new MonitoringListener() {

            @Override
            public void onExitedRegion(Region region) {
            //Region Exited
            }

            @Override
            public void onEnteredRegion(Region arg0, List<Beacon> arg1) {
                // TODO Auto-generated method stub
                //Do something ...
            }
        });
Run Code Online (Sandbox Code Playgroud)

现在我需要以编程方式获取Beacon的唯一ID,以便我可以根据ID做出决定.请帮我整理一下.任何帮助都会很明显.谢谢.

android ibeacon ibeacon-android estimote android-ibeacon

7
推荐指数
1
解决办法
4580
查看次数

如何使用Altbeacon android库检测多个信标?

我在Android设备上使用AltBeacon示例应用程序 - altbeacon.org提供的示例应用程序位于:https://github.com/AltBeacon/android-beacon-library-reference

但是,启动时应用程序只检测并显示一个信标.我的Android设备附近有大约5个信标.我如何检测所有信标?

在RangingActivity.java中,我注意到当信标出现时正在调用此方法:

public void onBeaconServiceConnect() {
    beaconManager.setRangeNotifier(new RangeNotifier() {
    @Override 
    public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
        if (beacons.size() > 0) {
            EditText editText = (EditText) RangingActivity.this.findViewById(R.id.rangingText);                    
                    Beacon firstBeacon = beacons.iterator().next();
                    logToDisplay("The first beacon " + firstBeacon.toString() + " is about " + firstBeacon.getDistance() + " meters away.");
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我修改了迭代器以在while循环中读取集合,如下所示:

     Beacon firstBeacon;
     while(beacons.iterator().hasNext()){
                firstBeacon = beacons.iterator().next();
                logToDisplay("The first beacon " + firstBeacon.toString() + " is about " + firstBeacon.getDistance() + " meters …
Run Code Online (Sandbox Code Playgroud)

android ibeacon ibeacon-android android-ibeacon altbeacon

7
推荐指数
1
解决办法
3675
查看次数

如何增加Android中BLE设备的扫描周期?

我试图实现信标扫描程序,我希望android BLE服务的行为类似于iOS"didRangeBeacons"方法,即它应该每秒调用一次.但在android中没有这样的方法.但是在android中,有一种"leScanCallback"方法可以非常频繁地调用,扫描周期不到一秒.那么有什么方法可以在leScanCallback方法中实现我的功能并将其扫描周期间隔增加到1秒,这样它的行为类似于iOS的"didRangeBeacons"方法.

*在android中连续扫描信标并增加其扫描间隔也是不好的编程?

提前致谢

android bluetooth-lowenergy ibeacon-android android-ibeacon

6
推荐指数
1
解决办法
4857
查看次数

未调用AltBeacon onBeaconServiceConnect

我使用其示例坚持使用AltBeacon库实现简单的Beacon监视器.简而言之:我使用其参考应用程序,下载并在我的三星Galaxy S2上使用CM(Android 4.4.4)集成了其最新版本和运行应用程序.虽然调用了bindService,但我看到onBeaconServiceConnect回调从未调用过.我相信应该调用onBeaconServiceConnect以使应用程序正常工作.

我试过设置beaconManager.debug = true; 但它没有向我显示任何新日志(可能是因为我正在使用来自网站的预编译库).

此外,我已经检查了我的固件/硬件是否存在问题 - 但我发现它能够监控来自Google Play的其他应用程序的信标.我有iPhone和MacBook以及另外一个Android设备,所以我可以模拟让AltBeacon捕获它所需的任何传输信号.

有人能帮我吗?我很感激你给我的任何线索!

android ibeacon ibeacon-android android-ibeacon altbeacon

6
推荐指数
1
解决办法
3261
查看次数

iBeaconGap Cordova插件基于RadiusNetwork Android库

我正在尝试使用以下iBeaconGap cordova插件,它是RadiusNetworks Android iBeacons库的包装器.我的手机已准备好LE蓝牙,并通过Play商店的RadiusNetwork Detector应用程序检测我的信标.

但是将它添加到我的普通cordova项目会导致以下日志消息:"尝试通过intent回调:ComponentInfo {com.tecalliance.lucidbeacon/com.radiusnetworks.ibeacon.IBeaconIntentProcessor}".看起来它的起源是RadiusNetworks 的Callback.java类.

插件安装程序已正确更新AndroidManifest.xml文件:

<service android:enabled="true" android:exported="true" 
         android:name="com.radiusnetworks.ibeacon.IBeaconIntentProcessor">

         <meta-data android:name="background" android:value="true" />
         <intent-filter android:priority="1">
            <action android:name="com.thinketg.plugin.ibeacongap.DID_RANGING" />
            <action android:name="com.thinketg.plugin.ibeacongap.DID_MONITORING" />
         </intent-filter>
</service>

<service android:enabled="true" android:exported="true" 
         android:isolatedProcess="false" android:label="iBeacon" 
         android:name="com.radiusnetworks.ibeacon.service.IBeaconService" />

<service android:enabled="true"   
         android:name="com.radiusnetworks.ibeacon.IBeaconIntentProcessor">

         <meta-data android:name="background" android:value="true" />
         <intent-filter android:priority="1">
            <action android:name="com.thinketg.plugin.ibeacongap.DID_RANGING" />
            <action android:name="com.thinketg.plugin.ibeacongap.DID_MONITORING" />
         </intent-filter>
</service>
Run Code Online (Sandbox Code Playgroud)

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
Run Code Online (Sandbox Code Playgroud)

我使用github上建议的插件,但是getBeacons()和failedGettingBeacons()都没有被调用.

function startBeaconScans() {
    iBeaconGap.getBeacons(gotBeacons, failedGettingBeacons);
}
Run Code Online (Sandbox Code Playgroud)

不知道怎么解决这个问题?提前致谢 ;-)

android bluetooth-lowenergy ibeacon-android cordova-plugins android-ibeacon

5
推荐指数
0
解决办法
553
查看次数

如何在我的项目中集成Android Beacon Library?

我在网上找到了这个Android Beacon Library,我发现它非常好.但我想在我的应用程序中集成开源项目,并在代码中进行一些修改,以便在信标检测和其他一些场景中显示警报.其实我是android的新蜜蜂,所以如果有人可以帮我解决如何在应用程序中集成修改后的代码?提前致谢.

ibeacon-android android-ibeacon

5
推荐指数
1
解决办法
3364
查看次数

Android Beacon Library真的支持后台扫描吗?

我使用的Android灯塔图书馆与BLE扫描例子.它在前台工作正常,可用于监控和测距.但是,对于后台,它仅适用于在应用程序中按"主页"并关闭屏幕的情况.当我从任务切换器中删除应用程序时,它无法正常工作.在这个例子中,我找不到像Service这样的东西来让事情在后台工作.

问题:

  1. 如果应用程序在任务切换器中被杀死,Android Beacon Library是否支持后台扫描?
  2. 如果是这样,怎么办?任何例子?

android ibeacon ibeacon-android android-ibeacon

5
推荐指数
1
解决办法
5231
查看次数