2012-10-02 1 views
0

거리 측정에 GPS를 사용했습니다. GPS로 인해 때때로 위치 변경 사항이 오랜 시간 업데이트되지 않는 경우가 있습니다.위치 안드로이드에서

어떤 해결책이 있습니까?

locationListen = new LocationListener() { 

     public void onLocationChanged(Location currentLocation) { 
      if (prevLocation != null){ 
       test = currentLocation.distanceTo(prevLocation); 
       distance+=test; 
      } 
      prevLocation = currentLocation; 

     } 

     public void onStatusChanged(String provider, int status, Bundle b) { 
      switch (status) { 
      case LocationProvider.OUT_OF_SERVICE: 
       Toast.makeText(MainActivity.this, 
         "Status Changed: Out of Service " + provider, 
         Toast.LENGTH_SHORT).show(); 
       break; 
      case LocationProvider.TEMPORARILY_UNAVAILABLE: 
       Toast.makeText(
         MainActivity.this, 
         "Status Changed: Temporarily Unavailable " 
           + provider, Toast.LENGTH_SHORT).show(); 
       break; 
      case LocationProvider.AVAILABLE: 
       Toast.makeText(MainActivity.this, 
         "Status Changed: Available " + provider, 
         Toast.LENGTH_SHORT).show(); 
       break; 
      } 
     } 

     public void onProviderDisabled(String s) { 
     } 

     public void onProviderEnabled(String s) { 
     } 
    }; 

    startOperation.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View but) { 
      if (startOperation.getText().equals("Start Calculating Fare")) { 
       mHandler.post(run); 
       myManager.requestLocationUpdates(
           LocationManager.GPS_PROVIDER, 1000, 10, 
           locationListen); 
       startOperation.setText("Stop the calculations"); 
      } else { 
       mHandler.removeCallbacks(run); 
       myManager.removeUpdates(locationListen); 
       finalInfos(); 
      } 
     } 
    }); 

위치 수신기 용 내 코드. GPS를 사용하여 업데이트됩니다. 내가 말한대로 GPS는 때로는 위치를 감지하기에는 너무 길다.

+0

코드를 붙여 넣으십시오. –

+0

GPS를 사용할 수 없거나 위도 및 경도가 변경되지 않았을 수 있습니다. – SilentKiller

+0

@SilentKiller @SilentKiller도 그렇게 생각합니다. 어떻게 개선 할 수 있습니까? 어떤 생각? – Xelamae

답변

0

코드에서 GPS 전용 위치 공급자를 명시 적으로 요구하고있다. 이로 인해 안드로이드는 모든 단점 (GPS는 예를 들어 하늘을 일목요연하게 바라 볼 필요가 있음)과 함께 GPS만을 사용하게됩니다.

신뢰할 수있는 장치 추적을 얻으려면보다 안정적이고 유연한 위치 전략을 사용하고, 변경된 외부 시나리오 (실내/실외 등)에 따라 현재 위치 공급자를 변경해야합니다. 더 좋은 점은, 동시에 다른 위치 공급자 (즉, "하이브리드"포지셔닝 시스템) 전체 세트를 사용할 수 있다는 것입니다.

다음 이전 SO 대답 질문에서보세요 :

http://developer.android.com/guide/topics/location/strategies.html

http://developer.android.com/training/basics/location/locationmanager.html

:

Using requestLocationUpdates for more than one provider

그리고 안드로이드 문서의 다음 페이지에

More than one location provider at same time

+0

그냥 getBestProvider()를 사용할 수 있습니까? – Xelamae

+0

예, 아니요. getBestProvider는 현재 귀하의 기준을 가장 잘 충족시키는 위치 제공자를 제공합니다. 이러한 기준은 정적입니다. 선언 된 후에는 항상 동일하게 유지되므로 결과 위치 제공자도 마찬가지입니다. 대신 변화하는 시나리오에 동적으로 적응하는 방법이 필요합니다. 이것이 코드에서 이러한 변경 사항을 처리해야하는 이유입니다. – AlexBottoni