자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Firemonkey TLocationSensor에는 안드로이드(자바)처럼 세부 설정이 없나요?
2017.11.20 15:49
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 바쁜 와중에도 답변을 주시는 분들께 감사 댓글 필수
-----------------------------------------------------------------------------------------------
https://medium.com/marojuns-android/location-manager%EB%A5%BC-%ED%86%B5%ED%95%9C-%EC%9C%84%EC%B9%98%EC%B8%A1%EC%9C%84-%EC%A0%84%EB%9E%B5-3a027af7a601
위 링크처럼 GPS기반에서 위치를 가져오는지 네트워크 기반으로 위치를 가져오는지 설정하는 프로퍼티가 설정이 없나요?
Use Permission에서 Access coarse location만 설정하면 TLocationSensor의 Active 값을 True로 설정해도 이벤트가 일어나지 않는 걸 보면 네트워크 기반으로만 위치정보를 가져오지 못하는것 같은데요~
확인 부탁 드립니다.
안드로이드 버전은 6.0.1
단말기는 Lenovo Phab2Pro입니다.
델파이 버전은 XE10.2입니다.
감사합니다.
Firemonkey TLocationSensor에는 안드로이드(자바)처럼 세부 설정이 없나요?
2017.11.20 15:49
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 바쁜 와중에도 답변을 주시는 분들께 감사 댓글 필수
-----------------------------------------------------------------------------------------------
https://medium.com/marojuns-android/location-manager%EB%A5%BC-%ED%86%B5%ED%95%9C-%EC%9C%84%EC%B9%98%EC%B8%A1%EC%9C%84-%EC%A0%84%EB%9E%B5-3a027af7a601
위 링크처럼 GPS기반에서 위치를 가져오는지 네트워크 기반으로 위치를 가져오는지 설정하는 프로퍼티가 설정이 없나요?
Use Permission에서 Access coarse location만 설정하면 TLocationSensor의 Active 값을 True로 설정해도 이벤트가 일어나지 않는 걸 보면 네트워크 기반으로만 위치정보를 가져오지 못하는것 같은데요~
확인 부탁 드립니다.
안드로이드 버전은 6.0.1
단말기는 Lenovo Phab2Pro입니다.
델파이 버전은 XE10.2입니다.
감사합니다.
아래 경로(10.2 도쿄 기본경로에 설치한 경우)에 안드로이드 LocationSensor 관련 코드가 있습니다.
C:\Program Files (x86)\Embarcadero\Studio\19.0\source\rtl\common\System.Android.Sensors.pas
그중 Criteria를 조정하는 부분은 대략 아래와 같습니다. 어떤 방식으로 위치정보를 가져오는지 참고하실 수 있을것 같습니다.
(Accuracy 속성이 지정된 경우에 한해 처리되네요.)
해당 작업이 익숙하시다면 직접 코드를 수정해서 사용하실 수도 있습니다.
(프로젝트 경로로 위 pas 파일 복사 후 프로젝트 추가 후 수정 시 빌드에 반영됩니다.)
function RunTheBestProvider(var ARunnable: TLocationRunnable; var AListener: TLocationListener):Boolean;
var
Criteria: JCriteria;
ProviderName: JString;
begin
Result := False;
Criteria := TJCriteria.JavaClass.init;
case Round(FAccuracy) of
0..100:
Criteria.setHorizontalAccuracy(TJCriteria.JavaClass.ACCURACY_HIGH);
101..500:
Criteria.setHorizontalAccuracy(TJCriteria.JavaClass.ACCURACY_MEDIUM);
else
Criteria.setHorizontalAccuracy(TJCriteria.JavaClass.ACCURACY_LOW);
end;
ProviderName := FLocationManager.getBestProvider(Criteria, True);
if ProviderName <> nil then
Result := RunIfPossible(ARunnable, AListener, ProviderName);
end;
그리고, 아래와 같은 코드가 있습니다.
FPermitted := TPermission.IsPermitted(StringToJString('android.permission.ACCESS_FINE_LOCATION'));
저도 해당 내용에 그렇게 깊이있게 이해하고 있지 않아 개략적인 답변만 드립니다.