이 섹션에서는 스냅샷 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();
}
})