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
addOnSuccessListener
pour créer unOnSuccessListener
permettant d'écouter unDetectedActivityResponse
. - Appelez
getStatus()
pour vous assurer que le résultat est valide. Appelez
DetectedActivityResponse.getActivityRecognitionResult()
pour renvoyer unActivityRecognitionResult
. 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 d'un type d'activité donné. - Appelez
hasResult()
pour détecter si uneIntent
contient unActivityRecognitionResult
.
- Appelez
L'exemple de code suivant utilise getMostProbableActivity()
pour obtenir l'activité la plus probable détectée et pour consigner 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 en savoir plus sur les balises à proximité, appelez getBeaconState()
.
Les données des balises incluent le contenu, le type et l'espace de noms des pièces jointes.
La méthode getBeaconState()
nécessite l'autorisation android.permission.ACCESS_FINE_LOCATION
. Ajoutez cette autorisation à AndroidManifest.xml
.
En outre, vous devez activer l'API Nearby Messages pour votre projet dans la Google Developers Console. Pour en savoir plus, consultez Inscription et 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_LOCATION
est accordée. Sinon, 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
. Elle ne renvoie que les balises contenant des pièces jointes enregistrées avec l'espace de noms et le type spécifiés. Vous pouvez également filtrer 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
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
addOnSuccessListener
pour créer unOnSuccessListener
permettant d'écouter unBeaconStateResponse
.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 unBeaconState.BeaconInfo
.
L'exemple suivant montre comment obtenir des informations sur les balises:
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 un casque est branché sur l'appareil, appelez getHeadphoneState()
, qui crée un état de détection HeadphoneStateResponse
avec OnSuccessListener
défini pour s'y détecter.
Vous pouvez ensuite appeler getHeadphoneState()
pour obtenir HeadphoneState
.
Pour connaître l'état actuel du casque, procédez comme suit:
- Appelez
getSnapshotClient.getHeadphoneState()
. - Utilisez
addOnSuccessListener
pour créer unOnSuccessListener
permettant d'écouter unHeadphoneStateResponse
. - Appelez
getStatus()
pour vous assurer que le résultat est valide. - Si l'opération réussit, appelez
HeadphoneStateResponse.getHeadphoneState()
pour renvoyer l'état du casque. Cette valeur estPLUGGED_IN
ouUNPLUGGED
.
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-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 votre 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_LOCATION
a été accordée. Sinon, 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
addOnSuccessListener
pour créer unOnSuccessListener
permettant d'écouter unLocationResponse
.Appelez
getStatus()
pour vous assurer que le résultat est valide.Appelez
LocationResponse.getLocation()
pour renvoyer l'élémentLocation
actuel.
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();
}
})