2014-05-08 44 views
0

我正在使用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()不會被我的活動調用。

任何幫助,非常感謝。


更新

MyActivityBaseActivityActivity一個子類):

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

     }); 
    } 
} 
+0

你可以發佈你的活動代碼嗎? – davidgyoung

+0

@davidgyoung我真的不能發佈我的活動,而不會混淆除iBeaconManager代碼以外的所有內容。它基本上是[範圍示例]的直接實現(http://developer.radiusnetworks.com/ibeacon/android/samples.html)。綁定在'onCreate'並實現'onIBeaconServiceConnect()' – KDaker

+0

剛剛更新我的問題與代碼 – KDaker

回答

0

我結束了移動beaconManager我Application子類,而不是在我的活動使用它。