Привет, у меня приложение стабильно работает на Android 6.0 и 5.0, оно обнаруживает маяки в регионе, даже если приложение убито. Но когда я устанавливаю приложение на Sony Z5 с версией Android N, оно обнаруживает только на переднем плане. Ниже приведены логи, когда приложение было убито. Сканирование началось, но не обнаружено. Есть ли известная ошибка в api 24?
public class MainApplication extends Application implements ReactApplication, BootstrapNotifier {
private static final String BEACON_TAG = "BeaconModule";
// TODO get server url from gradle
public static final String SERVER_URL = "";
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new VectorIconsPackage(),
new RNSharedPreferencesReactPackage()
);
}
};
@Override
public ReactNativeHost getReactNativeHost() {
return mReactNativeHost;
}
@Override
public void onCreate() {
super.onCreate();
SoLoader.init(this, /* native exopackage */ false);
initializeBeaconManager();
}
private void initializeBeaconManager() {
new BackgroundPowerSaver(this);
BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this);
beaconManager.getBeaconParsers().clear();
beaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"));
beaconManager.setBackgroundScanPeriod(10000L);
beaconManager.setBackgroundBetweenScanPeriod(30000L);
initializeBeaconRegions();
}
public void initializeBeaconRegions() {
BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this);
List<Region> regions = new ArrayList<Region>();
/* here is some stuff to get new regions from server*/
List<Region> deleteRegions = new ArrayList<>();
for (Region mRegion : beaconManager.getMonitoredRegions()) {
if (!regions.contains(mRegion)) {
deleteRegions.add(mRegion);
}
}
for (Region delRegion : deleteRegions) {
beaconManager.getMonitoredRegions().remove(delRegion);
}
new RegionBootstrap(this, regions);
}
@Override
public void didEnterRegion(Region region) {
Log.d(BEACON_TAG, "did enter region.");
}
@Override
public void didExitRegion(Region region) {
Log.d(BEACON_TAG, "did exit region.");
}
@Override
public void didDetermineStateForRegion(int i, Region region) {
}}
Похоже, что Sony Z5 вообще не обнаруживает пакеты Bluetooth LE, когда приложение работает в фоновом режиме. Это может быть проблема конкретного устройства или модификация ОС конкретного производителя.