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