Androidビーコンライブラリで領域を検出しようとすると、私は奇妙な動作をしています。Androidビーコンライブラリが存在しないヌル領域に入る
特定のIDを持つビーコンを監視する2つの領域を定義しました。
都合のよいときに、didEnterRegionコールバックが2回、予想される領域に対して1回、「null」領域に対してもう1回トリガーされます。 2番目の領域を入力すると、予想される領域に対して1回だけトリガーされます。
この動作は正常ですか?この「ヌル」領域では、どのようにトリガーしないようにすることができますか?ここで
は私がより良い何が起こっているかを示すために、印刷ログです:
10-10 18:07:15.683:11111111-1111-1111-1111-111111111111
:didEnterRegion呼び出し、ID1を手に入れました10-10 18:07:15.693:ガットdidEnterRegion呼び出し、ID1:ID2ヌル:nullのID3:ヌル
10-10 18:07:22.946:ガットdidEnterRegion呼び出し、ID1:00000000-0000-0000 -0000-000000000000
10-10 18:07:41.8 80:07:57.913:didExitRegion 11111111-1111-1111-1111-111111111111
10-10 18を得たdidExitRegion
10-10 18:07 00000000-0000-0000-0000-000000000000
を得ました: 57.914:didExitRegionヌル
を持って、ここに私のコードの一部です:
public class BeaconReferenceApplication extends Application implements BootstrapNotifier {
private RegionBootstrap regionBootstrap;
public void onCreate() {
super.onCreate();
// UPDATE: Trying to clear old regions.
BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this);
for (Region region: beaconManager.getMonitoredRegions()) {
Log.i(TAG, "Clearing old monitored region" + region);
try {
beaconManager.stopMonitoringBeaconsInRegion(region);
} catch (RemoteException e) {
e.printStackTrace();
}
}
ArrayList<Identifier> ids1 = new ArrayList<>(1);
ids1.add(Identifier.parse("11111111-1111-1111-1111-111111111111"));
Region region1 = new Region("region1", ids1);
ArrayList<Identifier> ids0 = new ArrayList<>(1);
ids0.add(Identifier.parse("00000000-0000-0000-0000-000000000000"));
Region region0 = new Region("region0", ids0);
ArrayList<Region> regions = new ArrayList<>(2);
regions.add(region0);
regions.add(region1);
regionBootstrap = new RegionBootstrap(this, regions);
}
@Override
public void didEnterRegion(Region region) {
Log.i(TAG, "Got a didEnterRegion call, " + region);
}
@Override
public void didExitRegion(Region region) {
Log.i(TAG, "got a didExitRegion" + region.getId1());
}
}
お返事ありがとうございます。確かに、古いバージョンではリージョンが「ヌル」だったので意味があります。 しかし、あなたのコードをonCreateの中に追加しようとしましたが、明らかにmBeaconManager.getMonitoredRegions()はどの領域も返しませんでした。 mBeaconManager.removeAllMonitorNotifiers()を試してみましたが、成功しませんでした。 – luislhl
リージョンはまだ復元されていないため、onCreate内にコードを配置することはできません。クイックフィックスの場合は、didEnterRegionコールバックの内側に配置してみてください。 – davidgyoung
しかし、私がdidEnterRegionの中に置くと、onCreateで宣言した領域もクリアされませんか?私はテストし、起こっているように見えます。 – luislhl