我的活动只包含onCreate()
startService(new Intent(this, MyBeaconService.class));
MyBeaconService.class
public class MyBeaconService extends Service implements IBeaconConsumer{
private IBeaconManager iBeaconManager = IBeaconManager
.getInstanceForApplication(this);
public MyBeaconService() {
Log.i("MyBeaconService", "MyBeaconService");
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw null;
}
@Override
public void onIBeaconServiceConnect() {
Log.i("MyBeaconService", "onIBeaconServiceConnect");
iBeaconManager.setMonitorNotifier(new MonitorNotifier() {
@Override
public void didEnterRegion(Region region) {
Log.e("BeaconDetactorService", "didEnterRegion");
Log.i("BeaconDetactorService", "I just saw an iBeacon for the first time!");
Intent dialogIntent = new Intent(MyBeaconService.this, MyAdActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(dialogIntent);
}
@Override
public void didExitRegion(Region region) {
Log.e("BeaconDetactorService", "didExitRegion");
// logStatus("I no longer see an iBeacon");
}
@Override
public void didDetermineStateForRegion(int state, Region region) {
Log.e("BeaconDetactorService", "didDetermineStateForRegion");
// logStatus("I have just switched from seeing/not seeing iBeacons: "
// + state);
}
});
try {
iBeaconManager.startMonitoringBeaconsInRegion(new Region(
"myMonitoringUniqueId", null, null, null));
} catch (RemoteException e) {
e.printStackTrace();
}
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
Log.i("MyBeaconService", "onCreate");
iBeaconManager.bind(this);
}
}
问题是我无法检测到任何信标..我的意思是.. didEnterRegion
方法永远不会被调用..
请帮帮我..
感谢。
答案 0 :(得分:2)
一些提示:
确保您的移动设备可以使用Locate等现成应用程序查看您的信标。
确保您的调试行显示正在调用onIBeaconServiceConnect
。您的服务是否已经开始?
如果调用上述方法,请尝试使用以下代码打开库中的低级调试:iBeaconManager.setDebug(true)
并粘贴您在问题中看到的LogCat中的输出。
您正在使用的库已于2014年7月被Android Beacon Library弃用并取而代之。如果您打算继续使用信标进行开发,则切换到较新的库是明智的。它具有非常相似的语法和设计,并获得错误修复和持续支持。它还可以在开箱即用的情况下检测背景中的信标,而无需构建自己的服务。
注意:我已修改此答案以删除有关方法链接的提示,在这种情况下不应该这样做。
完全披露:我是Android Beacon Library开源项目的首席开发人员,也是问题中代码使用的原始库的作者。