Rendre une application sensible au contexte est l’un des meilleurs moyens d’offrir des services utiles à vos utilisateurs. Bien qu'il existe encore de nombreuses façons de le faire, y compris les clôtures géographiques, la reconnaissance d'activité et d'autres services de localisation, Google a récemment publié le API de sensibilisation, qui permet aux développeurs de créer des applications qui réagissent intelligemment à la situation réelle de l'utilisateur. L'API Awareness combine l'API Places, l'API Emplacements, la reconnaissance d'activité et l'API à proximité, ainsi que la prise en charge de la détection de l'état du casque et de la météo..
Dans ce didacticiel, vous apprendrez à connaître l’API Awareness et à accéder à des instantanés des données, et comment créer des écouteurs (connus sous le nom de clôtures, prenant leur nom de geofences) pour des combinaisons de conditions utilisateur correspondant aux objectifs de vos applications. Cela peut être utile pour une grande variété d'applications, telles que les jeux basés sur la localisation, l'offre de bons de réduction aux utilisateurs en magasin et le démarrage d'une application musicale lorsque vous détectez un utilisateur en train de faire de l'exercice. Tout le code de cet exemple d'application est disponible sur GitHub..
Avant de plonger dans votre application Android, vous devez configurer les services Google Play via la console Google API. Si vous avez déjà créé un projet, vous pouvez ignorer la première étape de cette section. Sinon, vous pouvez cliquer sur le lien ci-dessus et suivre pour créer un nouveau projet pour votre application..
Pour créer un nouveau projet, cliquez sur le bleu Créer un projet bouton en haut au centre de l'écran.
Cela vous présente une boîte de dialogue qui demande un nom de projet. Pour ce tutoriel, j'ai créé un projet appelé Sensibilisation TutsPlus. Il existe certaines restrictions sur ce que vous pouvez nommer dans votre projet, car seuls les lettres, chiffres, guillemets, traits d'union, espaces et points d'exclamation sont autorisés..
Une fois que vous frappez Créer, une boîte de dialogue apparaît dans le coin inférieur droit de la page pour indiquer que le projet est en cours de création. Une fois celui-ci disparu, votre projet sera disponible pour la configuration. Vous devriez voir un écran semblable au suivant. Sinon, cliquez sur le logo Google API dans le coin supérieur gauche pour accéder à l'écran du gestionnaire d'API..
Du Présentation des API Google écran, sélectionnez le champ de recherche et recherchez l’API Awareness.
Une fois que vous avez sélectionné API de sensibilisation des résultats renvoyés, cliquez sur le bleu Activer bouton pour permettre à votre application d'utiliser l'API de sensibilisation. S'il s'agit de la première API que vous avez activée, vous serez invité à créer un ensemble d'informations d'identification. Continuer vers le Lettres de créance page pour l'étape 3 de ce tutoriel.
En plus de l'API Awareness, vous devrez peut-être activer d'autres API. Si votre application utilise le Des endroits fonctionnalité de l’API de sensibilisation, vous devrez activer API Google Places pour Android.
Si votre application utilise des balises, vous devez également activer le API Messages à proximité.
Pour utiliser les API activées, vous devez générer une clé API pour votre application Android. Sur la page d'informations d'identification de votre projet Google, sélectionnez API de sensibilisation dans le menu déroulant du haut et Android de la seconde.
Ensuite, vous accédez à un écran où vous pouvez entrer un nom de package pour votre application et le certificat SHA1 pour la clé de signature de l'application. Pour obtenir la clé de signature de votre clé de débogage sous Linux ou OS X, entrez la commande suivante dans une fenêtre de terminal..
keytool -list -v -keystore ~ / .android / debug.keystore -alias androiddebugkey -storepass android -keypass android
Sous Windows, vous pouvez exécuter la même commande avec le chemin défini sur l’emplacement de votre debug.keystore fichier.
Une fois que vous cliquez sur le Créer une clé API bouton, vous recevrez la clé API que vous devrez utiliser dans votre application Android.
Une fois la clé d'API créée et les API appropriées activées, il est temps de commencer à configurer votre projet Android. Pour ce tutoriel, nous allons créer une application de test afin d'apprendre l'API.
Afin de démontrer toutes les fonctionnalités de l'API Awareness, ce tutoriel se concentrera sur l'utilisation d'une simple liste représentant chaque fonctionnalité utilisée. Bien que les détails de la création de cette liste ne soient pas abordés, vous pouvez trouver une implémentation complète dans le source GitHub pour ce tutoriel..
Vous devez d’abord inclure la bibliothèque Play Services dans votre build.gradle fichier. Bien que vous puissiez inclure tous les services Google Play, il est préférable d’inclure uniquement les packages dont vous avez besoin pour votre application..
Dans ce cas, l’API de sensibilisation est disponible dans le Gestionnaire de contexte package, et il peut être inclus dans votre projet en ajoutant la ligne suivante dans votre les dépendances nœud. Vous voudrez aussi vous assurer que le Bibliothèque AppCompat est inclus, car il sera utilisé pour vérifier les autorisations sur les périphériques Marshmallow et supérieurs.
compiler "com.google.android.gms: play-services-contextmanager: 9.2.0" compiler "com.android.support:appcompat-v7:23.4.0"
Une fois que vous avez ajouté la ligne ci-dessus, synchronisez votre projet et ouvrez le strings.xml fichier pour votre projet. Vous souhaitez placer votre clé API de la console Google API dans une valeur de chaîne..
VOTRE CLÉ D'API ICI
Après avoir ajouté votre clé API, vous devrez ouvrir le dossier de votre projet. AndroidManifest.xml fichier. Selon les fonctionnalités de l'API de sensibilisation que vous utilisez, vous devrez inclure des autorisations pour votre application. Si votre application utilise la fonctionnalité de balise, d’emplacement, d’emplacement ou de météo de l’API Awareness, vous devez inclure la ACCESS_FINE_LOCATION
autorisation. Si vous devez utiliser la fonctionnalité de reconnaissance d'activité, vous aurez besoin de la ACTIVITY_RECOGNITION
autorisation.
Ensuite, vous devrez déclarer méta-données
dans le application
nœud qui relie votre application aux services Google API. En fonction de l'utilisation de votre application, vous devrez également inclure le com.google.android.geo
et com.google.android.nearby
métadonnées pour l'utilisation des fonctions de lieu, balises et lieux.
Ensuite, vous devrez ouvrir votre MainActivity.java fichier. Ajouter le GoogleApiClient.OnConnectionFailedListener
interface avec votre classe et connectez-vous aux services Google Play et à l’API Awareness dans votre onCreate (Bundle)
méthode.
Classe publique MainActivity caps AppCompatActivity implémente GoogleApiClient.OnConnectionFailedListener @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); mGoogleApiClient = new GoogleApiClient.Builder (this) .addApi (Awareness.API) .enableAutoManage (this, this) .build (); mGoogleApiClient.connect (); @Override public void onConnectionFailed (@NonNull ConnectionResult connectionResult)
Maintenant que les Play Services sont configurés dans votre application Android, vous devez vous assurer que vos utilisateurs d'Android Marshmallow ou version ultérieure ont accordé la permission à votre application d'utiliser leur emplacement. Vous pouvez vérifier cette permission dans onCreate (Bundle)
et avant d'accéder à des fonctionnalités nécessitant l'autorisation d'emplacement afin d'éviter les pannes au sein de votre application.
booléen privé checkLocationPermission () if (! hasLocationPermission ()) Log.e ("Tuts +", "Aucune autorisation d'emplacement n'a été accordée"); requestLocationPermission (); retourne faux; return true; private boolean hasLocationPermission () return ContextCompat.checkSelfPermission (this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED;
Si l'autorisation d'emplacement n'a pas déjà été accordée, vous pouvez alors demander à l'utilisateur de lui accorder.
int finale finale privée REQUEST_PERMISSION_RESULT_CODE = 42; private void requestLocationPermission () ActivityCompat.requestPermissions (MainActivity.this, nouvelle chaîne [] Manifest.permission.ACCESS_FINE_LOCATION, REQUEST_PERMISSION_RESULT_CODE);
Cela fera apparaître une boîte de dialogue système demandant à l'utilisateur s'il souhaite autoriser votre application à connaître son emplacement..
Lorsque l'utilisateur a répondu, le onRequestPermissionsResult ()
callback recevra les résultats et votre application pourra répondre en conséquence.
@Override public void onRequestPermissionsResult (int requestCode, @NonNull String permissions [], @NonNull int [] grantResults) switch (requestCode) case REQUEST_PERMISSION_RESULT_CODE: // Si la demande est annulée, les tableaux de résultats sont vides. if (grantResults.length> 0 && grantResults [0] == PackageManager.PERMISSION_GRANTED) // a accordé else Log.e ("Tuts +", "Autorisation d'accès refusée.");
À ce stade, vous devez avoir fini de configurer votre application pour l’utilisation de l’API de sensibilisation..
Lorsque vous souhaitez collecter des informations sur le contexte actuel d'un utilisateur, vous pouvez utiliser la fonctionnalité d'instantané de l'API Awareness. Cette API collectera des informations en fonction du type d'appel API et les mettra en cache pour un accès rapide à diverses applications..
L'un des nouveaux ajouts aux services de lecture via l'API Awareness est la capacité de détecter l'état d'un casque de périphérique (branché ou débranché). Cela peut être fait en appelant getHeadphoneState ()
sur l’API de sensibilisation et la lecture du État de casque
du HeadphoneStateResult
.
private void detectHeadphones () Awareness.SnapshotApi.getHeadphoneState (mGoogleApiClient) .setResultCallback (nouveau ResultCallback() @Override public void onResult (@NonNull HeadphoneStateResult headphoneStateResult) HeadphoneState headphoneState = headphoneStateResult.getHeadphoneState (); if (headphoneState.getState () == HeadphoneState.PLUGGED_IN) Log.e ("Tuts +", "Les écouteurs sont branchés."); else Log.e ("Tuts +", "Les écouteurs ne sont PAS branchés."); );
Une fois que vous connaissez l'état des écouteurs, votre application peut effectuer toutes les actions nécessaires en fonction de ces informations..
Bien que précédemment disponible en tant que composant dans les services Google Play, la fonctionnalité de localisation de l'API Awareness a été optimisée pour l'efficacité et l'utilisation de la batterie. Plutôt que d'utiliser l'API d'emplacement traditionnelle et de recevoir un emplacement à des intervalles spécifiés, vous pouvez demander un instantané d'emplacement ponctuel, comme ceci.
void privé detectLocation () if (! checkLocationPermission ()) return; Awareness.SnapshotApi.getLocation (mGoogleApiClient) .setResultCallback (nouveau ResultCallback() @Override public void onResult (@NonNull LocationResult locationResult) Location location = locationResult.getLocation (); Log.e ("Tuts +", "Latitude:" + location.getLatitude () + ", Longitude:" + location.getLongitude ()); Log.e ("Tuts +", "Fournisseur:" + location.getProvider () + "heure:" + location.getTime ()); if (location.hasAccuracy ()) Log.e ("Tuts +", "Accuracy:" + location.getAccuracy ()); if (location.hasAltitude ()) Log.e ("Tuts +", "Altitude:" + location.getAltitude ()); if (location.hasBearing ()) Log.e ("Tuts +", "Bearing:" + location.getBearing ()); if (location.hasSpeed ()) Log.e ("Tuts +", "Vitesse:" + location.getSpeed ()); );
Comme vous pouvez le constater, vous devez d’abord vérifier que l’utilisateur a accordé la permission d’emplacement. Si tel est le cas, vous pouvez récupérer un objet Location standard contenant une grande quantité de données sur l'emplacement et la vitesse de l'utilisateur, ainsi que des informations sur l'exactitude de ces données..
Vous voudrez vérifier qu'un élément spécifique existe avant de l'utiliser, car certaines données peuvent ne pas être disponibles. L'exécution de ce code doit générer toutes les données disponibles dans le journal système Android..
E / Tuts +: Latitude: 39,9255456, Longitude: -105.02939579999999 E / Tuts +: Fournisseur: Heure instantanée: 1468696704662 E / Tuts +: Précision: 20.0 E / Tuts +: Altitude: 0.0 E / Tuts +: Vitesse: 0.0
Bien qu'elle ne soit pas aussi robuste que l'API Places standard, l'API Awareness constitue un moyen rapide et facile à utiliser pour collecter des informations sur les lieux proches de l'utilisateur. Cet appel d'API renverra un liste
de PlaceLikelihood
objets qui contient un Endroit
et un flotte
représentant la probabilité qu'un utilisateur se trouve à cet endroit (d'où le nom de l'objet).
Chaque Endroit
L'objet peut contenir un nom, une adresse, un numéro de téléphone, un type de lieu, un classement de l'utilisateur et d'autres informations utiles. Vous pouvez demander les emplacements proches pour l'utilisateur après avoir vérifié que l'utilisateur dispose de l'emplacement autorisé..
private void detectNearbyPlaces () if (! checkLocationPermission ()) return; Awareness.SnapshotApi.getPlaces (mGoogleApiClient) .setResultCallback (nouveau ResultCallback() @Override public void onResult (@NonNull PlacesResult placesResult) Place place; pour (PlaceLikelihood placeLikelihood: placesResult.getPlaceLikelihoods ()) place = placeLikelihood.getPlace (); Log.e ("Tuts +", place.getName (). ToString () + "\ n" + place.getAddress (). ToString ()); Log.e ("Tuts +", "Rating:" + place.getRating ()); Log.e ("Tuts +", "Probabilité que l'utilisateur soit ici:" + placeLikelihood.getLikelihood () * 100 + "%"); );
Lors de l'exécution de la méthode ci-dessus, vous devriez voir une sortie similaire à celle-ci sur la console Android. Si une valeur n'est pas disponible pour un nombre, -1
sera retourné.
E / Tuts +: North Side Tavern 12708, boul. Lowell, Broomfield, CO 80020, États-Unis E / Tuts +: Note: 4.7 E / Tuts +: Probabilité que l'utilisateur soit ici: 10.0% E / Tuts +: Quilt Store 12710, boul. Lowell, Broomfield, CO 80020, USA E / Tuts +: Notation: 4.3 E / Tuts +: Probabilité que l'utilisateur se trouve ici: 10.0% E / Tuts +: Soin absolu du sol 3508 W 126th Pl, Broomfield, CO 80020, USA E / Tuts +: Notation: -1.0
Une autre nouveauté dans les services Google Play via l'API Awareness est la possibilité d'obtenir les conditions météorologiques d'un utilisateur. Cette fonctionnalité nécessite également l'autorisation d'emplacement pour les utilisateurs de Marshmallow et des versions ultérieures..
En utilisant cette demande, vous pourrez obtenir la température dans la zone de l'utilisateur en degrés Fahrenheit ou Celsius. Vous pouvez également déterminer la température ressentie, le point de rosée (la température à laquelle l'eau dans l'air peut commencer à se condenser), le pourcentage d'humidité et les conditions météorologiques..
private void detectWeather () if (! checkLocationPermission ()) return; Awareness.SnapshotApi.getWeather (mGoogleApiClient) .setResultCallback (nouveau ResultCallback() @Override public null onResult (@NonNull WeatherRes weatherResult) Météo Weather = weatherResult.getWeather (); Log.e ("Tuts +", "Temp:" + weather.getTemperature (Weather.FAHRENHEIT)); Log.e ("Tuts +", "Ressenti:" + weather.getFeelsLikeTemperature (Weather.FAHRENHEIT)); Log.e ("Tuts +", "Point de rosée:" + weather.getDewPoint (Weather.FAHRENHEIT)); Log.e ("Tuts +", "Humidity:" + weather.getHumidity ()); if (weather.getConditions () [0] == Weather.CONDITION_CLOUDY) Log.e ("Tuts +", "On dirait qu'il y a des nuages là-bas"); );
Le code ci-dessus devrait sortir quelque chose de similaire à ceci.
E / Tuts +: Temp: 88,0 E / Tuts +: On dirait: 88,0 E / Tuts +: Point de rosée: 50,0 E / Tuts +: Humidité: 28 E / Tuts +: On dirait qu'il y a des nuages
Il est important de noter ici que la valeur de la condition météorologique est stockée sous forme de int
. La liste complète des valeurs de condition peut être trouvée dans l'objet Weather.
int CONDITION_UNKNOWN = 0; int CONDITION_CLEAR = 1; int CONDITION_CLOUDY = 2; int CONDITION_FOGGY = 3; int CONDITION_HAZY = 4; int CONDITION_ICY = 5; int CONDITION_RAINY = 6; int CONDITION_SNOWY = 7; int CONDITION_STORMY = 8; int CONDITION_WINDY = 9;
L'activité de votre utilisateur jouera un rôle important dans la manière dont il interagit avec son appareil, et sa détection vous permettra de fournir une expérience utilisateur plus fluide..
Par exemple, si vous avez une application de mise en forme, vous pouvez vouloir détecter le moment où un utilisateur s'exécute pour pouvoir commencer à enregistrer une session Google Fit ou envoyer une notification à votre utilisateur si vous détectez qu'il est toujours en attente. trop d'heures pendant la journée.
En utilisant le getDetectedActivity ()
Dans l’API de sensibilisation, vous pouvez obtenir une liste des activités probables et la durée de chacune de ces activités..
private void detectActivity () Awareness.SnapshotApi.getDetectedActivity (mGoogleApiClient) .setResultCallback (nouveau ResultCallback() @Override public void onResult (@NonNull DetectedActivityResult détectéActivityResult) ActivityRecognitionResult resultat = detectActivityResult.getActivityRecognitionResult (); Log.e ("Tuts +", "time:" + result.getTime ()); Log.e ("Tuts +", "temps écoulé:" + result.getElapsedRealtimeMillis ()); Log.e ("Tuts +", "Activité la plus probable:" + result.getMostProbableActivity (). ToString ()); pour (activité DetectedActivity: result.getProbableActivities ()) Log.e ("Tuts +", "Activité:" + activity.getType () + "Probabilité:" + activity.getConfidence ()); );
La méthode ci-dessus affiche l'activité la plus probable pour l'utilisateur, depuis combien de temps il est dans cet état et la liste de toutes les activités possibles..
E / Tuts +: temps: 1468701845962 E / Tuts +: temps écoulé: 15693985 E / Tuts +: Activité la plus probable: DétectéActivité [type = STILL, confiance = 100] E / Tuts +: Activité: 3 Probabilité: 100
le DétectéActivité
les valeurs de type peuvent être associées aux valeurs suivantes:
int IN_VEHICLE = 0; int ON_BICYCLE = 1; int ON_FOOT = 2; int STILL = 3; int UNKNOWN = 4; int TILTING = 5; int WALKING = 7; int RUNNING = 8;
Le dernier type d’instantané (et le plus difficile à configurer car il nécessite un composant du monde réel) implique BLE (Bluetooth Low Energie). Bien que l'API à proximité dépasse le cadre de ce didacticiel, vous pouvez initialiser des balises pour votre propre projet de services Google à l'aide de l'application Beacon Tools de Google..
Une chose importante à noter est qu'une fois que vous avez enregistré une balise dans un projet API Google, vous ne pouvez pas annuler l'enregistrement sans réinitialiser l'identifiant de balise. Cela signifie que si vous supprimez ce projet, la balise devra être reconfigurée à l'aide de l'application de votre fabricant. Pour l'API Awareness, l'espace de nom doit correspondre au projet Google que vous utilisez pour vos appels d'API Awareness. La balise ci-dessus était déjà enregistrée dans un projet personnel de test personnel Google, d’où le nom du différent namespace (reflect-disk-355
) de celui du projet exemple associé à ce tutoriel.
Dans la capture d'écran ci-dessus, vous pouvez voir un élément sous Les pièces jointes. L'espace de noms pour cette pièce jointe est reflect-disk-355 (L'espace de noms du projet exemple de ce tutoriel est tutsplusawareness) Et le type est proche. Vous aurez besoin de ces informations pour vos propres balises afin de détecter les pièces jointes à l'aide de l'API Awareness..
Lorsque vous avez configuré les balises, vous pouvez revenir à votre code. Vous devrez créer un liste
de BeaconState.TypeFilter
des objets afin que votre application puisse filtrer les balises et les pièces jointes qui ne sont pas liées à votre application.
Liste finale statique privée BEACON_TYPE_FILTERS = Arrays.asList (BeaconState.TypeFilter.with (// les remplace par les valeurs de votre balise "namespace", "type"));
Si vous avez des raisons de penser que votre utilisateur est à proximité d'une balise, vous pouvez demander des pièces jointes aux balises qui répondent aux exigences de filtrage ci-dessus. Cela nécessitera l'autorisation d'emplacement pour les utilisateurs de Marshmallow et des versions ultérieures..
private void detectBeacons () if (! checkLocationPermission ()) return; Awareness.SnapshotApi.getBeaconState (mGoogleApiClient, BEACON_TYPE_FILTERS) .setResultCallback (nouveau ResultCallback() @Override public void onResult (@NonNull BeaconStateResult beaconStateResult) if (! BeaconStateResult.getStatus (). IsSuccess ()) Log.e ("Test", "Impossible d'obtenir l'état beacon."); revenir; BeaconState beaconState = beaconStateResult.getBeaconState (); if (beaconState == null) Log.e ("Tuts +", "l'état de la balise est null"); else for (BeaconState.BeaconInfo info: beaconState.getBeaconInfo ()) Log.e ("Tuts +", new String (info.getContent ())); );
Ce code déconnectera les informations relatives à la pièce jointe associée à l'exemple de balise ci-dessus. Pour cet exemple, j'ai configuré deux balises avec le même espace de nom et le même type pour démontrer que plusieurs balises peuvent être détectées à la fois..
E / Tuts +: Oh salut tuts + E / Tuts +: Balise portable info
Alors que l'API de capture instantanée peut récupérer des informations sur le contexte de l'utilisateur à un moment donné, l'API Fences écoute les conditions spécifiques à remplir avant d'autoriser une action. L'API Fences est optimisée pour une utilisation efficace de la batterie et des données, afin d'être courtois avec vos utilisateurs..
Il existe cinq types de conditions que vous pouvez vérifier lors de la création de clôtures:
Pour le moment, les conditions météorologiques et les lieux ne disposent pas de support pour les clôtures. Vous pouvez créer une clôture qui utilise l’une des fonctionnalités prises en charge. Cependant, une caractéristique très pratique de cette API est que les opérations logiques peuvent être appliquées à des conditions. Vous pouvez prendre plusieurs clôtures et utiliser et, ou, et ne pas opérations pour combiner les conditions pour répondre aux besoins de votre application.
BroadcastReceiver
Avant de créer votre clôture, vous devez avoir une valeur de clé représentant chaque clôture que votre application écoutera. Pour terminer ce didacticiel, vous allez construire une clôture qui détecte le moment où un utilisateur est assis à un endroit donné, tel que son domicile..
Chaîne statique finale privée KEY_SITTING_AT_HOME = "sitting_at_home";
Une fois que vous avez défini une clé, vous pouvez écouter une émission. Intention
qui contient cette clé.
public class FenceBroadcastReceiver étend BroadcastReceiver @Override public void onReceive (contexte de contexte, intention d'intention) if (TextUtils.equals (ACTION_FENCE, intent.getAction ())) FenceState fenceState = FenceState.extract (intent); if (TextUtils.equals (KEY_SITTING_AT_HOME, fenceState.getFenceKey ())) if (fenceState.getCurrentState () =) == FenceState.TRUE) Log.e ("Tuts +", "Vous avez passé trop de temps à la maison" )
Maintenant que vous avez un récepteur créé pour écouter les événements utilisateur, il est temps de créer vos clôtures. La première Clôture de sensibilisation
vous créerez écoutera lorsque l'utilisateur est dans un ENCORE
Etat.
AwarenessFence activityFence = DetectedActivityFence.during (DetectedActivityFence.STILL);
La deuxième clôture que vous créerez attendra que l'utilisateur se trouve à portée d'un emplacement spécifique. Bien que cet échantillon ait des valeurs de latitude et de longitude déjà définies, vous souhaiterez les modifier pour qu’elles correspondent aux coordonnées correspondant à votre position géographique pour les tests..
AwarenessFence homeFence = LocationFence.in (39,92, -105,7, 100000, 1000);
Maintenant que vous avez deux clôtures, vous pouvez les combiner pour créer une troisième. Clôture de sensibilisation
en utilisant le SensibilisationFence.
opération.
AwarenessFence sittingAtHomeFence = AwarenessFence.and (homeFence, activityFence);
Enfin, vous pouvez créer un En attente d'intention
qui sera diffusé à votre BroadcastReceiver
et l'ajouter à l'API de sensibilisation à l'aide du mise à jourFences
méthode.
Intention d'intention = nouvelle intention (ACTION_FENCE); PendingIntent fencePendingIntent = PendingIntent.getBroadcast (this, 0, intent, 0); mFenceBroadcastReceiver = new FenceBroadcastReceiver (); registerReceiver (mFenceBroadcastReceiver, nouvel IntentFilter (ACTION_FENCE)); FenceUpdateRequest.Builder builder = new FenceUpdateRequest.Builder (); Builder.addFence (KEY_SITTING_AT_HOME, sittingAtHomeFence, fencePendingIntent); Awareness.FenceApi.updateFences (mGoogleApiClient, builder.build ());
Maintenant, l'application va enregistrer un message lorsque l'utilisateur est assis à portée de l'emplacement spécifié.
Dans ce didacticiel, vous avez découvert l'API Awareness et comment rassembler des informations actuelles sur l'environnement de l'utilisateur. Vous avez également appris à enregistrer un écouteur pour les modifications dans le contexte de l'utilisateur et à agir lorsque des conditions spécifiques sont remplies..
Avec ces informations, vous devriez pouvoir développer vos propres applications et offrir aux utilisateurs des expériences plus étonnantes basées sur leur emplacement actuel, leur activité et d'autres valeurs utiles..