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żący- Location.
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();
        }
    })