簡體   English   中英

Java類中的Android-AltBeacon-庫集成

[英]Android-AltBeacon-library intergration in a java class

我正在嘗試將altbeacon函數集成到android studio中的java類中,但是由於getActivity而出現錯誤。 我想在onahter活動中從此類創建一個對象。

所以知道如何運作嗎?

當我在受保護的void onCreate(Bundle savedInstanceState)下的活動中添加altbeacon類時,它可以完美工作。

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

在制作擴展BeaconConsumer的POJO時,您必須做兩件事:

  1. 將對Android上下文的引用傳遞給POJO。
  2. 將方法bindService,unbindService,getApplicationContext鏈接到上面的Context。

像這樣:

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

    ...

}

暫無
暫無

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

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