In diesem Abschnitt wird gezeigt, wie Sie mit der Snapshot API den aktuellen Status für jeden der unterstützten Kontexttypen abrufen. Weitere Informationen finden Sie unter Erste Schritte. Weitere Informationen zu eingestellten kontextbezogenen Signalen finden Sie in der folgenden maximierbaren Mitteilung:
Aktuelle Aktivität abrufen
Wenn du die aktuelle Aktivität des Nutzers abrufen möchtest, rufe getDetectedActivity() auf. Dadurch 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 aktuelle Aktivität des Nutzers ab:
- Rufen Sie
getSnapshotClient()auf, um eine Instanz vonSnapshotClientzu erstellen. - Verwenden Sie
addOnSuccessListener, um einenOnSuccessListenerzu erstellen, der auf einenDetectedActivityResponsereagieren kann. - Rufen Sie
getStatus()auf, um zu prüfen, ob 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 zu erhalten. - Rufen Sie
getProbableActivities()auf, um eine Liste der letzten Aktivitäten nach Wahrscheinlichkeit sortiert abzurufen. - Rufen Sie
getActivityConfidence()auf, um den Konfidenzwert für einen bestimmten Aktivitätstyp zurückzugeben. - Rufen Sie
hasResult()auf, um zu ermitteln, 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
Wenn Sie Informationen zu Beacons in der Nähe abrufen 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 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 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_LOCATIONgewährt wurde. Andernfalls wird der Nutzer zur Einwilligung aufgefordert.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 einer Byte-für-Byte-Übereinstimmung mit dem Inhalt des Anhangs filtern. Im folgenden Beispiel wird gezeigt, wie Sie einen Typfilter erstellen: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 einenOnSuccessListenerzu erstellen, der auf einenBeaconStateResponsereagieren 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()an, um einenBeaconState.BeaconInfozu erhalten.
Das folgende Beispiel zeigt, 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
Wenn du feststellen möchtest, ob Kopfhörer an das Gerät angeschlossen sind, rufe getHeadphoneState() auf. Dadurch wird ein HeadphoneStateResponse-Erkennungsstatus erstellt, wobei OnSuccessListener auf „Erkennen“ gesetzt ist.
Anschließend können Sie getHeadphoneState() aufrufen, um die HeadphoneState abzurufen.
So rufen Sie den aktuellen Kopfhörerstatus ab:
- Rufen Sie
getSnapshotClient.getHeadphoneState()auf. - Verwenden Sie
addOnSuccessListener, um einenOnSuccessListenerzu erstellen, der auf einenHeadphoneStateResponsereagieren kann. - Rufen Sie
getStatus()auf, um zu prüfen, ob das Ergebnis gültig ist. - Rufe bei Erfolg
HeadphoneStateResponse.getHeadphoneState()auf, um den Kopfhörerstatus zurückzugeben. Dieser Wert ist entwederPLUGGED_INoderUNPLUGGED.
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- und Längengrad) mit einem Aufruf von getLocation() abrufen, der ein LocationResponse zurückgibt.
Anschließend können Sie LocationResponse.getLocation() aufrufen, um ein 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_LOCATIONgewährt 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 einenOnSuccessListenerzu erstellen, der auf einenLocationResponsereagieren kann.Rufen Sie
getStatus()auf, um zu prüfen, ob das Ergebnis gültig ist.Rufen Sie
LocationResponse.getLocation()auf, um die aktuelleLocationzurü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();
}
})