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 Cómo comenzar. Para obtener detalles sobre los indicadores contextuales obsoletos, abre el siguiente aviso expandible:
Obtén la actividad actual
Para obtener la actividad actual del usuario, llama a getDetectedActivity(), que muestra un ActivityRecognitionResult
que contiene información sobre las actividades más recientes del usuario.
El método getDetectedActivity() requiere el
com.google.android.gms.permission.ACTIVITY_RECOGNITION permiso. 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 mostrar unActivityRecognitionResult. 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 actividades recientes clasificadas por probabilidad. - Llama a
getActivityConfidence()para mostrar 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");
}
})
Obtén 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 Cómo comenzar.
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. Si no es así, 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 muestra solo las balizas con archivos adjuntos que están registrados con el tipo y el espacio de nombres especificados. También puedes filtrar en función de 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 unOnSuccessListenerque pueda escuchar unBeaconStateResponse.Llama a
getStatus()para asegurarte de que el resultado sea válido.Llama a
BeaconStateResponse.getBeaconState()para mostrar el estado de la baliza.Llama a
BeaconState.getBeaconInfo()para obtener unBeaconState.BeaconInfo.
En el siguiente ejemplo, se muestra cómo obtener información de la baliza:
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();
}
})
Obtén 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 se ejecuta de forma correcta, llama a
HeadphoneStateResponse.getHeadphoneState()para mostrar 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-longitud) con una llamada a getLocation(), que muestra un LocationResponse.
Luego, puedes llamar a LocationResponse.getLocation()
para obtener un Location
con los datos de ubicación actuales.
El getLocation() método requiere el
android.permission.ACCESS_FINE_LOCATION permiso. 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. Si no es así, 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 unOnSuccessListenerque pueda escuchar unLocationResponse.Llama a
getStatus()para asegurarte de que el resultado sea válido.Llama a
LocationResponse.getLocation()para mostrar laLocationactual.
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();
}
})