簡體   English   中英

使用Altbeacon檢測信標列表

[英]Detect list of beacon with Altbeacon

我正在嘗試使用Android信標庫獲取附近的信標列表。 我一直在跟蹤此示例,但是作為一個新手,我覺得它太復雜了。 我不想在backgroun中檢測信標,我不想檢測區域條目...我只想擁有實際可見信標的列表。 在我的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

如果您只想獲取可見信標的列表,則想進行信標“范圍調整”。 您無需使用示例中提到的兩個單獨的Activity類。 您可以僅將Ranging示例的相關部分復制到自己的Activity中。

這樣做:

  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)行內訪問的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM