Questa sezione mostra come utilizzare l'API Snapshot per ottenere lo stato attuale di ciascuno dei tipi di contesto supportati. Per ulteriori informazioni, consulta la Guida introduttiva. Per dettagli sugli indicatori contestuali deprecati, apri la seguente notifica espandibile:
Trovare l'attività corrente
Per recuperare l'attività corrente dell'utente, chiama getDetectedActivity()
, che restituisce un ActivityRecognitionResult
che contiene informazioni sulle attività più recenti dell'utente.
Il metodo getDetectedActivity()
richiede l'autorizzazione com.google.android.gms.permission.ACTIVITY_RECOGNITION
. Aggiungi questa autorizzazione a AndroidManifest.xml
.
Per controllare l'attività corrente dell'utente, procedi nel seguente modo:
- Chiama il numero
getSnapshotClient()
per creare un'istanza diSnapshotClient
. - Utilizza
addOnSuccessListener
per creare unaOnSuccessListener
che possa ascoltareDetectedActivityResponse
. - Chiama il numero
getStatus()
per assicurarti che il risultato sia valido. Chiama il numero
DetectedActivityResponse.getActivityRecognitionResult()
per restituire unActivityRecognitionResult
. Puoi utilizzarlo per ottenere molti aspetti dell'attività corrente dell'utente. Ad esempio:- Chiama il numero
getMostProbableActivity()
per ricevere solo l'attività più probabile. - Chiama il numero
getProbableActivities()
per ricevere un elenco delle attività recenti classificate in base alla probabilità. - Chiamare
getActivityConfidence()
per restituire il valore di affidabilità per un determinato tipo di attività. - Chiama il numero
hasResult()
per rilevare se unIntent
contiene unActivityRecognitionResult
.
- Chiama il numero
L'esempio di codice riportato di seguito utilizza getMostProbableActivity()
per rilevare le attività più probabili e per registrare il risultato nella 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");
}
})
Ricevi beacon nelle vicinanze
Per ottenere informazioni sui beacon nelle vicinanze, chiama getBeaconState()
.
I dati dei beacon sono i contenuti, il tipo e lo spazio dei nomi di tutti gli allegati.
Il metodo getBeaconState()
richiede l'autorizzazione android.permission.ACCESS_FINE_LOCATION
. Aggiungi questa autorizzazione a AndroidManifest.xml
.
Devi inoltre attivare l'API Nearby Messages per il tuo progetto
Google Developers Console. Per ulteriori informazioni, consulta le sezioni Chiavi di registrazione e API e Inizia.
Per ottenere informazioni sui beacon nelle vicinanze, procedi nel seguente modo:
Verifica se l'utente ha concesso le autorizzazioni richieste. Il seguente esempio controlla se l'autorizzazione
android.permission.ACCESS_FINE_LOCATION
è stata concessa. In caso contrario, all'utente viene richiesto il consenso.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; }
Definisci un
BeaconState.TypeFilter
. Questo restituisce solo i beacon con allegati che sono registrati con lo spazio dei nomi e il tipo specificati. Puoi anche applicare filtri in base a una corrispondenza byte per byte sui contenuti dell'allegato. L'esempio seguente mostra come creare un filtro tipo:private static final List
BEACON_TYPE_FILTERS = Arrays.asList( BeaconState.TypeFilter.with( "my.beacon.namespace", "my-attachment-type"), BeaconState.TypeFilter.with( "my.other.namespace", "my-attachment-type")); Chiama il numero
getSnapshotClient.getBeaconState()
.Utilizza
addOnSuccessListener
per creare unaOnSuccessListener
che possa ascoltareBeaconStateResponse
.Chiama il numero
getStatus()
per assicurarti che il risultato sia valido.Chiamare
BeaconStateResponse.getBeaconState()
per restituire lo stato del beacon.Chiama il numero
BeaconState.getBeaconInfo()
per ricevere unBeaconState.BeaconInfo
.
L'esempio seguente mostra come ottenere informazioni sui 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();
}
})
Conoscere lo stato delle cuffie
Per rilevare se le cuffie sono collegate al dispositivo, chiama getHeadphoneState()
,
creando così uno stato di rilevamento di HeadphoneStateResponse
con OnSuccessListener
impostato per il rilevamento.
Puoi quindi chiamare getHeadphoneState()
per ottenere la HeadphoneState
.
Per conoscere lo stato attuale delle cuffie, procedi nel seguente modo:
- Chiama il numero
getSnapshotClient.getHeadphoneState()
. - Utilizza
addOnSuccessListener
per creare unaOnSuccessListener
che possa ascoltareHeadphoneStateResponse
. - Chiama il numero
getStatus()
per assicurarti che il risultato sia valido. - Se l'operazione riesce, chiama
HeadphoneStateResponse.getHeadphoneState()
per restituire lo stato delle cuffie. Questo valore èPLUGGED_IN
oUNPLUGGED
.
Nel seguente esempio di codice viene mostrato come utilizzare 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);
}
});
Recuperare la località
Puoi ottenere la posizione attuale dell'utente (latitudine-longitudine) con una chiamata al numero getLocation()
, che restituisce un risultato LocationResponse
.
Puoi quindi chiamare LocationResponse.getLocation()
per ricevere un Location
con i dati sulla posizione attuale.
Il metodo getLocation()
richiede l'autorizzazione android.permission.ACCESS_FINE_LOCATION
. Aggiungi questa autorizzazione a AndroidManifest.xml
.
Per ottenere la posizione attuale:
Verifica se l'utente ha concesso le autorizzazioni richieste. Il seguente esempio controlla se l'autorizzazione
android.permission.ACCESS_FINE_LOCATION
è stata concessa. In caso contrario, all'utente viene richiesto il consenso.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; }
Chiama il numero
getSnapshotClient.getLocation()
.Utilizza
addOnSuccessListener
per creare unaOnSuccessListener
che possa ascoltareLocationResponse
.Chiama il numero
getStatus()
per assicurarti che il risultato sia valido.Chiama
LocationResponse.getLocation()
per restituire l'attualeLocation
.
L'esempio seguente mostra come ottenere la posizione corrente:
Awareness.getSnapshotClient(this).getLocation()
.addOnSuccessListener(new OnSuccessListener<LocationResponse>() {
@Override
public void onSuccess(LocationResponse locationResponse) {
Location loc = locationResponse.getLocationResult();
}
})