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 verworfenen Kontextsignalen finden Sie in der folgenden Expandable-Benachrichtigung:
Aktuelle Aktivität abrufen
Um die aktuelle Aktivität des Nutzers abzurufen, rufen Sie getDetectedActivity()
auf. Dadurch wird ein ActivityRecognitionResult
-Objekt mit Informationen zu den letzten Aktivitäten des Nutzers zurückgegeben.
Für die Methode getDetectedActivity()
ist die Berechtigung com.google.android.gms.permission.ACTIVITY_RECOGNITION
erforderlich. Fügen Sie AndroidManifest.xml
diese Berechtigung hinzu.
Führen Sie die folgenden Schritte aus, um die aktuelle Aktivität des Nutzers abzurufen:
- Rufen Sie
getSnapshotClient()
auf, um eine Instanz vonSnapshotClient
zu erstellen. - Erstellen Sie mit
addOnSuccessListener
einOnSuccessListener
-Element, das einDetectedActivityResponse
erfassen kann. - Rufen Sie
getStatus()
auf, um zu prüfen, ob das Ergebnis gültig ist. Rufen Sie
DetectedActivityResponse.getActivityRecognitionResult()
auf, um einenActivityRecognitionResult
zurückzugeben. Damit können Sie viele Aspekte der aktuellen Nutzeraktivität erhalten. Beispiel:- Rufen Sie
getMostProbableActivity()
auf, um nur die Aktivität mit der höchsten Wahrscheinlichkeit abzurufen. - Rufen Sie
getProbableActivities()
auf, um eine Liste der letzten Aktivitäten nach Wahrscheinlichkeit sortiert aufzurufen. - Rufen Sie
getActivityConfidence()
auf, um den Konfidenzwert für einen bestimmten Aktivitätstyp zurückzugeben. - Rufen Sie
hasResult()
auf, um zu ermitteln, ob eineIntent
eineActivityRecognitionResult
enthält.
- Rufen Sie
Im folgenden Codebeispiel wird getMostProbableActivity()
verwendet, um die am wahrscheinlichsten erkannte Aktivität zu erhalten 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()
an.
Beacon-Daten bestehen aus dem Inhalt, dem Typ und dem Namespace der Anhänge.
Für die Methode getBeaconState()
ist die Berechtigung android.permission.ACCESS_FINE_LOCATION
erforderlich. Fügen Sie diese Berechtigung für AndroidManifest.xml
hinzu.
Außerdem musst du die Nearby Messages API für dein Google Developers Console-Projekt aktivieren. Weitere Informationen finden Sie unter Registrierung und API-Schlüssel und Jetzt starten.
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
gewährt wird. Falls 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 anhand einer Byte-für-Byte-Übereinstimmung nach dem Anhangsinhalt filtern. Das folgende Beispiel zeigt, wie Sie einen Typfilter erstellen: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")); Rufen Sie
getSnapshotClient.getBeaconState()
auf.Erstellen Sie mit
addOnSuccessListener
einOnSuccessListener
-Element, das einBeaconStateResponse
erfassen kann.Rufen Sie
getStatus()
auf, um zu prüfen, ob das Ergebnis gültig ist.Rufen Sie
BeaconStateResponse.getBeaconState()
auf, um den Beacon-Status zurückzugeben.Rufen Sie
BeaconState.getBeaconInfo()
auf, um einenBeaconState.BeaconInfo
zu erhalten.
Im folgenden Beispiel sehen Sie, 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
Um festzustellen, ob Kopfhörer an das Gerät angeschlossen sind, rufen Sie getHeadphoneState()
auf. Dadurch wird ein HeadphoneStateResponse
-Erkennungsstatus mit festgelegtem OnSuccessListener
erstellt.
Sie können dann getHeadphoneState()
aufrufen, um die HeadphoneState
abzurufen.
So rufen Sie den aktuellen Kopfhörerstatus ab:
- Rufen Sie
getSnapshotClient.getHeadphoneState()
auf. - Erstellen Sie mit
addOnSuccessListener
einOnSuccessListener
-Element, das einHeadphoneStateResponse
erfassen kann. - Rufen Sie
getStatus()
auf, um zu prüfen, ob das Ergebnis gültig ist. - Bei Erfolg rufen Sie
HeadphoneStateResponse.getHeadphoneState()
auf, um den Kopfhörerstatus zurückzugeben. Dieser Wert ist entwederPLUGGED_IN
oderUNPLUGGED
.
Das folgende Codebeispiel zeigt, 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-Längengrad) mit einem Aufruf von getLocation()
abrufen, der ein LocationResponse
-Element zurückgibt.
Sie können dann LocationResponse.getLocation()
aufrufen, um ein Location
mit den aktuellen Standortdaten abzurufen.
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
gewährt wurde. Falls 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.Erstellen Sie mit
addOnSuccessListener
einOnSuccessListener
-Element, das einLocationResponse
erfassen kann.Rufen Sie
getStatus()
auf, um zu prüfen, ob das Ergebnis gültig ist.Rufen Sie
LocationResponse.getLocation()
auf, um den aktuellenLocation
zurückzugeben.
Das folgende Beispiel zeigt, wie Sie den aktuellen Standort abrufen:
Awareness.getSnapshotClient(this).getLocation()
.addOnSuccessListener(new OnSuccessListener<LocationResponse>() {
@Override
public void onSuccess(LocationResponse locationResponse) {
Location loc = locationResponse.getLocationResult();
}
})