0

Android Beacon-Library와 함께 작동하여 Beacon을 검색하고 정보를 표시합니다. 백그라운드 모드에서 사용자에게 알림을 보내려고합니다. 하지만 개발 과정에서 문제가 발생했습니다.부트 스트랩 탐지기가 나중에 추가 된 비컨을 인식하지 못함 | Android-Beacon-Library

이 시점에서 내 모르는 때문에 내 Bootstrapnotifier가 응용 프로그램 시작 후 찾아야 할 영역을 추가하고 싶습니다. 내가 비콘을 알고 후 내 목록을 가서 추가

mRegionBootstrap = new RegionBootstrap(this, new ArrayList<Region>()); 

: : 실행의 모든에

for(BeaconModel beacon : mBeaconList) { 
    mRegionBootstrap.addRegion(new Region(beacon.getId(), 
    Identifier.parse(beacon.getUuid()), 
    Identifier.fromInt(beacon.getMajor()),  
    Identifier.fromInt(beacon.getMinor()))); 
} 

내 응용 프로그램에서

에서 onCreate 방법 :

내 코드입니다 잘 작동합니다, 표지판이 발견되고 정보를 표시 할 수 있습니다.

하지만 앱을 백그라운드로 이동하면 백그라운드 서비스가 그 앱을 인식하지 못합니다.

백그라운드 서비스가 생성자의 배열 만 찾습니다.

비콘을 나중에 백그라운드 서비스에 추가하는 방법이 있습니까?

답변

0

비콘 서비스에 연결 한 후에 만 ​​mRegionBootstrap.addRegion(...) 메서드를 사용할 수 있습니다. 그렇지 않으면 호출이 무시되고 로그에 Can't add bootstrap region이 표시됩니다.

나는 그게 무슨 일이 일어나고 있는지 의심 스럽다. 보통 연결을 설정하는 데는 1 초도 채 걸리지 않지만 백그라운드에서 시작된 앱의 경우 타이밍이 다를 수 있습니다. 불행히도 onBeaconServiceConnected 콜백은 BootstrapNotifier 인터페이스의 일부가 아니므로 언제 수행해야하는지 알기가 쉽지 않습니다.

지역을 알기 전까지는 RegionBootstrap을 생성하는 것을 지연시킬 수 있습니다. 이전에 구성 할 이유가 없습니다.

+0

빠른 답변 감사드립니다. 나중에 지역을 알고있는 지점에서 Regionbootstrap을 만들려고했습니다. 하지만 다른 문제가 발생했습니다. 첫 번째 앱 시작시 모든 것이 올바르게 작동하지만 두 번째로는 더 이상 비컨을 찾지 않고 대신 범위 내의 모든 신호에 대한 상태가 0으로 설정되었습니다. 내 문제에 대한 다른 해결책을 발견했습니다. 빈 목록 대신 빈 영역으로 Regionbootstrap을 만들면 작동합니다. – Toby