我正在使用android上的radius網絡中的IBeacon SDK。我目前在一個活動和一個服務中使用IBeaconManager。當應用程序第一次啓動時,該活動綁定其iBeaconManager對象,但不會調用onIBeaconServiceConnect
。呼叫前startRangingBeaconsInRegion(region)
任何範圍或監控功能拋出一個RemoteException:Android IBeaconManager未從活動連接
The IBeaconManager is not bound to the service. Call iBeaconManager.bind(IBeaconConsumer consumer) and wait for a callback to onIBeaconServiceConnect()
出人意料的是,iBeaconMananger.isBound(myActivity)
被返回true。
現在,當我開始我的服務(從我的活動中解除綁定並綁定到我的服務)時,綁定工作正常,我可以開始監視信標。如果接下來,我再次打開活動(從我的服務中解綁並綁定到我的活動之後),它現在也在我的活動中工作。
所以只有當應用第一次啓動時,onIBeaconServiceConnect()
不會被我的活動調用。
任何幫助,非常感謝。
更新
MyActivity
(BaseActivity
是Activity
一個子類):
public class MyActivity extends BaseActivity implements IBeaconConsumer {
private IBeaconManager iBeaconManager;
LocationManager locationManager;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.new_survey);
locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
...
iBeaconManager = IBeaconManager.getInstanceForApplication(this);
iBeaconManager.bind(this);
}
@Override
public void onIBeaconServiceConnect() {
Log.d("mytag","beacon service connected");
iBeaconManager.setRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Collection<IBeacon> iBeacons, Region region) {
Log.d("mytag","did range beacons");
});
}
}
你可以發佈你的活動代碼嗎? – davidgyoung
@davidgyoung我真的不能發佈我的活動,而不會混淆除iBeaconManager代碼以外的所有內容。它基本上是[範圍示例]的直接實現(http://developer.radiusnetworks.com/ibeacon/android/samples.html)。綁定在'onCreate'並實現'onIBeaconServiceConnect()' – KDaker
剛剛更新我的問題與代碼 – KDaker