Android 앱을 개발 중이며 기기가 lat 및 lon으로 설명 된 특정 시점에 도달했는지 확인해야합니다. 내가 생각할 수있는 유일한 방법은 다음과 같습니다.Android gps : 특정 지점에 도달했는지 확인하는 방법은 무엇인가요?
Location initLoc = theManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double lat = initLoc.getLatitude();
double lon = initLoc.getLongitude();
MyPoint firstPoint = getPoints().get(0);
double dist = CalcHelper.getDistance1(lat, lat, firstPoint.getLat(), firstPoint.getLon());
while(dist > 30){
initLoc = theManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
lat = initLoc.getLatitude();
lon = initLoc.getLongitude();
dist = CalcHelper.getDistance1(lat, lon, firstPoint.getLat(), firstPoint.getLon());
}
그러나 이로 인해 프로그램이 중단됩니다. 네가 나를 올바른 방향으로 이끌 수 있다면 나는 매우 감사하게 생각한다.
추가 질문을 할 기회를 갖도록하겠습니다. 내가 안드로이드와 GPS에 익숙하지 않다는 것을 염두에두고 GPS를 사용하는 응용 프로그램을 올바르게 개발하는 방법에 대한 문서와 정보는 거의 없다. 기본적으로 나는 장님으로 작업하고있다. 그래서 내 질문은 : 내가 뭘하려고 오전 내가로 제공 한 트랙의 시작에 도달 할 때 프로그램이 결정하는 것입니다
public void onLocationChanged(Location location) {
double lat = location.getLatitude();
double lon = location.getLongitude();
MyPoint firstPoint = MainScreen.dataset.getPoints().get(0);
double dist = CalcHelper.getDistance1(lat, firstPoint.getLat(),lon, firstPoint.getLon());
if(dist < 10){
Context context = getApplicationContext();
CharSequence text = "Start reached. Starting moving on track";
int duration = 6000;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}else{
Context context = getApplicationContext();
CharSequence text = "Distance until start: "+dist;
int duration = 6000;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
:
이 같은 onLocationChanged 방법은 모습입니다 포인트 세트. 따라서 프로그램을 시작하면 거리에 대한 합리적인 추정치가 제공됩니다. 문제는 내가 움직이기 시작할 때 거리가 업데이트되지 않는 것처럼 보입니다. 그러나 50 미터를 움직이면 업데이트됩니다. 반면에 응용 프로그램을 시작하고 시작 지점에서 10m 이내에 있지 않으면 올바르게 감지합니다. 그래서 기본적으로, 내가 장치와 함께 움직이는 동안, onLocationChanged 메소드는 지금 내가있는 정확한 위치를 알려주지 않는 것 같습니다. 내가 뭘 잘못하고 있는지 말해 줄 수 있니?
를 필요로하는 것을 정확하게 수 있습니다. 그리고 추가적인 오류 분석을 위해서도 우리는 그것을 필요로합니다. – mreichelt
답변 주셔서 감사합니다 : mreichelt : 실제로, 내 나쁜, 단지 응답을 멈추지 않는 충돌하지 않습니다. 기본적으로 while() 루프를 사용하고 위치 업데이트를 요청하면 작동하지 않는다고 생각합니다. onLocationChanged 메서드에서 if 문을 사용하기 만하면됩니다. – Petar