In diesem Abschnitt wird beschrieben, wie Sie mit der Snapshot API den aktuellen Status für jeden der unterstützten Kontexttypen abrufen. Weitere Informationen finden Sie unter Erste Schritte. Details zu den eingestellten Kontextsignalen finden Sie in der folgenden ausklappbaren Benachrichtigung:
Aktuelle Aktivität abrufen
Rufen Sie getDetectedActivity() auf, um die aktuelle Aktivität des Nutzers abzurufen. Diese Funktion gibt ein ActivityRecognitionResult
zurück, das Informationen zu den letzten Aktivitäten des Nutzers enthält.
Für die getDetectedActivity() Methode ist die
com.google.android.gms.permission.ACTIVITY_RECOGNITION Berechtigung erforderlich. Fügen Sie diese
Berechtigung zu AndroidManifest.xml hinzu.
So rufen Sie die aktuelle Aktivität des Nutzers ab:
- Rufen Sie
getSnapshotClient()auf, um eine Instanz vonSnapshotClientzu erstellen. - Verwenden Sie
addOnSuccessListener, um einOnSuccessListenerzu erstellen, das auf einDetectedActivityResponsewarten kann. - Rufen Sie
getStatus()auf, um sicherzustellen, dass das Ergebnis gültig ist. Rufen Sie
DetectedActivityResponse.getActivityRecognitionResult()auf, um einActivityRecognitionResultzurückzugeben. Damit können Sie viele Aspekte der aktuellen Aktivität des Nutzers abrufen. Beispiel:- Rufen Sie
getMostProbableActivity()auf, um nur die wahrscheinlichste Aktivität abzurufen. - Rufen Sie
getProbableActivities()auf, um eine Liste der letzten Aktivitäten abzurufen, die nach Wahrscheinlichkeit sortiert sind. - Rufen Sie
getActivityConfidence()auf, um den Konfidenzwert für einen bestimmten Aktivitätstyp zurückzugeben. - Rufen Sie
hasResult()auf, um zu erkennen, ob einIntenteinActivityRecognitionResultenthält.
- Rufen Sie
Im folgenden Codebeispiel wird getMostProbableActivity()
verwendet, um die wahrscheinlichste erkannte Aktivität abzurufen und das Ergebnis in der
Konsole zu protokollieren:
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");
}
})
Beacons in der Nähe abrufen
Rufen Sie getBeaconState() auf, um Informationen zu Beacons in der Nähe abzurufen.
Beacon-Daten bestehen aus dem Inhalt, dem Typ und dem Namespace aller Anhänge.
Für die Methode getBeaconState() ist die Berechtigung android.permission.ACCESS_FINE_LOCATION
erforderlich. Fügen Sie diese Berechtigung zu AndroidManifest.xml hinzu.
Außerdem müssen Sie die Nearby Messages API für Ihr Google Developers Console-Projekt aktivieren. Weitere Informationen finden Sie unter Registrierung und API-Schlüssel
und Erste Schritte.
So rufen Sie Informationen zu Beacons in der Nähe ab:
Prüfen Sie, ob der Nutzer die erforderlichen Berechtigungen erteilt hat. Im folgenden Beispiel wird geprüft, ob die Berechtigung
android.permission.ACCESS_FINE_LOCATIONerteilt wurde. Wenn nicht, wird der Nutzer um seine Einwilligung gebeten.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; }Definieren Sie einen
BeaconState.TypeFilter. Dadurch werden nur Beacons mit Anhängen zurückgegeben, die mit dem angegebenen Namespace und Typ registriert sind. Sie können auch nach einer Byte-für-Byte-Übereinstimmung des Anhanginhalts filtern. Im folgenden Beispiel wird gezeigt, wie ein Typfilter erstellt wird: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"));Rufen Sie
getSnapshotClient.getBeaconState()auf.Verwenden Sie
addOnSuccessListenerum einOnSuccessListenerzu erstellen, das auf einBeaconStateResponsewarten kann.Rufen Sie
getStatus()auf, um sicherzustellen, dass das Ergebnis gültig ist.Rufen Sie
BeaconStateResponse.getBeaconState()auf, um den Beacon-Status zurückzugeben.Rufen Sie
BeaconState.getBeaconInfo()auf, um einBeaconState.BeaconInfoabzurufen.
Im folgenden Beispiel wird gezeigt, wie Sie Beacon-Informationen abrufen:
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();
}
})
Kopfhörerstatus abrufen
Rufen Sie getHeadphoneState() auf, um zu erkennen, ob Kopfhörer an das Gerät angeschlossen sind.
Dadurch wird eine HeadphoneStateResponse
erstellt, wobei der Status mit OnSuccessListener auf „Erkennen“ gesetzt wird.
Anschließend können Sie getHeadphoneState() aufrufen, um den HeadphoneState abzurufen.
So rufen Sie den aktuellen Kopfhörerstatus ab:
- Rufen Sie
getSnapshotClient.getHeadphoneState()auf. - Verwenden Sie
addOnSuccessListener, um einOnSuccessListenerzu erstellen, das auf einHeadphoneStateResponsewarten kann. - Rufen Sie
getStatus()auf, um sicherzustellen, dass das Ergebnis gültig ist. - Rufen Sie bei Erfolg
HeadphoneStateResponse.getHeadphoneState()auf, um den Kopfhörerstatus zurückzugeben. Dieser Wert ist entwederPLUGGED_INoderUNPLUGGED.
Im folgenden Codebeispiel wird gezeigt, wie getHeadphoneState() verwendet wird:
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);
}
});
Standort abrufen
Sie können den aktuellen Standort des Nutzers (Breiten- und Längengrad) mit einem Aufruf von getLocation() abrufen, der eine LocationResponse zurückgibt.
Anschließend können Sie LocationResponse.getLocation()
aufrufen, um ein Location
mit den aktuellen Standortdaten abzurufen.
Für die getLocation() Methode ist die
android.permission.ACCESS_FINE_LOCATION Berechtigung erforderlich. Fügen Sie diese Berechtigung zu
AndroidManifest.xml hinzu.
So rufen Sie den aktuellen Standort ab:
Prüfen Sie, ob der Nutzer die erforderlichen Berechtigungen erteilt hat. Im folgenden Beispiel wird geprüft, ob die Berechtigung
android.permission.ACCESS_FINE_LOCATIONerteilt wurde. Wenn nicht, wird der Nutzer um seine Einwilligung gebeten.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; }Rufen Sie
getSnapshotClient.getLocation()auf.Verwenden Sie
addOnSuccessListener, um einOnSuccessListenerzu erstellen, das auf einLocationResponsewarten kann.Rufen Sie
getStatus()auf, um sicherzustellen, dass das Ergebnis gültig ist.Rufen Sie
LocationResponse.getLocation()auf, um den aktuellenLocationzurückzugeben.
Im folgenden Beispiel wird gezeigt, wie Sie den aktuellen Standort abrufen:
Awareness.getSnapshotClient(this).getLocation()
.addOnSuccessListener(new OnSuccessListener<LocationResponse>() {
@Override
public void onSuccess(LocationResponse locationResponse) {
Location loc = locationResponse.getLocationResult();
}
})