7

Google の例を使用してジオフェンス機能をテストしようとしています: ジオフェンスの作成と監視ここにコードをアップロードしました。

問題は、入退室の通知が届かないことです。Wifi、4G、GPS をオンにしています。私は次の方法でテストしようとしました:

  1. 私は家から約50フィート歩いて戻ってきましたが、通知はありません。Play サービスが接続され、「MainActivity.java の GeofenceUtils.ACTION_GEOFENCES_ADDED」がトリガーされることも確認できるので、ジオフェンスが正しく追加されていると思います。
  2. 設定でモックの場所を有効にし、この偽の GPS アプリを使用して場所を変更しました - Geofence1 と同じ座標から開始し、完全に外側 (別の状態) に設定しましたが、まだ終了通知を受け取りません。

私は何を間違っていますか?ANone は、このGoogle の例の実行に成功しました: ジオフェンスの作成と監視。簡単に閲覧できるように、ここにコードをアップロードしました。

ジオフェンシングを学習しようとしています-入口と出口の検出。実際のデバイスでジオフェンシングを機能させるために使用できる正しい回答として、すべての回答をマークします

以下に座標と半径を入力します.

4

4 に答える 4

0

最初は私のコードはスムーズに実行されていましたが、その後もこの問題が発生しました。 continueAddGeofences() 関数の geofenceRequester クラスを変更して試してください。基本的には、位置要求メソッドを介して受信者を呼び出しています

 private void continueAddGeofences() {


            // Get a PendingIntent that Location Services issues when a geofence
            // transition occurs
            mGeofencePendingIntent = createRequestPendingIntent();

            // Send a request to add the current geofences
            mLocationClient.addGeofences(mCurrentGeofences, mGeofencePendingIntent,
                    this);
            //mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

            try {
                LocationRequest locationrequest = LocationRequest.create();
                locationrequest.setPriority(locationrequest.PRIORITY_HIGH_ACCURACY);
                 locationrequest.setInterval(3000);


                mLocationClient.requestLocationUpdates(locationrequest, mGeofencePendingIntent);
            } catch (Exception e) {
                e.printStackTrace();
            }
于 2014-04-07T07:07:38.390 に答える
0

Geofence api でも同じ問題が発生していました。最後に、LocationManager の addProximityAlert を使用しました。

于 2015-11-06T12:35:05.540 に答える
-4

ご覧のとおり、Google はロケーション ロジックを作り直しました。これは新しい API です。「共有」ロケーションプロバイダーとして機能しているようです(LocationRequest#setFastestInterval他のアプリケーションが要求した場合は座標を提供できます。または、で座標を受信できますPRIORITY_NO_POWER flag)。

GeofenceAPI はhelperメソッドのようなもので、同様のロジック (半径の計算など) を独自に開発する必要はありません。しかし、Geofenceそれ自体で座標を要求するのではなく、受信した座標 (つまり、他のアプリケーションから) を使用するだけです。メソッドの命名は自明です: LocationServices.GeofencingApi.addGeofences;=> addGeofences、not requestGeofences

したがって、次を使用して座標をリクエストする必要があります。

LocationServices.FusedLocationApi.requestLocationUpdates
于 2015-06-16T12:11:50.010 に答える