Cette section explique comment utiliser l'API Snapshot pour obtenir l'état actuel de chacun des types de contexte compatibles. Pour en savoir plus, consultez Premiers pas. Pour en savoir plus sur les signaux contextuels obsolètes, ouvrez la notification extensible suivante :
Obtenir l'activité en cours
Pour obtenir l'activité actuelle de l'utilisateur, appelez getDetectedActivity(), qui renvoie un ActivityRecognitionResult contenant des informations sur les activités les plus récentes de l'utilisateur.
La méthode getDetectedActivity() nécessite l'autorisation com.google.android.gms.permission.ACTIVITY_RECOGNITION. Ajoutez cette autorisation à AndroidManifest.xml.
Pour obtenir l'activité actuelle de l'utilisateur, procédez comme suit :
- Appelez getSnapshotClient()pour créer une instance deSnapshotClient.
- Utilisez addOnSuccessListenerpour créer unOnSuccessListenerqui peut écouter unDetectedActivityResponse.
- Appelez getStatus()pour vous assurer que le résultat est valide.
- Appelez - DetectedActivityResponse.getActivityRecognitionResult()pour renvoyer un- ActivityRecognitionResult. Vous pouvez l'utiliser pour obtenir de nombreux aspects de l'activité actuelle de l'utilisateur. Exemple :- Appelez getMostProbableActivity()pour n'obtenir que l'activité la plus probable.
- Appelez getProbableActivities()pour obtenir la liste des activités récentes classées par probabilité.
- Appelez getActivityConfidence()pour renvoyer la valeur de confiance pour un type d'activité donné.
- Appelez hasResult()pour détecter si unIntentcontient unActivityRecognitionResult.
 
- Appelez 
L'exemple de code suivant utilise getMostProbableActivity() pour obtenir l'activité détectée la plus probable et enregistrer le résultat dans la console :
Awareness.getSnapshotClient(this).getDetectedActivity()
    .addOnSuccessListener(new OnSuccessListener<DetectedActivityResponse>() {
        @Override
        public void onSuccess(DetectedActivityResponse dar) {
            ActivityRecognitionResult arr = dar.getActivityRecognitionResult();
            DetectedActivity probableActivity = arr.getMostProbableActivity();
            int confidence = probableActivity.getConfidence();
            String activityStr = probableActivity.toString();
            mLogFragment.getLogView().println("Activity: " + activityStr
                + ", Confidence: " + confidence + "/100");
        }
    })
Obtenir les balises à proximité
Pour obtenir des informations sur les beacons à proximité, appelez getBeaconState().
Les données de balise se composent du contenu, du type et de l'espace de noms de toutes les pièces jointes.
La méthode getBeaconState() nécessite l'autorisation android.permission.ACCESS_FINE_LOCATION. Ajoutez cette autorisation à AndroidManifest.xml.
De plus, vous devez activer l'API Nearby Messages pour votre projet Google Developers Console. Pour en savoir plus, consultez S'inscrire et obtenir des clés API et Premiers pas.
Pour obtenir des informations sur les balises à proximité, procédez comme suit :
- Vérifiez si l'utilisateur a accordé les autorisations requises. L'exemple suivant vérifie si l'autorisation - android.permission.ACCESS_FINE_LOCATIONest accordée. Si ce n'est pas le cas, l'utilisateur est invité à donner son consentement.- if (ContextCompat.checkSelfPermission( MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions( MainActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSION_LOCATION ); return; }
- Définissez un - BeaconState.TypeFilter. Cette opération ne renvoie que les balises avec des pièces jointes enregistrées avec l'espace de noms et le type spécifiés. Vous pouvez également filtrer les résultats en fonction d'une correspondance octet par octet sur le contenu de la pièce jointe. L'exemple suivant montre comment créer un filtre de type :- private static final List<BeaconState.TypeFilter> BEACON_TYPE_FILTERS = Arrays.asList( BeaconState.TypeFilter.with( "my.beacon.namespace", "my-attachment-type"), BeaconState.TypeFilter.with( "my.other.namespace", "my-attachment-type"));
- Appelez - getSnapshotClient.getBeaconState().
- Utilisez - addOnSuccessListenerpour créer un- OnSuccessListenerqui peut écouter un- BeaconStateResponse.
- Appelez - getStatus()pour vous assurer que le résultat est valide.
- Appelez - BeaconStateResponse.getBeaconState()pour renvoyer l'état de la balise.
- Appelez - BeaconState.getBeaconInfo()pour obtenir un- BeaconState.BeaconInfo.
L'exemple suivant montre comment obtenir des informations sur une balise :
Awareness.getSnapshotClient(this).getBeaconState(BEACON_TYPE_FILTERS)
    .addOnSuccessListener(new OnSuccessListener<BeaconStateResponse>() {
        @Override
        public void onSuccess(BeaconStateResponse beaconStateResponse) {
            BeaconStateResult beaconStateResult = beaconStateResponse.getBeaconState();
            BeaconState.BeaconInfo beaconInfo = beaconStateResponse.getBeaconInfo();
        }
    })
