이 섹션에서는 스냅샷 API를 사용하여 지원되는 각 컨텍스트 유형의 현재 상태를 가져오는 방법을 보여줍니다. 자세한 내용은 시작하기를 참고하세요. 지원 중단된 문맥 시그널에 관한 자세한 내용은 다음 펼칠 수 있는 알림을 참고하세요.
현재 활동 가져오기
사용자의 현재 활동을 가져오려면 getDetectedActivity()를 호출하세요. 그러면 사용자의 가장 최근 활동에 관한 정보가 포함된 ActivityRecognitionResult가 반환됩니다.
getDetectedActivity() 메서드에는 com.google.android.gms.permission.ACTIVITY_RECOGNITION 권한이 필요합니다. 이 권한을 AndroidManifest.xml에 추가합니다.
사용자의 현재 활동을 가져오려면 다음 단계를 실행하세요.
- getSnapshotClient()를 호출하여- SnapshotClient의 인스턴스를 만듭니다.
- addOnSuccessListener를 사용하여- DetectedActivityResponse를 수신 대기할 수 있는- OnSuccessListener를 만듭니다.
- getStatus()를 호출하여 결과가 유효한지 확인합니다.
- DetectedActivityResponse.getActivityRecognitionResult()를 호출하여- ActivityRecognitionResult를 반환합니다. 이를 사용하여 사용자의 현재 활동의 여러 측면을 가져올 수 있습니다. 예를 들면 다음과 같습니다.- getMostProbableActivity()를 호출하여 가장 가능성이 높은 활동만 가져옵니다.
- getProbableActivities()를 호출하여 확률에 따라 순위가 지정된 최근 활동 목록을 가져옵니다.
- getActivityConfidence()를 호출하여 지정된 활동 유형의 신뢰도 값을 반환합니다.
- hasResult()을 호출하여- Intent에- ActivityRecognitionResult이 포함되어 있는지 감지합니다.
 
다음 코드 예에서는 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()를 호출합니다.
비콘 데이터는 첨부파일의 콘텐츠, 유형, 네임스페이스로 구성됩니다.
getBeaconState() 메서드에는 android.permission.ACCESS_FINE_LOCATION 권한이 필요합니다. 이 권한을 AndroidManifest.xml에 추가합니다.
또한 Google Play Console 프로젝트에 대해 Nearby Messages API를 활성화해야 합니다. 자세한 내용은 가입 및 API 키와 시작하기를 참고하세요.
근처 비콘에 관한 정보를 가져오려면 다음 단계를 실행하세요.
- 사용자가 필요한 권한을 부여했는지 확인합니다. 다음 예에서는 - android.permission.ACCESS_FINE_LOCATION권한이 부여되었는지 확인합니다. 그렇지 않으면 사용자에게 동의를 요청합니다.- 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; }
- BeaconState.TypeFilter을 정의합니다. 이렇게 하면 지정된 네임스페이스 및 유형으로 등록된 첨부파일이 있는 비콘만 반환됩니다. 첨부파일 콘텐츠의 바이트 단위 일치를 기반으로 필터링할 수도 있습니다. 다음 예에서는 유형 필터를 만드는 방법을 보여줍니다.- 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"));
- addOnSuccessListener를 사용하여- BeaconStateResponse를 수신 대기할 수 있는- OnSuccessListener를 만듭니다.
- 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();
        }
    })
헤드폰 상태 가져오기
헤드폰이 기기에 연결되어 있는지 감지하려면 getHeadphoneState()를 호출하세요. 그러면 OnSuccessListener이 감지로 설정된 HeadphoneStateResponse 감지 상태가 생성됩니다.
그런 다음 getHeadphoneState()을 호출하여 HeadphoneState을 가져올 수 있습니다.
현재 헤드폰 상태를 가져오려면 다음 단계를 실행하세요.
- getSnapshotClient.getHeadphoneState()을 호출합니다.
- addOnSuccessListener를 사용하여- HeadphoneStateResponse를 수신 대기할 수 있는- OnSuccessListener를 만듭니다.
- 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);
        }
    });
위치 가져오기
getLocation()를 호출하여 사용자의 현재 위치 (위도-경도)를 가져올 수 있으며, 이 호출은 LocationResponse를 반환합니다.
그런 다음 LocationResponse.getLocation()를 호출하여 현재 위치 데이터가 포함된 Location를 가져올 수 있습니다.
getLocation() 메서드에는 android.permission.ACCESS_FINE_LOCATION 권한이 필요합니다. 이 권한을 AndroidManifest.xml에 추가합니다.
현재 위치를 가져오려면 다음 단계를 실행하세요.
- 사용자가 필요한 권한을 부여했는지 확인합니다. 다음 예에서는 - android.permission.ACCESS_FINE_LOCATION권한이 부여되었는지 확인합니다. 그렇지 않으면 사용자에게 동의를 요청합니다.- 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를 사용하여- LocationResponse를 수신 대기할 수 있는- OnSuccessListener를 만듭니다.
- getStatus()를 호출하여 결과가 유효한지 확인합니다.
- LocationResponse.getLocation()를 호출하여 현재- Location를 반환합니다.
다음 예에서는 현재 위치를 가져오는 방법을 보여줍니다.
Awareness.getSnapshotClient(this).getLocation()
    .addOnSuccessListener(new OnSuccessListener<LocationResponse>() {
        @Override
        public void onSuccess(LocationResponse locationResponse) {
            Location loc = locationResponse.getLocationResult();
        }
    })