Интеграция Android-AltBeacon-библиотеки в Java-класс - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь интегрировать функцию altbeacon в Java-класс в Android Studio, но я получаю ошибку из-за getActivity. Я хочу создать объект из этого класса в onahter Деятельность ..

так есть идеи, как это может работать?

Это прекрасно работает, когда я добавляю класс altbeacon в действие под защищенной пустотой onCreate(Bundle savedInstanceState).

public class detectRoom  implements BeaconConsumer {

    private List <IBeaconSensor> beaconList = new ArrayList <IBeaconSensor> ();

    private BeaconManager beaconManager;

    public detectRoom() {
     name="detectRoom";
    }
    private String detectRoomName(String raum) {
        return raum;
    }

    public void detectRoomMet () {

        for (int i = 0;i< beaconList.size() ;i++){

            if(beaconList.get(i).getName().equals("45")) {    // 6 = Minor of Ibeacon
                detectRoomName("Room3");

            }

            if(beaconList.get(i).getName().equals("55")) {
                detectRoomName("Room2");

            }

            if(beaconList.get(i).getName().equals("85")) {
                detectRoomName("Room1");

            }

            else {
                detectRoomName("UnknowRoom");

            }



        }
    }

    @Override
    public void onBeaconServiceConnect() {

        beaconManager = new BeaconManager(getApplicationContext());
        beaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"));
        this.beaconManager.setRangeNotifier(new RangeNotifier() {
            @Override
            public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
                if (beacons.size() > 0) {
                    beaconList.clear();
                    for(Iterator<Beacon> iterator = beacons.iterator(); iterator.hasNext();) {

                        beaconList.add(new IBeaconSensor (iterator.next().getId3().toString()));
                    }

                }
            }
        });
        try {
            this.beaconManager.startRangingBeaconsInRegion(new Region("MyRegionId", null, null, null));
        } catch (RemoteException e) {
            e.printStackTrace();
        }
    }

    @Override
    public Context getApplicationContext() {
        return null;
    }

    @Override
    public void unbindService(ServiceConnection serviceConnection) {
        this.beaconManager.unbind(this);
    }

    @Override
    public boolean bindService(Intent intent, ServiceConnection serviceConnection, int i) {
        return false;
    }

    public void bindBeacon() {
        beaconManager.bind(this);
    }

    public void unBindBeacon() {
        beaconManager.unbind(this);
    }
}

1 Ответ

0 голосов
/ 08 марта 2019

При создании POJO, расширяющего BeaconConsumer, вы должны сделать две вещи:

  1. Передать ссылку на контекст Android в POJO.
  2. Привязать методы bindService, unbindService, getApplicationContext к описанному выше контексту.

Как это:

public class Pojo extends BeaconConsumer() {
    private Context mContext;
    public Pojo(Context context) {
      mContext = context;
    }
    @Override
    public Context getApplicationContext() {
        return mContext.getApplicationContext();
    }

    @Override
    public void unbindService(ServiceConnection serviceConnection) {
        mContext.unbindService(serviceConnection);
    }

    @Override
    public boolean bindService(Intent intent, ServiceConnection serviceConnection, int i) {
        return mContext.bindService(intent, serviceConnection, i);
    }

    ...

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...