In diesem Abschnitt erfahren Sie, wie Sie mit der Snapshot API den aktuellen Status für jeden der unterstützten Kontexttypen abrufen. Weitere Informationen finden Sie unter Einstieg. Weitere Informationen zu eingestellten Kontextsignalen finden Sie in der folgenden ausblendbaren Mitteilung:
Aktuelle Aktivität abrufen
Rufe getDetectedActivity()
auf, um die aktuellen Aktivitäten des Nutzers zu erhalten. Daraufhin wird ein ActivityRecognitionResult
zurückgegeben, das Informationen zu den letzten Aktivitäten des Nutzers enthält.
Für die Methode getDetectedActivity()
ist die Berechtigung com.google.android.gms.permission.ACTIVITY_RECOGNITION
erforderlich. Fügen Sie diese Berechtigung zu AndroidManifest.xml
hinzu.
So rufen Sie die aktuellen Aktivitäten des Nutzers ab:
getSnapshotClient()
aufrufen, um eine Instanz vonSnapshotClient
zu erstellen- Verwenden Sie
addOnSuccessListener
, um einenOnSuccessListener
zu erstellen, der auf einenDetectedActivityResponse
lauschen kann. - Rufe
getStatus()
auf, um sicherzustellen, dass das Ergebnis gültig ist. Rufen Sie
DetectedActivityResponse.getActivityRecognitionResult()
auf, um eineActivityRecognitionResult
zurückzugeben. So können Sie viele Aspekte der aktuellen Aktivitäten des Nutzers abrufen. Beispiel:- Rufen Sie
getMostProbableActivity()
auf, um nur die wahrscheinlichste Aktivität zu erhalten. - Rufen Sie
getProbableActivities()
auf, um eine Liste der letzten Aktivitäten nach Wahrscheinlichkeit zu erhalten. - Rufen Sie
getActivityConfidence()
auf, um den Konfidenzwert für einen bestimmten Aktivitätstyp zurückzugeben. - Rufe
hasResult()
auf, um zu ermitteln, ob einIntent
einActivityRecognitionResult
enthä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
Wenn Sie Informationen zu Beacons in der Nähe erhalten möchten, rufen Sie getBeaconState()
auf.
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 gewährt hat. Im folgenden Beispiel wird geprüft, ob die Berechtigung
android.permission.ACCESS_FINE_LOCATION
erteilt wurde. Andernfalls 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 eine
BeaconState.TypeFilter
. Es werden nur Beacons mit Anhängen zurückgegeben, die mit dem angegebenen Namespace und Typ registriert sind. Sie können auch nach einem Byte-für-Byte-Abgleich mit dem Inhalt des Anhangs filtern. Das folgende Beispiel zeigt, 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
addOnSuccessListener
, um einenOnSuccessListener
zu erstellen, der auf einenBeaconStateResponse
lauschen kann.Rufe
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 eineBeaconState.BeaconInfo
zu erhalten.
Im folgenden Beispiel wird gezeigt, wie Beacon-Informationen abgerufen werden:
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
Wenn du feststellen möchtest, ob Kopfhörer an das Gerät angeschlossen sind, ruf getHeadphoneState()
auf. Dadurch wird der Erkennungsstatus HeadphoneStateResponse
mit OnSuccessListener
auf „Erkenne“ gesetzt.
Sie können dann getHeadphoneState()
aufrufen, um die HeadphoneState
abzurufen.
So rufen Sie den aktuellen Status der Kopfhörer ab:
- Rufen Sie
getSnapshotClient.getHeadphoneState()
auf. - Verwenden Sie
addOnSuccessListener
, um einenOnSuccessListener
zu erstellen, der auf einenHeadphoneStateResponse
lauschen kann. - Rufe
getStatus()
auf, um sicherzustellen, dass das Ergebnis gültig ist. - Rufe bei Erfolg
HeadphoneStateResponse.getHeadphoneState()
auf, um den Kopfhörerstatus zurückzugeben. Dieser Wert ist entwederPLUGGED_IN
oderUNPLUGGED
.
Das folgende Codebeispiel zeigt die Verwendung von 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);
}
});
Standort abrufen
Sie können den aktuellen Standort des Nutzers (Breiten-/Längengrad) mit einem Aufruf von getLocation()
abrufen. Dabei wird ein LocationResponse
zurückgegeben.
Anschließend können Sie LocationResponse.getLocation()
aufrufen, um eine Location
mit den aktuellen Standortdaten zu erhalten.
Für die Methode getLocation()
ist die Berechtigung android.permission.ACCESS_FINE_LOCATION
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 gewährt hat. Im folgenden Beispiel wird geprüft, ob die Berechtigung
android.permission.ACCESS_FINE_LOCATION
erteilt wurde. Andernfalls 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 einenOnSuccessListener
zu erstellen, der auf einenLocationResponse
lauschen kann.Rufe
getStatus()
auf, um sicherzustellen, dass das Ergebnis gültig ist.Rufen Sie
LocationResponse.getLocation()
auf, um die aktuelleLocation
zurückzugeben.
Im folgenden Beispiel wird gezeigt, wie der aktuelle Standort abgerufen wird:
Awareness.getSnapshotClient(this).getLocation()
.addOnSuccessListener(new OnSuccessListener<LocationResponse>() {
@Override
public void onSuccess(LocationResponse locationResponse) {
Location loc = locationResponse.getLocationResult();
}
})