altbeacon lib を実装しようとしました。私の問題は、コールバック メソッドが呼び出されないことです。ビーコンが見つかりません。BeaconManager のいくつかの異なるレイアウトを試してみましたが、成功しませんでした。誰かが私が間違っていることを教えてもらえますか? BeaconManager に渡した Region に何か問題があるのでしょうか? altbeacon はリージョンRegion(java.lang.String uniqueId, Identifier id1, Identifier id2, Identifier id3)の最初のパラメータをどこで使用しますか? 特定のビーコンを見つけたくないので、他のすべてのパラメーターに null を渡しました。
namespace DMSBeacon
{
[Activity(Label = "Altbeacon")]
public class AltbeaconActivity : Activity, IBeaconConsumer, IDialogInterfaceOnDismissListener
{
private BeaconManager oBeaconManager;
private MonitorNotifier oNotifier = new MonitorNotifier();
private RangeNotifier oRangeNotifier = new RangeNotifier();
public class RangeNotifier : IRangeNotifier
{
public IntPtr Handle
{
get
{
//throw new NotImplementedException();
return new IntPtr();
}
}
public void DidRangeBeaconsInRegion(ICollection<Beacon> beacons, Region region)
{
throw new NotImplementedException();
}
public void Dispose()
{
throw new NotImplementedException();
}
}
public class MonitorNotifier : IMonitorNotifier
{
public IntPtr Handle
{
get
{
//throw new NotImplementedException();
return new IntPtr();
}
}
public void DidDetermineStateForRegion(int state, Region region)
{
Android.Util.Log.Info("TEST", "I have just switched from seeing/not seeing beacons: " + state);
}
public void DidEnterRegion(Region region)
{
Android.Util.Log.Info("TEST", "I just saw an beacon for the first time!");
}
public void DidExitRegion(Region region)
{
Android.Util.Log.Info("TEST", "I no longer see an beacon");
}
public void Dispose()
{
throw new NotImplementedException();
}
}
public void OnBeaconServiceConnect()
{
oBeaconManager.SetRangeNotifier(oRangeNotifier);
//oBeaconManager.SetMonitorNotifier(oNotifier);
oBeaconManager.StartRangingBeaconsInRegion(new Region("allbeacons", null, null, null));
//oBeaconManager.StartMonitoringBeaconsInRegion(new Region("allbeacons", null, null, null));
}
protected override void OnDestroy()
{
base.OnDestroy();
oBeaconManager.Unbind(this);
}
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.notify);
oBeaconManager = BeaconManager.GetInstanceForApplication(this);
oBeaconManager.BeaconParsers.Add(new BeaconParser()
.SetBeaconLayout("m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25"));
oBeaconManager.Bind(this);
}
public void OnDismiss(IDialogInterface dialog)
{
throw new NotImplementedException();
}
}
}
編集:
Android デバイス ログを調べると、次の行にビーコンが表示されます。
(12-23 09:46:30.455 D/bt_btif_gattc(12179): btif_gattc_update_properties BLE device name=BEACON D1:95:12 len=15 dev_type=2
12-23 09:46:30.519 D/bt_btif_gattc(12179): btif_gattc_update_properties BLE device name=Kontakt1234567 len=14 dev_type=2
12-23 09:46:30.658 D/bt_btif_gattc(12179): btif_gattc_update_properties BLE device name=Kontakt len=7 dev_type=2
12-23 09:46:30.699 D/bt_btif_gattc(12179): btif_gattc_update_properties BLE device name=BEACON D1:0C:AF len=15 dev_type=2)