1

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)
4

0 に答える 0