W tej sekcji dowiesz się, jak za pomocą interfejsu Snapshot API uzyskać bieżący stan każdego obsługiwanego typu kontekstu. Więcej informacji znajdziesz w artykule Pierwsze kroki. Aby dowiedzieć się więcej o wycofanych sygnałach kontekstowych, otwórz to powiadomienie rozwijane:
Pobieranie bieżącej aktywności
Aby poznać bieżącą aktywność użytkownika, wywołaj metodę getDetectedActivity()
, która zwraca ActivityRecognitionResult
z najnowszymi działaniami użytkownika.
Metoda getDetectedActivity()
wymaga uprawnienia com.google.android.gms.permission.ACTIVITY_RECOGNITION
. Dodaj to uprawnienie do: AndroidManifest.xml
.
Aby sprawdzić bieżącą aktywność użytkownika, wykonaj te czynności:
- Wywołaj
getSnapshotClient()
, aby utworzyć instancjęSnapshotClient
. - Użyj metody
addOnSuccessListener
, aby utworzyć elementOnSuccessListener
, który nasłuchuje na:DetectedActivityResponse
. - Wywołaj
getStatus()
, aby mieć pewność, że wynik jest prawidłowy. Wywołaj
DetectedActivityResponse.getActivityRecognitionResult()
, aby zwrócićActivityRecognitionResult
. Dzięki niemu możesz poznać wiele aspektów bieżącej aktywności użytkownika. Przykład:- Wywołaj
getMostProbableActivity()
, aby wyświetlić tylko najbardziej prawdopodobne działanie. - Wywołaj
getProbableActivities()
, aby wyświetlić listę ostatnich działań posortowanych według prawdopodobieństwa. - Wywołaj
getActivityConfidence()
, aby zwrócić wartość ufności dla danego typu aktywności. - Wywołaj
hasResult()
, aby wykryć, czyIntent
zawiera elementActivityRecognitionResult
.
- Wywołaj
Ten przykładowy kod korzysta z getMostProbableActivity()
, aby określić najbardziej prawdopodobną aktywność i zarejestrować 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");
}
})
Obrazy typu beacon w pobliżu
Aby uzyskać informacje o pobliskich beaconach, zadzwoń pod numer getBeaconState()
.
Dane obrazu typu beacon obejmują treść, typ i przestrzeń nazw wszelkich załączników.
Metoda getBeaconState()
wymaga uprawnienia android.permission.ACCESS_FINE_LOCATION
. Dodaj te uprawnienia do użytkownika AndroidManifest.xml
.
Musisz też włączyć interfejs Nearby Messages API w projekcie Google Developers Console. Więcej informacji znajdziesz w artykułach Rejestracja i klucze interfejsu API oraz Pierwsze kroki.
Aby uzyskać informacje o beaconach w pobliżu:
Sprawdź, czy użytkownik przyznał wymagane uprawnienia. W tym przykładzie sprawdzamy, czy uprawnienie
android.permission.ACCESS_FINE_LOCATION
zostało przyznane. W przeciwnym razie użytkownik zostanie poproszony o udzielenie 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
BeaconState.TypeFilter
. Zwracany jest tylko obraz typu beacon z załącznikami, które są zarejestrowane za pomocą określonej przestrzeni nazw i typu. Możesz też filtrować na podstawie dopasowania bajtów do treści załącznika. Poniższy przykład pokazuje, jak utworzyć filtr typu: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")); Zadzwoń pod numer
getSnapshotClient.getBeaconState()
.Użyj metody
addOnSuccessListener
, aby utworzyć elementOnSuccessListener
, który nasłuchuje na:BeaconStateResponse
.Wywołaj
getStatus()
, aby mieć pewność, że wynik jest prawidłowy.Wywołaj
BeaconStateResponse.getBeaconState()
, aby zwrócić stan obrazu typu beacon.Zadzwoń pod numer
BeaconState.getBeaconInfo()
, aby uzyskaćBeaconState.BeaconInfo
.
Poniższy przykład pokazuje, jak uzyskać informacje o beaconach:
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();
}
})
Sprawdź stan słuchawek
Aby wykryć, czy do urządzenia są podłączone słuchawki, wywołaj metodę getHeadphoneState()
, która tworzy stan wykrywania HeadphoneStateResponse
przy ustawionym ustawieniu OnSuccessListener
.
Następnie możesz zadzwonić pod numer getHeadphoneState()
, aby uzyskać HeadphoneState
.
Aby poznać bieżący stan słuchawek, wykonaj te czynności:
- Zadzwoń pod numer
getSnapshotClient.getHeadphoneState()
. - Użyj metody
addOnSuccessListener
, aby utworzyć elementOnSuccessListener
, który nasłuchuje na:HeadphoneStateResponse
. - Wywołaj
getStatus()
, aby mieć pewność, że wynik jest prawidłowy. - Jeśli operacja się uda, wywołaj
HeadphoneStateResponse.getHeadphoneState()
, aby wyświetlić stan słuchawek. Wartością jestPLUGGED_IN
lubUNPLUGGED
.
Poniższy przykład kodu pokazuje, jak używać narzędzia 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
Możesz poznać bieżącą lokalizację użytkownika (szerokość i szerokość geograficzną) w wywołaniu funkcji getLocation()
, która zwraca LocationResponse
.
Następnie możesz wywołać LocationResponse.getLocation()
, aby uzyskać Location
z bieżącymi danymi o lokalizacji.
Metoda getLocation()
wymaga uprawnienia android.permission.ACCESS_FINE_LOCATION
. Dodaj te uprawnienia do domeny AndroidManifest.xml
.
Aby uzyskać bieżącą lokalizację, wykonaj te czynności:
Sprawdź, czy użytkownik przyznał wymagane uprawnienia. W podanym niżej przykładzie sprawdzamy, czy uprawnienie
android.permission.ACCESS_FINE_LOCATION
zostało przyznane. W przeciwnym razie użytkownik zostanie poproszony o udzielenie 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 metody
addOnSuccessListener
, aby utworzyć elementOnSuccessListener
, który nasłuchuje na:LocationResponse
.Wywołaj
getStatus()
, aby mieć pewność, że wynik jest prawidłowy.Wywołaj
LocationResponse.getLocation()
, aby zwrócić bieżącą wartość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();
}
})