Esta seção mostra como usar a API Snapshot para conferir o estado atual de cada um dos tipos de contexto aceitos. Para mais informações, consulte Começar. Para detalhes sobre os indicadores contextuais descontinuados, abra o seguinte aviso expansível:
Acessar a atividade atual
Para receber 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()
requer a
permissão com.google.android.gms.permission.ACTIVITY_RECOGNITION
. Adicione essa
permissão a AndroidManifest.xml
.
Para conferir a atividade atual do usuário, siga estas etapas:
- Chame
getSnapshotClient()
para criar uma instância doSnapshotClient
. - Use
addOnSuccessListener
para criar umOnSuccessListener
que 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 vários aspectos da atividade atual do usuário. Por exemplo:- Chame
getMostProbableActivity()
para receber apenas a atividade mais provável. - Chame
getProbableActivities()
para receber 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 umIntent
contém umActivityRecognitionResult
.
- Chame
O exemplo de código abaixo usa getMostProbableActivity()
para receber 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 por perto
Para receber 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()
requer a permissão
android.permission.ACCESS_FINE_LOCATION
. Adicione essa permissão a AndroidManifest.xml
.
Além disso, é necessário ativar a API Nearby Messages para seu projeto do
Google Developers Console. Para mais informações, consulte Inscrição e chaves de API
e Introdução.
Para receber informações sobre beacons próximos, siga estas etapas:
Confira se o usuário concedeu as permissões necessárias. O exemplo a seguir verifica se a permissão
android.permission.ACCESS_FINE_LOCATION
foi concedida. Caso contrário, o usuário vai receber uma solicitação de consentimento.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 tipo e namespace 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
addOnSuccessListener
para criar umOnSuccessListener
que possa detectar umBeaconStateResponse
.Chame
getStatus()
para garantir que o resultado seja válido.Chame
BeaconStateResponse.getBeaconState()
para retornar o estado do beacon.Chame
BeaconState.getBeaconInfo()
para receber umBeaconState.BeaconInfo
.
O exemplo a seguir mostra como receber 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();
}
})
Receber 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 receber o HeadphoneState
.
Para conferir o estado atual dos fones de ouvido, siga estas etapas:
- Chame
getSnapshotClient.getHeadphoneState()
. - Use
addOnSuccessListener
para criar umOnSuccessListener
que possa detectar umHeadphoneStateResponse
. - Chame
getStatus()
para garantir que o resultado seja válido. - Em caso de sucesso, chame
HeadphoneStateResponse.getHeadphoneState()
para retornar o estado do fone de ouvido. Esse valor éPLUGGED_IN
ouUNPLUGGED
.
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
É possível conferir a localização atual do usuário (latitude-longitude) com uma chamada para getLocation()
, que retorna um LocationResponse
.
Em seguida, chame LocationResponse.getLocation()
para receber um Location
com os dados de localização atuais.
O método getLocation()
requer a
permissão android.permission.ACCESS_FINE_LOCATION
. Adicione essa permissão a
AndroidManifest.xml
.
Para conferir o local atual, siga estas etapas:
Confira se o usuário concedeu as permissões necessárias. O exemplo a seguir verifica se a permissão
android.permission.ACCESS_FINE_LOCATION
foi concedida. Caso contrário, o usuário vai receber uma solicitação de consentimento.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
addOnSuccessListener
para criar umOnSuccessListener
que possa detectar umLocationResponse
.Chame
getStatus()
para garantir que o resultado seja válido.Chame
LocationResponse.getLocation()
para retornar oLocation
atual.
O exemplo abaixo mostra como conseguir a localização atual:
Awareness.getSnapshotClient(this).getLocation()
.addOnSuccessListener(new OnSuccessListener<LocationResponse>() {
@Override
public void onSuccess(LocationResponse locationResponse) {
Location loc = locationResponse.getLocationResult();
}
})