Android 估算区域监控
Android Estimote Region Monitoring
我正在尝试将 Estimote SDK 添加到我的 Android 应用程序中。我已经很接近了,但是我在监控一个区域时遇到了一些麻烦。我正在 https://github.com/Estimote/Android-SDK.
GitHub 上关注 Estimote Android SDK 指南
由于某种原因,onEnteredRegion 和 onExitedRegion 方法根本没有触发。我希望他们在应用程序看到 Estimote 信标时随时触发。谢谢!
这是我目前的代码。没什么太复杂的:
public class MainActivity extends Activity {
private static final Region ALL_ESTIMOTE_BEACONS = new Region("regionId", "B9407F30-F5F8-466E-AFF9-25556B57FE6D", null, null);
BeaconManager beaconManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
beaconManager = new BeaconManager(this);
beaconManager.setBackgroundScanPeriod(TimeUnit.SECONDS.toMillis(1), 0);
beaconManager.setMonitoringListener(new MonitoringListener() {
@Override
public void onEnteredRegion(Region region, List<Beacon> beacons) {
builder.setTitle("Entered Region")
.setMessage("")
.setNeutralButton("OK", null);
AlertDialog dialog = builder.create();
dialog.show();
}
@Override
public void onExitedRegion(Region region) {
builder.setTitle("Exited Region")
.setMessage("")
.setNeutralButton("OK", null);
AlertDialog dialog = builder.create();
dialog.show();
}
});
}
protected void onStart() {
super.onStart();
try {
beaconManager.startMonitoring(ALL_ESTIMOTE_BEACONS);
}
catch (RemoteException e) {
}
}
}
尝试将其放入您的 onStart()
方法中:
beaconManager.connect(new BeaconManager.ServiceReadyCallback() {
@Override
public void onServiceReady() {
try {
beaconManager.startMonitoring(region);
} catch (RemoteException e) {
Log.d(TAG, "Error while starting monitoring");
}
}
您还需要记住在不再需要时断开与 BeaconManager 的连接,例如使用此 onDestroy
实施:
@Override
protected void onDestroy() {
beaconManager.disconnect();
super.onDestroy();
}
基本上,在beacon服务就绪后,需要启动测距和监控,利用上面的回调可以轻松实现。
我正在尝试将 Estimote SDK 添加到我的 Android 应用程序中。我已经很接近了,但是我在监控一个区域时遇到了一些麻烦。我正在 https://github.com/Estimote/Android-SDK.
GitHub 上关注 Estimote Android SDK 指南由于某种原因,onEnteredRegion 和 onExitedRegion 方法根本没有触发。我希望他们在应用程序看到 Estimote 信标时随时触发。谢谢!
这是我目前的代码。没什么太复杂的:
public class MainActivity extends Activity {
private static final Region ALL_ESTIMOTE_BEACONS = new Region("regionId", "B9407F30-F5F8-466E-AFF9-25556B57FE6D", null, null);
BeaconManager beaconManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
beaconManager = new BeaconManager(this);
beaconManager.setBackgroundScanPeriod(TimeUnit.SECONDS.toMillis(1), 0);
beaconManager.setMonitoringListener(new MonitoringListener() {
@Override
public void onEnteredRegion(Region region, List<Beacon> beacons) {
builder.setTitle("Entered Region")
.setMessage("")
.setNeutralButton("OK", null);
AlertDialog dialog = builder.create();
dialog.show();
}
@Override
public void onExitedRegion(Region region) {
builder.setTitle("Exited Region")
.setMessage("")
.setNeutralButton("OK", null);
AlertDialog dialog = builder.create();
dialog.show();
}
});
}
protected void onStart() {
super.onStart();
try {
beaconManager.startMonitoring(ALL_ESTIMOTE_BEACONS);
}
catch (RemoteException e) {
}
}
}
尝试将其放入您的 onStart()
方法中:
beaconManager.connect(new BeaconManager.ServiceReadyCallback() {
@Override
public void onServiceReady() {
try {
beaconManager.startMonitoring(region);
} catch (RemoteException e) {
Log.d(TAG, "Error while starting monitoring");
}
}
您还需要记住在不再需要时断开与 BeaconManager 的连接,例如使用此 onDestroy
实施:
@Override
protected void onDestroy() {
beaconManager.disconnect();
super.onDestroy();
}
基本上,在beacon服务就绪后,需要启动测距和监控,利用上面的回调可以轻松实现。