En esta sección, se muestra cómo usar la API de Snapshot para obtener el estado actual de cada uno de los tipos de contexto admitidos. Para obtener más información, consulta Comienza a usar la API. Para obtener detalles sobre los indicadores contextuales obsoletos, abre el siguiente aviso desplegable:
Obtén la actividad actual
Para obtener la actividad actual del usuario, llama a getDetectedActivity(), que devuelve un ActivityRecognitionResult que contiene información sobre las actividades más recientes del usuario.
El método getDetectedActivity() requiere el permiso com.google.android.gms.permission.ACTIVITY_RECOGNITION. Agrega este permiso a AndroidManifest.xml.
Para obtener la actividad actual del usuario, sigue estos pasos:
- Llama a getSnapshotClient()para crear una instancia deSnapshotClient.
- Usa addOnSuccessListenerpara crear unOnSuccessListenerque pueda escuchar unDetectedActivityResponse.
- Llama a getStatus()para asegurarte de que el resultado sea válido.
- Llama a - DetectedActivityResponse.getActivityRecognitionResult()para devolver un- ActivityRecognitionResult. Puedes usarlo para obtener muchos aspectos de la actividad actual del usuario. Por ejemplo:- Llama a getMostProbableActivity()para obtener solo la actividad más probable.
- Llama a getProbableActivities()para obtener una lista de las actividades recientes clasificadas por probabilidad.
- Llama a getActivityConfidence()para devolver el valor de confianza de un tipo de actividad determinado.
- Llama a hasResult()para detectar si unIntentcontiene unActivityRecognitionResult.
 
- Llama a 
En el siguiente ejemplo de código, se usa getMostProbableActivity() para obtener la actividad detectada más probable y registrar el resultado en la consola:
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");
        }
    })
Obtener balizas cercanas
Para obtener información sobre las balizas cercanas, llama a getBeaconState().
Los datos de baliza constan del contenido, el tipo y el espacio de nombres de los archivos adjuntos.
El método getBeaconState() requiere el permiso android.permission.ACCESS_FINE_LOCATION. Agrega este permiso a AndroidManifest.xml.
Además, debes activar la API de Nearby Messages para tu proyecto de Google Developers Console. Para obtener más información, consulta Registro y claves de API y Comienza a usar la API.
Para obtener información sobre las balizas cercanas, sigue estos pasos:
- Verifica si el usuario otorgó los permisos necesarios. En el siguiente ejemplo, se verifica si se otorgó el permiso - android.permission.ACCESS_FINE_LOCATION. De lo contrario, se le pedirá al usuario que brinde su consentimiento.- 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; }
- Define un - BeaconState.TypeFilter. Esto solo devuelve balizas con archivos adjuntos que están registrados con el espacio de nombres y el tipo especificados. También puedes filtrar según una coincidencia byte por byte en el contenido del archivo adjunto. En el siguiente ejemplo, se muestra cómo crear un filtro de tipo:- 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"));
- Llama a - getSnapshotClient.getBeaconState().
- Usa - addOnSuccessListenerpara crear un- OnSuccessListenerque pueda escuchar un- BeaconStateResponse.
- Llama a - getStatus()para asegurarte de que el resultado sea válido.
- Llama a - BeaconStateResponse.getBeaconState()para devolver el estado de la baliza.
- Llama a - BeaconState.getBeaconInfo()para obtener un- BeaconState.BeaconInfo.
En el siguiente ejemplo, se muestra cómo obtener información de balizas:
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();
        }
    })
Obtener el estado de los auriculares
Para detectar si los auriculares están conectados al dispositivo, llama a getHeadphoneState(), que crea un estado de detección HeadphoneStateResponse con OnSuccessListener configurado para detectar.
Luego, puedes llamar a getHeadphoneState() para obtener el HeadphoneState.
Para obtener el estado actual de los auriculares, sigue estos pasos:
- Llama a getSnapshotClient.getHeadphoneState().
- Usa addOnSuccessListenerpara crear unOnSuccessListenerque pueda escuchar unHeadphoneStateResponse.
- Llama a getStatus()para asegurarte de que el resultado sea válido.
- Si la operación se realiza correctamente, llama a HeadphoneStateResponse.getHeadphoneState()para devolver el estado de los auriculares. Este valor esPLUGGED_INoUNPLUGGED.
En el siguiente ejemplo de código, se muestra cómo usar 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);
        }
    });
Obtener ubicación
Puedes obtener la ubicación actual del usuario (latitud y longitud) con una llamada a getLocation(), que devuelve un LocationResponse.
Luego, puedes llamar a LocationResponse.getLocation() para obtener un Location con los datos de ubicación actuales.
El método getLocation() requiere el permiso android.permission.ACCESS_FINE_LOCATION. Agrega este permiso a AndroidManifest.xml.
Para obtener la ubicación actual, sigue estos pasos:
- Verifica si el usuario otorgó los permisos necesarios. En el siguiente ejemplo, se verifica si se otorgó el permiso - android.permission.ACCESS_FINE_LOCATION. De lo contrario, se le pedirá al usuario que brinde su consentimiento.- 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; }
- Llama a - getSnapshotClient.getLocation().
- Usa - addOnSuccessListenerpara crear un- OnSuccessListenerque pueda escuchar un- LocationResponse.
- Llama a - getStatus()para asegurarte de que el resultado sea válido.
- Llama a - LocationResponse.getLocation()para devolver el- Locationactual.
En el siguiente ejemplo, se muestra cómo obtener la ubicación actual:
Awareness.getSnapshotClient(this).getLocation()
    .addOnSuccessListener(new OnSuccessListener<LocationResponse>() {
        @Override
        public void onSuccess(LocationResponse locationResponse) {
            Location loc = locationResponse.getLocationResult();
        }
    })