我想用Eddystone唤醒我的应用程序,但是当我的手机接近Eddystone的信号时没有任何反应。我用Android Beacon库做到了。它就像吹了一样:
`
onCreate(){
mBeaconManager = BeaconManager.getInstanceForApplication(this);
// Detect the main Eddystone-UID frame:
mBeaconManager.getBeaconParsers().add(new BeaconParser().
setBeaconLayout(BeaconParser.EDDYSTONE_UID_LAYOUT));
mBeaconManager.setBackgroundBetweenScanPeriod(50);
mBeaconManager.setBackgroundScanPeriod(50);
mBeaconManager.setForegroundBetweenScanPeriod(50);
mBeaconManager.setForegroundScanPeriod(50);
mBeaconManager.setBackgroundBetweenScanPeriod(50);
mBeaconManager.setForegroundScanPeriod(50);
mBeaconManager.applySettings();
mBeaconManager.bind(this);
}`
Android.xml:
<application
android:name="com.example.MyApplicationName"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<!-- Note: the singleInstance below is important to keep two copies of your activity from getting launched on automatic startup -->
<activity
android:launchMode="singleInstance"
android:name="com.example.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
以前是否有人做过,请帮助我。感谢
答案 0 :(得分:1)
是的,可以使用Android Beacon Library使用Eddystone-UID唤醒应用程序。它的工作方式与AltBeacon或iBeacon相同。
实现这一目标的最简单方法是从这里的参考应用程序开始:
https://github.com/altbeacon/android-beacon-library-reference
您需要做的唯一修改是为Eddystone-UID添加信标解析器:
mBeaconManager.getBeaconParsers().add(new BeaconParser().
setBeaconLayout(BeaconParser.EDDYSTONE_UID_LAYOUT));
查看问题中的代码,将扫描周期设置为50将是一个问题,因为50ms不足以可靠地检测信标。我会删除这些自定义扫描周期配置并使用默认值。
一些提示: