0

Estimote SDK を Android アプリに追加しようとしています。かなり近づいていますが、地域の監視に問題があります。https://github.com/Estimote/Android-SDKにあるGitHub の Estimote Android SDK Guide に従っています。

何らかの理由で、onEnteredRegion および onExitedRegion メソッドがまったく起動していません。アプリが Estimote ビーコンを検出するたびにトリガーするようにしたいと考えています。ありがとう!

ここに私がこれまでに持っているコードがあります。複雑すぎません:

public class MainActivity extends Activity {

    private static final Region ALL_ESTIMOTE_BEACONS = new Region("regionId", "B9407F30-F5F8-466E-AFF9-25556B57FE6D", null, null);

    BeaconManager beaconManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final AlertDialog.Builder builder = new AlertDialog.Builder(this);

        beaconManager = new BeaconManager(this);
        beaconManager.setBackgroundScanPeriod(TimeUnit.SECONDS.toMillis(1), 0);

        beaconManager.setMonitoringListener(new MonitoringListener() {

            @Override
            public void onEnteredRegion(Region region, List<Beacon> beacons) {
                builder.setTitle("Entered Region")
                        .setMessage("")
                        .setNeutralButton("OK", null);
                AlertDialog dialog = builder.create();
                dialog.show();
            }

            @Override
            public void onExitedRegion(Region region) {
                builder.setTitle("Exited Region")
                        .setMessage("")
                        .setNeutralButton("OK", null);
                AlertDialog dialog = builder.create();
                dialog.show();
            }
        });
    }

    protected void onStart() {
        super.onStart();
        try {
            beaconManager.startMonitoring(ALL_ESTIMOTE_BEACONS);
        }
        catch (RemoteException e) {

        }
    }
}
4

1 に答える 1

1

これをメソッドに入れてみてくださいonStart()

beaconManager.connect(new BeaconManager.ServiceReadyCallback() {
  @Override
  public void onServiceReady() {
    try {
      beaconManager.startMonitoring(region);
    } catch (RemoteException e) {
      Log.d(TAG, "Error while starting monitoring");
    }
  }

また、BeaconManager が不要になったときに、BeaconManager から切断することについても覚えておく必要があります。たとえば、次のonDestroy実装の場合です。

@Override
protected void onDestroy() {
    beaconManager.disconnect();
    super.onDestroy();
}

基本的にはビーコンサービスの準備が整ってからレンジングとモニタリングを開始する必要があり、上記のコールバックを利用することで簡単に実現できます。

于 2015-01-24T09:39:08.927 に答える