我正在尝试使用Android Beacon Library获取附近信标的列表。我跟着这个sample,但作为一个新手我发现它太复杂了。我不想在背景中检测到信标,我不想检测区域条目...我只想获得实际可见信标的列表。 在我的MainActivity类的onCreate方法中,我刚刚添加了此代码,并希望这将启动测距或监控,但这并没有发生。是否有人知道问题是什么或如何使用这两个类?
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
MonitoringActivity monitoringActivity = new MonitoringActivity();
RangingActivity rangingActivity = new RangingActivity();
}
@Override
答案 0 :(得分:1)
如果您只想获得可见信标列表,则需要执行信标“测距”。您不需要使用示例中提到的两个单独的Activity类。您只需将Ranging示例的相关部分复制到您自己的Activity中即可。
这样做:
从班级中删除对MonitoringActivity
和RangingActivity
的引用。
将以下内容添加到您的课程中:
将您的班级定义更改为:
public class MainActivity extends AppCompatActivity implements BeaconConsumer {
将以下代码添加到onCreate
方法中:
BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this);
// To detect proprietary beacons, you must add a line like below corresponding to your beacon
// type. Do a web search for "setBeaconLayout" to get the proper expression.
// 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
public void onBeaconServiceConnect() {
BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this);
beaconManager.setRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
for (Beacon beacon : beacons) {
Log.i("MainActivity", "I see a beacon that is about "+beacon.getDistance()+" meters away.");
}
}
});
try {
beaconManager.startRangingBeaconsInRegion(new Region("myRangingUniqueId", null, null, null));
} catch (RemoteException e) { }
}
可见信标列表是for (Beacon beacon : beacons)
行内访问的内容。