Obtenir l'état du casque
Pour détecter si des écouteurs sont branchés sur l'appareil, appelez getHeadphoneState(), qui crée un état de détection HeadphoneStateResponse avec OnSuccessListener défini sur "detect" (détecter).
Vous pouvez ensuite appeler getHeadphoneState() pour obtenir HeadphoneState.
Pour obtenir l'état actuel des écouteurs, procédez comme suit :
- Appelez getSnapshotClient.getHeadphoneState().
- Utilisez addOnSuccessListenerpour créer unOnSuccessListenerqui peut écouter unHeadphoneStateResponse.
- Appelez getStatus()pour vous assurer que le résultat est valide.
- En cas de réussite, appelez HeadphoneStateResponse.getHeadphoneState()pour renvoyer l'état des écouteurs. Cette valeur estPLUGGED_INouUNPLUGGED.
L'exemple de code suivant montre comment utiliser getHeadphoneState() :
Awareness.getSnapshotClient(this).getHeadphoneState()
    .addOnSuccessListener(new OnSuccessListener<HeadphoneStateResponse>() {
        @Override
        public void onSuccess(HeadphoneStateResponse headphoneStateResponse) {
            HeadphoneState headphoneState = headphoneStateResponse.getHeadphoneState();
            boolean pluggedIn = headphoneState.getState() == HeadphoneState.PLUGGED_IN;
            String stateStr =
                "Headphones are " + (pluggedIn ? "plugged in" : "unplugged");
            mLogFragment.getLogView().println(stateStr);
        }
    })
    .addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            Log.e(TAG, "Could not get headphone state: " + e);
        }
    });
Obtenir l'emplacement
Vous pouvez obtenir la position actuelle de l'utilisateur (latitude et longitude) en appelant getLocation(), qui renvoie un LocationResponse.
Vous pouvez ensuite appeler LocationResponse.getLocation() pour obtenir un Location avec les données de localisation actuelles.
La méthode getLocation() nécessite l'autorisation android.permission.ACCESS_FINE_LOCATION. Ajoutez cette autorisation à AndroidManifest.xml.
Pour obtenir la position actuelle, procédez comme suit :
- Vérifiez si l'utilisateur a accordé les autorisations requises. L'exemple suivant vérifie si l'autorisation - android.permission.ACCESS_FINE_LOCATIONa été accordée. Si ce n'est pas le cas, l'utilisateur est invité à donner son consentement.- if (ContextCompat.checkSelfPermission( MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions( MainActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSION_LOCATION ); return; }
- Appelez - getSnapshotClient.getLocation().
- Utilisez - addOnSuccessListenerpour créer un- OnSuccessListenerqui peut écouter un- LocationResponse.
- Appelez - getStatus()pour vous assurer que le résultat est valide.
- Appelez - LocationResponse.getLocation()pour renvoyer le- Locationactuel.
L'exemple suivant montre comment obtenir la position actuelle :
Awareness.getSnapshotClient(this).getLocation()
    .addOnSuccessListener(new OnSuccessListener<LocationResponse>() {
        @Override
        public void onSuccess(LocationResponse locationResponse) {
            Location loc = locationResponse.getLocationResult();
        }
    })