Я использую Android Studio (IntelliJ) IDE для создания приложения для Android, которое использует AltBeacon для обнаружения маяков. Я пробую этот пример и пытаюсь понять его основы. Я запускаю образец симулятора Android (ADT 1.1.0 и gradle 2.2.1). Когда я включаю TimedBeaconSimulator
, я вижу их после нажатия на Start Ranging
. Есть некоторые вещи, которые я заметил, которые немного сбивают с толку -
а) Всегда показывает Id3:2
и Id3:3
, и никогда 1 и 4, хотя все они добавлены в список маяков.
б) Когда приложение закрывается, оно вылетает, не знаю почему.
c) Насколько я понимаю, MonitoringActivity
предназначен для обнаружения маяков в фоновом режиме. Но этого не происходит. Разве он не создан для обнаружения симулированных маяков (которые являются частью выборки)? Я попытался добавить эти строки в AndroidManifest.xml
(ссылка), но ниже ошибка при сборке gradle -
Error:(35, 41) Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : Attribute service#org.altbeacon.beacon.service.BeaconService@exported value=(true) from AndroidManifest.xml:35:41
is also present at org.altbeacon:android-beacon-library:2.1.4:27:13 value=(false)
Suggestion: add 'tools:replace="android:exported"' to <service> element at AndroidManifest.xml:35:9 to override
Пожалуйста, помогите с этим. Я очень новичок в маяках и пытаюсь понять эти концепции.
Редактировать
Дэвид, чтобы обойти проблему сбоя приложения из-за помех сканированию Android L BLE, я добавил эту проверку в свой код:
public boolean IsBLESupportedOnDevice(Context context) {
if (Build.VERSION.SDK_INT >= 19 && context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE))
{
Log.d(TAG, "BLE is supported, so need to disable L scanning");
return true;
}
return false;
}
Если он возвращает true, я добавляю строку ниже в коде -
beaconManager.setAndroidLScanningDisabled(true);
Можете ли вы проверить, хорошо ли выглядит уровень API и остальные условия?