2016-04-21 2 views
0

Я пытаюсь получить список ближайших маяков с Android Beacon Library. Я следил за этим sample, но, как новичок, я нашел его слишком сложным. Я не хочу обнаруживать маяки в backgroun, я не хочу регистрировать записи в регионах ... Я просто хочу иметь список реальных видимых маяков. В методе onCreate моего класса MainActivity я просто добавил этот код и надеялся, что это запустит ранжирование или мониторинг, но этого не произошло. У кого-то есть и идея, в чем проблема или как использовать эти два класса?Определить список маяков с 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

Если вы просто хотите сделать, чтобы получить список видимых маяков, вы хотите сделать маяк «в пределах». Вам не нужно использовать два отдельных класса активности, упомянутые в примерах. Вы можете просто скопировать соответствующие части примера Ranging в свою собственную деятельность.

Так что это:

  1. Удалить ссылки на MonitoringActivity и RangingActivity из вашего класса.

  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); 

Add следующие методы в ваш класс:

@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