This section shows how to use the Snapshot API to get the current state for each of the supported context types. For more information, see Get started . For details on deprecated contextual signals, open the following expandable notice:
Получить текущую активность
Чтобы получить текущую активность пользователя, вызовите метод getDetectedActivity() , который возвращает объект ActivityRecognitionResult , содержащий информацию о последних действиях пользователя.
Для работы метода getDetectedActivity() требуется разрешение com.google.android.gms.permission.ACTIVITY_RECOGNITION . Добавьте это разрешение в файл AndroidManifest.xml .
Чтобы получить информацию о текущей активности пользователя, выполните следующие действия:
- Вызовите метод
getSnapshotClient()для создания экземпляраSnapshotClient. - Используйте
addOnSuccessListenerдля создания обработчикаOnSuccessListener, который будет отслеживать событиеDetectedActivityResponse. - Вызовите
getStatus()чтобы убедиться в корректности результата. Вызовите
DetectedActivityResponse.getActivityRecognitionResult(), чтобы получить объектActivityRecognitionResult. Вы можете использовать его для получения многих аспектов текущей активности пользователя. Например:- Вызовите метод
getMostProbableActivity(), чтобы получить только наиболее вероятные события. - Вызовите функцию
getProbableActivities(), чтобы получить список недавних событий, отсортированных по вероятности. - Вызовите
getActivityConfidence(), чтобы получить значение уровня уверенности для заданного типа активности. - Вызовите метод
hasResult(), чтобы определить, содержит лиIntentActivityRecognitionResult.
- Вызовите метод
В следующем примере кода используется getMostProbableActivity() для получения наиболее вероятной обнаруженной активности и вывода результата в консоль:
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");
}
})
Найдите ближайшие маяки
Чтобы получить информацию о ближайших маяках , вызовите функцию getBeaconState() . Данные о маяках содержат содержимое, тип и пространство имен любых подключенных устройств.
The getBeaconState() method requires the android.permission.ACCESS_FINE_LOCATION permission. Add this permission to AndroidManifest.xml . In addition, you must activate the Nearby Messages API for your Google Developers Console project. For more information, see Signup and API Keys and Get started .
Чтобы получить информацию о находящихся поблизости маяках, выполните следующие действия:
Check whether the user has granted the required permissions. The following example checks to see whether the
android.permission.ACCESS_FINE_LOCATIONpermission is granted. If not, the user is prompted for consent.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 a
BeaconState.TypeFilter. This returns only beacons with attachments that are registered with the specified namespace and type. You can also filter based on a byte-for-byte match on the attachment content. The following example shows how to create a type filter: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"));Вызовите метод
getSnapshotClient.getBeaconState().Используйте
addOnSuccessListenerдля создания обработчикаOnSuccessListener, который будет отслеживать событиеBeaconStateResponse.Вызовите
getStatus()чтобы убедиться в корректности результата.Вызовите
BeaconStateResponse.getBeaconState()чтобы получить состояние маяка.Вызовите
BeaconState.getBeaconInfo(), чтобы получить объектBeaconState.BeaconInfo.
Следующий пример показывает, как получить информацию о маяке:
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();
}
})
Получить состояние наушников
To detect whether headphones are plugged into the device, call getHeadphoneState() , which creates a HeadphoneStateResponse detect state with OnSuccessListener set to detect. You can then call getHeadphoneState() to get the HeadphoneState .
Чтобы узнать текущее состояние наушников, выполните следующие действия:
- Вызовите метод
getSnapshotClient.getHeadphoneState(). - Используйте
addOnSuccessListenerдля создания обработчикаOnSuccessListener, который будет отслеживать событиеHeadphoneStateResponse. - Вызовите
getStatus()чтобы убедиться в корректности результата. - В случае успеха вызовите
HeadphoneStateResponse.getHeadphoneState()чтобы получить состояние наушников. Это значение может быть либоPLUGGED_IN, либоUNPLUGGED.
Следующий пример кода демонстрирует использование функции 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);
}
});
Получить местоположение
You can get the user's current location (latitude-longitude) with a call to getLocation() , which returns a LocationResponse . You can then call LocationResponse.getLocation() to get a Location with the current location data.
Для работы метода getLocation() требуется разрешение android.permission.ACCESS_FINE_LOCATION . Добавьте это разрешение в файл AndroidManifest.xml .
Чтобы определить текущее местоположение, выполните следующие действия:
Check whether the user has granted the required permissions. The following example checks to see whether the
android.permission.ACCESS_FINE_LOCATIONpermission has been granted. If not, the user is prompted for consent.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; }Вызовите метод
getSnapshotClient.getLocation().Используйте
addOnSuccessListenerдля создания обработчикаOnSuccessListener, который будет отслеживать событиеLocationResponse.Вызовите
getStatus()чтобы убедиться в корректности результата.Вызовите метод
LocationResponse.getLocation(), чтобы получить текущееLocation.
В следующем примере показано, как получить текущее местоположение:
Awareness.getSnapshotClient(this).getLocation()
.addOnSuccessListener(new OnSuccessListener<LocationResponse>() {
@Override
public void onSuccess(LocationResponse locationResponse) {
Location loc = locationResponse.getLocationResult();
}
})