9
votes

Android Geofencing

J'ai traversé le Tutoriel pour GeoFencing et j'ai une question à l'esprit.

GeoFencing vous oblige à surveiller en permanence l'emplacement de l'utilisateur?

ou sera le EmplacementClientClient auquel vous ajoutez la Geofence déclenche automatiquement lorsqu'une transition a été orcée?

Cela peut sembler une question évidente, mais le tutoriel n'a jamais mentionné quoi que ce soit sur la demande de mises à jour de localisation du gestionnaire de localisation.


0 commentaires

3 Réponses :


-4
votes
        public class MainActivity extends FragmentActivity implements
          OnMarkerDragListener {

         private GoogleMap googleMap;
         private int distance;
         private SupportMapFragment mapFragment;

         @Override
         public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          SupportMapFragment mapFragment = ((SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map));
          googleMap = mapFragment.getMap();
          googleMap.setOnMarkerDragListener(this);
          distance = 100;
          googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(
            26.788707, 75.828108), 15));
          createGeofence(26.788707, 75.828108, distance, "CIRCLE", "GEOFENCE");
         }
         private void createGeofence(double latitude, double longitude, int radius,
           String geofenceType, String title) {

          Marker stopMarker = googleMap.addMarker(new MarkerOptions()
            .draggable(true)
            .position(new LatLng(latitude, longitude))
            .title(title)
            .icon(BitmapDescriptorFactory
              .fromResource(R.drawable.stop_marker)));

          googleMap.addCircle(new CircleOptions()
            .center(new LatLng(latitude, longitude)).radius(radius)
            .fillColor(Color.parseColor("#B2A9F6"))); 
         }
         @Override
         public void onMarkerDrag(Marker marker) {
         }
         @Override
         public void onMarkerDragEnd(Marker marker) {
          LatLng dragPosition = marker.getPosition();
          double dragLat = dragPosition.latitude;
          double dragLong = dragPosition.longitude;
          googleMap.clear();
          createGeofence(dragLat, dragLong, distance, "CIRCLE", "GEOFENCE");
          Toast.makeText(
            MainActivity.this,
            "onMarkerDragEnd dragLat :" + dragLat + " dragLong :"
              + dragLong, Toast.LENGTH_SHORT).show();
          Log.i("info", "on drag end :" + dragLat + " dragLong :" + dragLong);

         }
         @Override
         public void onMarkerDragStart(Marker marker) {
         }



   main .xml 

    < ?xml version="1.0" encoding="utf-8"?>
     < RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        < fragment
            android:id="@+id/map"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            class="com.google.android.gms.maps.SupportMapFragment" />
    < /RelativeLayout>

0 commentaires

4
votes

hi, cela dépend de l'exigence. Le suivi de l'emplacement de l'application peut être mis en œuvre de manière suivante en fonction de l'exigence particulière. 1. Demander un coup d'œil emplacement de l'appareil partout au besoin Si l'application demande à l'emplacement actuel du périphérique à l'écran, il faut que certaines API nécessitent de l'entrée ou besoin d'utiliser de manière lat-longue pour afficher certaines informations sur l'emplacement actuel de l'écran, l'écran de la carte, etc., l'application peut demander à l'emplacement de l'emplacement actuel. de l'appareil dans la même classe d'activité. Cette approche n'utilise pas la batterie de suivi continue des sauvegardes utilisées par App. et le mieux adapté lorsque l'emplacement est nécessaire sur un ou plusieurs écrans, mais peut donner une localisation moins précise

2. Approche basée sur la minuterie / service pour le suivi d'emplacement continu Si l'application exige un suivi d'emplacement continu au premier plan ainsi que sur l'arrière-plan, vous pouvez écrire votre propre service pour suivre l'emplacement sur un intervalle en temps voulu. Dans une telle mise en œuvre, le service commence à écouter des mises à jour de localisation pour un intervalle de temps et désactive toutes les mises à jour de temps en temps.

L'utilisation de son propre service pour le suivi de localisation permet également de suivre la localisation en arrière-plan. La précision souhaitée peut être remplie si l'intervalle de minuterie est décidé en conséquence. Approche basée sur la clôture géographique pour le suivi de localisation continue

3. Approche basée sur la clôture géographique pour le suivi continu de l'emplacement Google Play Services a permis de surveiller la zone de localisation de Geo de certains rayon qui s'appelle Geo Clôture. Pas besoin d'écrire votre propre service pour le suivi continu de l'emplacement. Meilleure optimisation de la batterie par rapport à la minuterie / approche basée sur le service. Cette approche ne convient pas lorsque l'application exige le suivi de l'emplacement des mises à jour de l'emplacement des minutes

Pour plus d'informations, veuillez visiter http: //mobisoftinfotech.com/3-ways-a-implément-efficients-location-Tracking-in-android-Applications/


1 commentaires

Hey, selon cet article "Lorsque la première fois que l'utilisateur est l'emplacement de l'appareil (cet emplacement pourrait être de la précision souhaitée), il créera Geofence à ce point avec le rayon pré-décidé et désactive les mises à jour de l'emplacement. Quitter un événement de cette géofence est violé Ce qui signifie que si l'utilisateur quitte la géofence, l'application détruira la même géofence et démarrera les mises à jour de l'emplacement ". Ma question est que cela n'aurait-il pas besoin de connaître l'emplacement exact de l'utilisateur à chaque instant de savoir quand l'utilisateur a quitté cette géofence?



3
votes

GeoFencing vous oblige-t-il à surveiller en permanence l'emplacement de l'utilisateur? - non , il ne vous oblige pas à surveiller l'emplacement.

Seules les exigences sont

  1. enregistrer votre géofence (une action unique)
  2. Adaptateur d'emplacement doit être activé (paramètre de niveau système, l'application peut déclencher la boîte de dialogue pour activer l'adaptateur d'emplacement si désactivé)
  3. Google Play Services va automatiquement déclencher des actions et une application recevra rappeler

    ou la localisationClient à laquelle vous ajoutez-vous que la géofence déclenche automatiquement lorsqu'une transition s'est produite? - oui Ce sera automatiquement déclenché. Assurez-vous de définir le bon expiration Timestamp et Adaptateur d'emplacement est sur . L'application n'a pas besoin de connaître l'emplacement actuel

    [facultatif]

    Aussi, vous pouvez attraper la geofence droite Erreurs à savoir, pourquoi votre géo-clôture n'a-t-elle pas été déclenchée:

    Geofence_Not_Available Le service Geofence n'est pas disponible maintenant. En règle générale, c'est parce que l'utilisateur a désactivé l'accès à l'emplacement dans Paramètres> Accès de l'emplacement.

    valeur constante: 1000

    géofence_too_many_geofences Votre application a enregistré plus de 100 Geofences. Supprimer ceux non utilisés avant d'ajouter de nouveaux géofences.

    Valeur constante: 1001

    géofence_too_many_pending_intents Vous avez fourni plus de 5 dollar dotés dans les adjonctions (Googleapiclient, GeoFencingReQuest, Pattingintent).

    Valeur constante: 1002


0 commentaires