В этом разделе рассказывается, как использовать Snapshot API, чтобы получать текущее состояние для каждого из поддерживаемых типов контекста. Подробнее о том, как начать работу… Чтобы узнать больше об упраздненных контекстных сигналах, разверните уведомление ниже.
Как получить данные о текущем действии
Чтобы получить информацию о текущих действиях пользователя, вызовите метод getDetectedActivity(), который возвращает объект ActivityRecognitionResult с информацией о последних действиях пользователя.
Для метода getDetectedActivity() требуется разрешение com.google.android.gms.permission.ACTIVITY_RECOGNITION. Добавьте это разрешение в файл AndroidManifest.xml.
Чтобы получить текущую активность пользователя, выполните следующие действия:
- Вызовите
getSnapshotClient(), чтобы создать экземплярSnapshotClient. - Используйте
addOnSuccessListener, чтобы создатьOnSuccessListener, который может прослушиватьDetectedActivityResponse. - Чтобы уточнить, принимается ли ваш полис, позвоните по номеру
getStatus(). Вызовите метод
DetectedActivityResponse.getActivityRecognitionResult(), чтобы получить объектActivityRecognitionResult. С помощью этого API можно получать информацию о текущих действиях пользователя. Пример:- Вызовите
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();
}
})