Esta seção mostra como usar a API Snapshot para acessar o estado atual de cada um dos tipos de contexto com suporte. Para mais informações, consulte Introdução. Para detalhes sobre os indicadores contextuais descontinuados, abra o aviso expansível a seguir:
Acessar a atividade atual
Para acessar a atividade atual do usuário, chame getDetectedActivity(), que retorna um ActivityRecognitionResult
com informações sobre as atividades mais recentes do usuário.
O método getDetectedActivity() exige a
com.google.android.gms.permission.ACTIVITY_RECOGNITION permissão. Adicione esta
permissão a AndroidManifest.xml.
Para acessar a atividade atual do usuário, siga estas etapas:
- Chame
getSnapshotClient()para criar uma instância doSnapshotClient. - Use
addOnSuccessListenerpara criar umOnSuccessListenerque possa detectar umDetectedActivityResponse. - Chame
getStatus()para garantir que o resultado seja válido. Chame
DetectedActivityResponse.getActivityRecognitionResult()para retornar umActivityRecognitionResult. Você pode usar isso para acessar muitos aspectos da atividade atual do usuário. Por exemplo:- Chame
getMostProbableActivity()para acessar apenas a atividade mais provável. - Chame
getProbableActivities()para acessar uma lista de atividades recentes classificadas por probabilidade. - Chame
getActivityConfidence()para retornar o valor de confiança de um determinado tipo de atividade. - Chame
hasResult()para detectar se umIntentcontém umActivityRecognitionResult.
- Chame
O exemplo de código a seguir usa getMostProbableActivity()
para acessar a atividade detectada mais provável e registrar o resultado no
console:
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");
}
})
Acessar beacons próximos
Para acessar informações sobre beacons próximos, chame getBeaconState().
Os dados do beacon consistem no conteúdo, tipo e namespace de todos os anexos.
O método getBeaconState() exige a permissão android.permission.ACCESS_FINE_LOCATION. Adicione essa permissão ao AndroidManifest.xml.
Além disso, é necessário ativar a API Nearby Messages para o projeto do Google Developers Console. Para mais informações, consulte Inscrição e chaves de API
e Introdução.
Para acessar informações sobre beacons próximos, siga estas etapas:
Verifique se o usuário concedeu as permissões necessárias. O exemplo a seguir verifica se a permissão
android.permission.ACCESS_FINE_LOCATIONfoi concedida. Caso contrário, o consentimento do usuário será solicitado.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; }Defina um
BeaconState.TypeFilter. Isso retorna apenas beacons com anexos registrados com o namespace e o tipo especificados. Também é possível filtrar com base em uma correspondência byte a byte no conteúdo do anexo. O exemplo a seguir mostra como criar um 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"));Use
addOnSuccessListenerpara criar umOnSuccessListenerque possa detectar umaBeaconStateResponse.Chame
getStatus()para garantir que o resultado seja válido.Chame
BeaconStateResponse.getBeaconState()para retornar o estado do beacon.Chame
BeaconState.getBeaconInfo()para acessar umBeaconState.BeaconInfo.
O exemplo a seguir mostra como acessar informações do beacon:
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();
}
})
Acessar o estado dos fones de ouvido
Para detectar se os fones de ouvido estão conectados ao dispositivo, chame getHeadphoneState(),
que cria um estado de detecção HeadphoneStateResponse
com OnSuccessListener definido para detectar.
Em seguida, chame getHeadphoneState() para acessar o HeadphoneState.
Para acessar o estado atual dos fones de ouvido, siga estas etapas:
- Chame
getSnapshotClient.getHeadphoneState(). - Use
addOnSuccessListenerpara criar umOnSuccessListenerque possa detectar umaHeadphoneStateResponse. - Chame
getStatus()para garantir que o resultado seja válido. - Em caso de sucesso, chame
HeadphoneStateResponse.getHeadphoneState()para retornar o estado dos fones de ouvido. Esse valor éPLUGGED_INouUNPLUGGED.
O exemplo de código a seguir mostra como 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);
}
});
Acessar local
Você pode acessar a localização atual do usuário (latitude-longitude) com uma chamada para getLocation(), que retorna uma LocationResponse.
Em seguida, chame LocationResponse.getLocation()
para acessar um Location
com os dados de localização atuais.
O método getLocation() exige a permissão
android.permission.ACCESS_FINE_LOCATION. Adicione essa permissão ao
AndroidManifest.xml.
Para acessar a localização atual, siga estas etapas:
Verifique se o usuário concedeu as permissões necessárias. O exemplo a seguir verifica se a permissão
android.permission.ACCESS_FINE_LOCATIONfoi concedida. Caso contrário, o consentimento do usuário será solicitado.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; }Use
addOnSuccessListenerpara criar umOnSuccessListenerque possa detectar umaLocationResponse.Chame
getStatus()para garantir que o resultado seja válido.Chame
LocationResponse.getLocation()para retornar oLocationatual.
O exemplo a seguir mostra como acessar a localização atual:
Awareness.getSnapshotClient(this).getLocation()
.addOnSuccessListener(new OnSuccessListener<LocationResponse>() {
@Override
public void onSuccess(LocationResponse locationResponse) {
Location loc = locationResponse.getLocationResult();
}
})