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 elementIntent
zawiera 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_IN
lubUNPLUGGED
.
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ć aktualną 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();
}
})