2016-04-21 60 views
0

我正在尝试使用Android信标库获取附近的信标列表。我正在关注这个sample,但作为一个新手,我发现它太复杂了。我不想在背景中检测到信标,我不想检测区域条目......我只想要列出实际可见的信标。 在我的MainActivity类的onCreate方法中,我只是添加了这段代码,并希望这将启动测距或监测,但是这没有发生。有人知道什么是问题或者如何使用这两个类?使用Altbeacon检测信标列表

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 

回答

1

如果您只想获取可见信标列表,您希望做信标“测距”。您不需要使用示例中提到的两个单独的Activity类。您可以将Ranging示例的相关部分复制到您自己的活动中。

所以做到这一点:

  1. 从类中删除,以MonitoringActivityRangingActivity的引用。

  2. 以下内容添加到您的类:

更改类定义为:

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)行内访问的内容。

+0

不推荐使用代码 – Fralec

相关问题