이 섹션에서는 Snapshot API를 사용하여 지원되는 각 컨텍스트 유형의 현재 상태를 가져오는 방법을 보여줍니다. 자세한 내용은 시작하기를 참고하세요. 지원 중단된 문맥 시그널에 관한 자세한 내용은 다음 확장 가능한 알림을 참고하세요.
현재 활동 가져오기
사용자의 현재 활동을 가져오려면 사용자의 최근 활동에 대한 정보가 포함된 ActivityRecognitionResult
를 반환하는 getDetectedActivity()
를 호출합니다.
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 Developers 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
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);
}
});
위치 가져오기
LocationResponse
를 반환하는 getLocation()
를 호출하여 사용자의 현재 위치 (위도-경도)를 가져올 수 있습니다.
그런 다음 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();
}
})