私は別の方法で解決しました。 私は自分のカスタムサービスを使用しており、アプリケーション内にBootstrapNotifierを実装していません。
誰かが必要な場合はここに私のコードです。
public class BeaconDetector extends Service implements BeaconConsumer {
private static final String TAG = "BeaconDetector";
private BeaconUtility.BeaconObject beaconObject;
private Context getServiceCtx(){
return BeaconDetector.this;
}
@Override
public void onCreate() {
super.onCreate();
IMLog.e(TAG, "Created.");
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
IMLog.e(TAG, "Start.");
beaconObject = BeaconUtility.instantiateBeaconManager(this);
beaconObject.beaconManager.bind(this);
return START_STICKY;
}
@Override
public void onDestroy() {
IMLog.e(TAG, "Destroy.");
beaconObject.beaconManager.unbind(this);
}
@Override
public void onBeaconServiceConnect() {
IMLog.e(TAG, "Connected.");
beaconObject.beaconManager.setMonitorNotifier(new MonitorNotifier() {
@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.
IMLog.e(TAG, "did enter region.");
Sender.getInstance(getServiceCtx()).startSender();
}
@Override
public void didExitRegion(Region region) {
IMLog.e(TAG, "did exit region.");
if (Sender.getInstance(getServiceCtx()).isAlive()) {
Sender.getInstance(getServiceCtx()).stopSender();
}
}
@Override
public void didDetermineStateForRegion(int state, Region region) {
IMLog.e(TAG, "did enter region.");
}
});
try {
beaconObject.beaconManager.startMonitoringBeaconsInRegion(BeaconUtility.getMonitoringRegion());
} catch (RemoteException e) {
IMLog.e(TAG, "Remote Exception.");
}
}
}
あなたはそれを解決うれしいです!これはRegionBootstrapを使うよりも良いアプローチです。これは本当に 'Application'クラスで使うように設計されています。 – davidgyoung