Я использую библиотеку AndroidIbeacon, выпущенную radiusnetworks, и я могу успешно запустить их демонстрационное приложение. Но когда я добавляю это к моему приложению, метод 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) {
}
}
}
Пожалуйста, помогите мне решить эту проблему. спасибо
Если манифестное слияние не работает, попробуйте это (сработало для меня):
Добавьте следующие объявления объявлений в свой AnroidManifest.xml, заменив {my app 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 package name}.DID_RANGING" />
<action android:name="{my app package name}.DID_MONITORING" />
</intent-filter>
</service>
Наиболее распространенной причиной этой проблемы является то, что правильные записи для запуска службы библиотеки не находятся в файле AndroudManifest.xml проекта. Ваш новый проект должен извлекать эти записи из манифеста библиотеки, используя функцию слияния манифеста.
Убедитесь, что вы выполнили инструкции по настройке здесь. Если вы используете Eclipse, проверьте, имеет ли проект project.properties manifestmerger.enabled=true
.