В этом разделе рассказывается, как использовать Snapshot API, чтобы получать текущее состояние для каждого из поддерживаемых типов контекста. Дополнительную информацию можно найти в статье Начало работы. Чтобы узнать больше об устаревших контекстных сигналах, откройте следующее раскрывающееся уведомление:
Как получить текущую активность
Чтобы получить информацию о текущих действиях пользователя, вызовите метод getDetectedActivity(), который возвращает объект ActivityRecognitionResult с данными о последних действиях пользователя.
Для метода getDetectedActivity() требуется разрешение com.google.android.gms.permission.ACTIVITY_RECOGNITION. Добавьте это разрешение в файл AndroidManifest.xml.
Чтобы получить текущую активность пользователя, выполните следующие действия:
- Чтобы создать экземпляр
SnapshotClient, вызовитеgetSnapshotClient(). - Используйте
addOnSuccessListener, чтобы создатьOnSuccessListener, который может прослушиватьDetectedActivityResponse. - Чтобы уточнить, принимается ли ваш полис, позвоните по номеру
getStatus(). Вызовите
DetectedActivityResponse.getActivityRecognitionResult(), чтобы вернутьActivityRecognitionResult. С помощью этого метода можно получить информацию о текущих действиях пользователя. Пример:- Вызовите
getMostProbableActivity(), чтобы получить только наиболее вероятное действие. - Вызовите функцию
getProbableActivities(), чтобы получить список последних действий, отсортированных по вероятности. - Вызовите метод
getActivityConfidence(), чтобы получить уровень достоверности для определенного типа активности. - Вызовите
hasResult(), чтобы определить, содержит лиIntentэлементActivityRecognitionResult.
- Вызовите
В следующем примере кода используется getMostProbableActivity(), чтобы получить наиболее вероятное обнаруженное действие и зарегистрировать результат в консоли:
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");
}
})
Как получать данные от маячков поблизости
Чтобы получить информацию о маячках поблизости, вызовите функцию getBeaconState().
Данные маячка состоят из контента, типа и пространства имен всех прикрепленных файлов.
Для метода getBeaconState() требуется разрешение android.permission.ACCESS_FINE_LOCATION. Добавьте это разрешение в AndroidManifest.xml.
Кроме того, вам нужно активировать Nearby Messages API для проекта в Google Developers Console. Подробнее о регистрации и ключах API и начале работы…
Чтобы получить информацию о ближайших маячках, выполните следующие действия:
Проверьте, предоставил ли пользователь необходимые разрешения. В примере ниже проверяется, предоставлено ли разрешение
android.permission.ACCESS_FINE_LOCATION. Если нет, пользователю будет предложено дать согласие.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; }Определите
BeaconState.TypeFilter. Возвращаются только маячки с прикрепленными объектами, зарегистрированными с указанным пространством имен и типом. Вы также можете настроить фильтрацию на основе побайтового совпадения содержимого прикрепленного файла. В следующем примере показано, как создать фильтр по типу: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"));Позвони по номеру
getSnapshotClient.getBeaconState().Используйте
addOnSuccessListener, чтобы создатьOnSuccessListener, который может прослушиватьBeaconStateResponse.Чтобы уточнить, принимается ли ваш полис, позвоните по номеру
getStatus().Вызовите метод
BeaconStateResponse.getBeaconState(), чтобы вернуть состояние маяка.Позвоните по номеру
BeaconState.getBeaconInfo(), чтобы получитьBeaconState.BeaconInfo.
В следующем примере показано, как получить информацию о маячке:
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();
}
})
Получение статуса наушников
Чтобы определить, подключены ли наушники к устройству, вызовите getHeadphoneState(), создав состояние обнаружения HeadphoneStateResponse с параметром OnSuccessListener, установленным на обнаружение.
Затем вы можете вызвать метод getHeadphoneState(), чтобы получить HeadphoneState.
Чтобы получить текущее состояние наушников, выполните следующие действия:
- Позвони по номеру
getSnapshotClient.getHeadphoneState(). - Используйте
addOnSuccessListener, чтобы создатьOnSuccessListener, который может прослушиватьHeadphoneStateResponse. - Чтобы уточнить, принимается ли ваш полис, позвоните по номеру
getStatus(). - При успешном выполнении вызовите функцию
HeadphoneStateResponse.getHeadphoneState(), чтобы получить состояние наушников. Значение может бытьPLUGGED_INилиUNPLUGGED.
В примере кода ниже показано, как использовать 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);
}
});
Получение местоположения
Чтобы получить текущее местоположение пользователя (широту и долготу), вызовите метод getLocation(), который вернет объект LocationResponse.
Затем вы можете вызвать метод LocationResponse.getLocation(), чтобы получить объект Location с данными о текущем местоположении.
Для метода getLocation() требуется разрешение android.permission.ACCESS_FINE_LOCATION. Добавьте это разрешение в
AndroidManifest.xml.
Чтобы узнать текущее местоположение, выполните следующие действия:
Проверьте, предоставил ли пользователь необходимые разрешения. В примере ниже проверяется, предоставлено ли разрешение
android.permission.ACCESS_FINE_LOCATION. Если нет, пользователю будет предложено дать согласие.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; }Позвони по номеру
getSnapshotClient.getLocation().Используйте
addOnSuccessListener, чтобы создатьOnSuccessListener, который может прослушиватьLocationResponse.Чтобы уточнить, принимается ли ваш полис, позвоните по номеру
getStatus().Вызовите
LocationResponse.getLocation(), чтобы вернуть текущийLocation.
В примере ниже показано, как получить текущее местоположение.
Awareness.getSnapshotClient(this).getLocation()
.addOnSuccessListener(new OnSuccessListener<LocationResponse>() {
@Override
public void onSuccess(LocationResponse locationResponse) {
Location loc = locationResponse.getLocationResult();
}
})