Questa sezione mostra come utilizzare l'API Snapshot per ottenere lo stato corrente di ciascuno dei tipi di contesto supportati. Per maggiori informazioni, consulta la guida introduttiva. Per dettagli sugli indicatori di contesto ritirati, apri la seguente notifica espandibile:
Ottenere l'attività corrente
Per ottenere 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 permissione a AndroidManifest.xml
.
Per ottenere l'attività corrente dell'utente, svolgi i seguenti passaggi:
- Chiama
getSnapshotClient()
per creare un'istanza diSnapshotClient
. - Utilizza
addOnSuccessListener
per creare unOnSuccessListener
in grado di ascoltare unDetectedActivityResponse
. - Chiama il numero
getStatus()
per assicurarti che il risultato sia valido. Chiama
DetectedActivityResponse.getActivityRecognitionResult()
per restituire unActivityRecognitionResult
. Puoi utilizzarlo per ottenere molti aspetti dell'attività corrente dell'utente. Ad esempio:- Chiama
getMostProbableActivity()
per ricevere solo l'attività più probabile. - Chiama
getProbableActivities()
per ricevere un elenco delle attività recenti classificate in base alla probabilità. - Chiama
getActivityConfidence()
per restituire il valore di confidenza per un determinato tipo di attività. - Chiama
hasResult()
per rilevare se unIntent
contiene unActivityRecognitionResult
.
- Chiama
Il seguente esempio di codice utilizza getMostProbableActivity()
per ottenere l'attività rilevata più probabile e 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");
}
})
Trovare i beacon nelle vicinanze
Per informazioni sui beacon nelle vicinanze, chiama il numero getBeaconState()
.
I dati del beacon sono costituiti dai contenuti, dal tipo e dallo spazio dei nomi di eventuali allegati.
Il metodo getBeaconState()
richiede l'autorizzazione android.permission.ACCESS_FINE_LOCATION
. Aggiungi questa autorizzazione a AndroidManifest.xml
.
Inoltre, devi attivare l'API Nearby Messages per il tuo progetto Google Developers Console. Per ulteriori informazioni, consulta Registrazione e chiavi API
e Guida introduttiva.
Per ottenere informazioni sui beacon nelle vicinanze, svolgi i seguenti passaggi:
Verifica che l'utente abbia concesso le autorizzazioni richieste. L'esempio seguente verifica se l'autorizzazione
android.permission.ACCESS_FINE_LOCATION
è stata concessa. In caso contrario, all'utente viene chiesto 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
. Verranno restituiti solo i beacon con allegati registrati con lo spazio dei nomi e il tipo specificati. Puoi anche filtrare in base a una corrispondenza byte per byte sui contenuti dell'allegato. Il seguente esempio mostra come creare un filtro di 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"));
Chiama il numero
getSnapshotClient.getBeaconState()
.Utilizza
addOnSuccessListener
per creare unOnSuccessListener
in grado di ascoltare unBeaconStateResponse
.Chiama il numero
getStatus()
per assicurarti che il risultato sia valido.Chiama
BeaconStateResponse.getBeaconState()
per restituire lo stato del beacon.Chiama
BeaconState.getBeaconInfo()
per ricevere unBeaconState.BeaconInfo
.
L'esempio seguente mostra come ottenere le 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();
}
})
Ottenere lo stato delle cuffie
Per rilevare se le cuffie sono collegate al dispositivo, chiama getHeadphoneState()
, che crea uno stato di rilevamento HeadphoneStateResponse
con OnSuccessListener
impostato su rileva.
Puoi quindi chiamare il numero getHeadphoneState()
per ricevere il HeadphoneState
.
Per conoscere lo stato attuale delle cuffie, svolgi i seguenti passaggi:
- Chiama il numero
getSnapshotClient.getHeadphoneState()
. - Utilizza
addOnSuccessListener
per creare unOnSuccessListener
in grado di ascoltare unHeadphoneStateResponse
. - Chiama il numero
getStatus()
per assicurarti che il risultato sia valido. - In caso di esito positivo, chiama
HeadphoneStateResponse.getHeadphoneState()
per restituire lo stato delle cuffie. Questo valore èPLUGGED_IN
oUNPLUGGED
.
Il seguente esempio di codice mostra 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);
}
});
Ricevi località
Puoi ottenere la posizione attuale dell'utente (latitudine-longitudine) con una chiamata a getLocation()
, che restituisce un 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, svolgi i seguenti passaggi:
Verifica se l'utente ha concesso le autorizzazioni richieste. L'esempio seguente verifica se l'autorizzazione
android.permission.ACCESS_FINE_LOCATION
è stata concessa. In caso contrario, all'utente viene chiesto 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 unOnSuccessListener
in grado di ascoltare unLocationResponse
.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 attuale:
Awareness.getSnapshotClient(this).getLocation()
.addOnSuccessListener(new OnSuccessListener<LocationResponse>() {
@Override
public void onSuccess(LocationResponse locationResponse) {
Location loc = locationResponse.getLocationResult();
}
})