Я использую справочное приложение altbeacon для работы с маяками.Я получаю нулевое значение, когда пытаюсь распечатать arg0. Я получаю нулевое значение при мониторинге маяков.
@Override
public void didEnterRegion(Region arg0) {
// In this example, this class sends a notification to the user
whenever a Beacon
// matching a Region (defined above) are first seen.
System.out.println(arg0);
System.out.println(arg0.getUniqueId());
System.out.println(arg0.getId1());
Log.d(TAG, "did enter region.");
}
Как мне получить UUID здесь?Нужно ли вызывать ранжирование здесь, потому что я пытаюсь создать сервис переднего плана, и если я вызываю сервис ранжирования каждый раз, когда получаю событие didEnter, оно не будет тяжелым и будет убито системой Android.Ранее я пытался сделать это и сохранить результаты в коллекции и посмотреть, появится ли новый маяк в регионе, а затем добавить его туда, но в результате служба была убита.
Редактировать: Iпробовал следующее
@Override
public void didEnterRegion(Region arg0) {
if (!haveDetectedBeaconsSinceBoot) {
Log.d(TAG, "auto launching MainActivity");
Intent RangingIntent = new Intent(this, Monitoring.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
getApplicationContext().startForegroundService(RangingIntent);
} else {
getApplicationContext().startService(RangingIntent);
}
haveDetectedBeaconsSinceBoot = true;
} else {
if (monitoringActivity != null) {
Intent RangingIntent = new Intent(this, Monitoring.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
getApplicationContext().startForegroundService(RangingIntent);
} else {
getApplicationContext().startService(RangingIntent);
}
}
}
Код ранжирования
public class Monitoring extends Service implements BeaconConsumer {
protected static final String TAG = "RangingService";
private BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this);
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
public void onCreate() {
super.onCreate();
System.out.println("********STARTING RANGING*********");
beaconManager.bind(this);
}
@Override
public void onDestroy() {
super.onDestroy();
beaconManager.unbind(this);
}
@Override
public void onBeaconServiceConnect() {
beaconManager.setRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
if (beacons.size() > 0) {
Log.d(TAG, "didRangeBeaconsInRegion called with beacon count: "+beacons.size());
Log.d(TAG, String.valueOf(beacons.iterator().next()));
Beacon firstBeacon = beacons.iterator().next();
}
}
});
try {
beaconManager.startRangingBeaconsInRegion(new Region("myRangingUniqueId", null, null, null));
} catch (RemoteException e) { }
}
}
PS: Iam пытается получить журналы ранжирования, когда приложение убито