W tej sekcji dowiesz się, jak używać Snapshot API, aby uzyskać bieżący stan każdego z obsługiwanych typów kontekstu. Więcej informacji znajdziesz w artykule Pierwsze kroki. Szczegółowe informacje o wycofanych sygnałach kontekstowych znajdziesz w tym rozwijanym powiadomieniu:
Pobieranie bieżącej aktywności
Aby uzyskać informacje o bieżącej aktywności użytkownika, wywołaj funkcję getDetectedActivity(), która zwraca obiekt ActivityRecognitionResult zawierający informacje o ostatnich aktywnościach użytkownika.
Metoda getDetectedActivity() wymaga uprawnienia com.google.android.gms.permission.ACTIVITY_RECOGNITION. Dodaj to uprawnienie do AndroidManifest.xml.
Aby uzyskać informacje o bieżącej aktywności użytkownika, wykonaj te czynności:
- Wywołaj
getSnapshotClient(), aby utworzyć instancjęSnapshotClient. - Użyj kodu
addOnSuccessListener, aby utworzyćOnSuccessListener, który może nasłuchiwaćDetectedActivityResponse. - Zadzwoń pod numer
getStatus(), aby upewnić się, że wynik jest prawidłowy. Zadzwoń pod numer
DetectedActivityResponse.getActivityRecognitionResult(), aby zwrócićActivityRecognitionResult. Możesz użyć tej metody, aby uzyskać wiele informacji o bieżącej aktywności użytkownika. Przykład:- Zadzwoń pod numer
getMostProbableActivity(), aby uzyskać tylko najbardziej prawdopodobną aktywność. - Wywołaj
getProbableActivities(), aby uzyskać listę ostatnich działań uporządkowanych według prawdopodobieństwa. - Wywołaj funkcję
getActivityConfidence(), aby zwrócić wartość ufności dla danego typu aktywności. - Wywołaj funkcję
hasResult(), aby sprawdzić, czy elementIntentzawiera elementActivityRecognitionResult.
- Zadzwoń pod numer
W tym przykładzie kodu użyto getMostProbableActivity(), aby uzyskać najbardziej prawdopodobną wykrytą aktywność i zapisać wynik w konsoli:
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");
}
})
Pobieranie informacji o beaconach w pobliżu
Aby uzyskać informacje o beaconach w pobliżu, wywołaj getBeaconState().
Dane beacona obejmują treść, typ i przestrzeń nazw wszystkich załączników.
Metoda getBeaconState() wymaga uprawnienia android.permission.ACCESS_FINE_LOCATION. Dodaj to uprawnienie do AndroidManifest.xml.
Musisz też aktywować interfejs Nearby Messages API w projekcie w Google Developers Console. Więcej informacji znajdziesz w sekcjach Rejestracja i klucze API oraz Pierwsze kroki.
Aby uzyskać informacje o pobliskich beaconach, wykonaj te czynności:
Sprawdź, czy użytkownik przyznał wymagane uprawnienia. W tym przykładzie sprawdzamy, czy przyznano uprawnienie
android.permission.ACCESS_FINE_LOCATION. Jeśli nie, użytkownik zostanie poproszony o wyrażenie zgody.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; }Określ właściwość
BeaconState.TypeFilter. Zwraca tylko sygnalizatory z załącznikami zarejestrowanymi w określonej przestrzeni nazw i określonym typie. Możesz też filtrować na podstawie dokładnego dopasowania bajt po bajcie treści załącznika. Przykład tworzenia filtra typu: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"));Zadzwoń pod numer
getSnapshotClient.getBeaconState().Użyj kodu
addOnSuccessListener, aby utworzyćOnSuccessListener, który może nasłuchiwaćBeaconStateResponse.Zadzwoń pod numer
getStatus(), aby upewnić się, że wynik jest prawidłowy.Wywołaj funkcję
BeaconStateResponse.getBeaconState(), aby zwrócić stan beacona.Zadzwoń pod numer
BeaconState.getBeaconInfo(), aby uzyskaćBeaconState.BeaconInfo.
Poniższy przykład pokazuje, jak uzyskać informacje o sygnalizatorze:
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();
}
})
Pobieranie stanu słuchawek
Aby sprawdzić, czy słuchawki są podłączone do urządzenia, wywołaj funkcję getHeadphoneState(), która tworzy stan wykrywania HeadphoneStateResponse z ustawieniem OnSuccessListener na wykrywanie.
Następnie możesz zadzwonić pod numer getHeadphoneState(), aby uzyskać HeadphoneState.
Aby poznać aktualny stan słuchawek, wykonaj te czynności:
- Zadzwoń pod numer
getSnapshotClient.getHeadphoneState(). - Użyj kodu
addOnSuccessListener, aby utworzyćOnSuccessListener, który może nasłuchiwaćHeadphoneStateResponse. - Zadzwoń pod numer
getStatus(), aby upewnić się, że wynik jest prawidłowy. - W przypadku powodzenia wywołaj
HeadphoneStateResponse.getHeadphoneState(), aby zwrócić stan słuchawek. Wartość toPLUGGED_INlubUNPLUGGED.
Poniższy przykładowy kod pokazuje, jak używać 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);
}
});
Pobranie lokalizacji
Aktualną lokalizację użytkownika (szerokość i długość geograficzną) możesz uzyskać, wywołując funkcję getLocation(), która zwraca obiekt LocationResponse.
Następnie możesz zadzwonić pod numer LocationResponse.getLocation(), aby uzyskać Location z aktualnymi danymi o lokalizacji.
Metoda getLocation() wymaga uprawnienia android.permission.ACCESS_FINE_LOCATION. Dodaj to uprawnienie do AndroidManifest.xml.
Aby uzyskać bieżącą lokalizację, wykonaj te czynności:
Sprawdź, czy użytkownik przyznał wymagane uprawnienia. W tym przykładzie sprawdzamy, czy przyznano uprawnienie
android.permission.ACCESS_FINE_LOCATION. Jeśli nie, użytkownik zostanie poproszony o wyrażenie zgody.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; }Zadzwoń pod numer
getSnapshotClient.getLocation().Użyj kodu
addOnSuccessListener, aby utworzyćOnSuccessListener, który może nasłuchiwaćLocationResponse.Zadzwoń pod numer
getStatus(), aby upewnić się, że wynik jest prawidłowy.Zadzwoń pod numer
LocationResponse.getLocation(), aby zwrócić bieżącyLocation.
Poniższy przykład pokazuje, jak uzyskać bieżącą lokalizację:
Awareness.getSnapshotClient(this).getLocation()
.addOnSuccessListener(new OnSuccessListener<LocationResponse>() {
@Override
public void onSuccess(LocationResponse locationResponse) {
Location loc = locationResponse.getLocationResult();
}
})