在Android中没有调用onIBeaconServiceConnect()

时间:2014-05-13 06:49:26

标签: android ibeacon ibeacon-android

我正在使用由radiusnetworks发布的AndroidIbeacon库,我能够成功运行他们的演示应用程序。但是,当我向我的应用程序添加onIBeaconServiceConnect()方法时,不会调用它。

在我的代码下面,

 public class Sample extends Activity implements IBeaconConsumer {
  protected static final String TAG = "Sample";
  private IBeaconManager iBeaconManager = IBeaconManager
        .getInstanceForApplication(this);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity);
    iBeaconManager.bind(this);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    iBeaconManager.unBind(this);
}

@Override
public void onIBeaconServiceConnect() {
    iBeaconManager.setMonitorNotifier(new MonitorNotifier() {
        @Override
        public void didEnterRegion(Region region) {
            Log.i(TAG, "I just saw an iBeacon for the firt time!");
        }

        @Override
        public void didExitRegion(Region region) {
            Log.i(TAG, "I no longer see an iBeacon");
        }

        @Override
        public void didDetermineStateForRegion(int state, Region region) {
            Log.i(TAG,
                    "I have just switched from seeing/not seeing iBeacons: "
                            + state);
        }
    });

    try {
        iBeaconManager.startMonitoringBeaconsInRegion(new Region(
                "myMonitoringUniqueId", null, null, null));
    } catch (RemoteException e) {
    }
   }

  }

请帮我解决这个问题。感谢

3 个答案:

答案 0 :(得分:1)

如果显式合并不起作用,试试这个(为我工作):

将以下服务声明添加到AnroidManifest.xml,将{my app's package name}替换为Android应用程序的完全限定程序包名称。

    <service android:enabled="true"
        android:exported="true"
        android:isolatedProcess="false"
        android:label="iBeacon"
        android:name="com.radiusnetworks.ibeacon.service.IBeaconService">
    </service>    
    <service android:enabled="true" 
        android:name="com.radiusnetworks.ibeacon.IBeaconIntentProcessor">
            <meta-data android:name="background" android:value="true" />
        <intent-filter 
           android:priority="1" >
            <action android:name="{my app's package name}.DID_RANGING" />
            <action android:name="{my app's package name}.DID_MONITORING" />
        </intent-filter>
    </service>  

答案 1 :(得分:0)

此问题的最常见原因是启动库服务的正确条目不在项目AndroudManifest.xml文件中。您的新项目必须使用名为manifest merge的功能从库的清单中提取这些条目。

确保您已按照设置说明here进行操作。如果使用Eclipse,请验证project.properties是否为manifestmerger.enabled=true

答案 2 :(得分:0)

添加

manifestmerger.enabled=true
project.properties中的

为我工作!

Source