2012-08-30 3 views
1

GPS 코드를 사용하는 간단한 안드로이드 응용 프로그램에 문제가 있습니다.토스트가 화면에서 사라지지 않습니다.

내 클래스 MyLocationListener는 LocationListener를 구현하고, 정적 메서드 호출이 :

String strText ="My current location is: " + "Latitude = " + location.getLatitude() + " Longitude= " + location.getLongitude(); 
    Toast.makeText(GpsModule.cont, strText, Toast.LENGTH_SHORT).show(); 

문제는이 문자열을 표시로됩니다. 그것은 나타나고 끝나지 않습니다. 주 메뉴에서 뒤로 버튼을 누르면 응용 프로그램을 닫을 때도 끊임없이 표시됩니다. 어떤 단서? 이 문제를 어떻게 해결할 수 있습니까?

GpsModule 등급 :

public class GpsModule extends Activity { 

public static Context cont; 
//public static WebView position; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.gps); 
    cont = getApplicationContext(); 
    //position = new WebView(cont); 

    //position = (WebView) findViewById(R.layout.gps); 
    //position.getSettings().setJavaScriptEnabled(true); 


    LocationManager locManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
    LocationListener locListener = new MyLocationListener(); 
    locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locListener); 
} 

MyLocationListener 클래스 :

@SuppressLint("ShowToast") 

공용 클래스 MyLocationListener는 LocationListener를 구현은 {

public void onLocationChanged(Location location) { 
    // TODO Auto-generated method stub 
    location.getLatitude(); 
    location.getLongitude(); 

    String strText ="My current location is: " + "Latitude = " + location.getLatitude() + " Longitude= " + location.getLongitude(); 
    Toast.makeText(GpsModule.cont, strText, Toast.LENGTH_SHORT).show(); 

} 

public void onProviderDisabled(String provider) { 
    // TODO Auto-generated method stub 
    Toast.makeText(GpsModule.cont, "GPS disabled", Toast.LENGTH_SHORT).show(); 
} 

public void onProviderEnabled(String provider) { 
    // TODO Auto-generated method stub 
    Toast.makeText(GpsModule.cont, "GPS enabled", Toast.LENGTH_SHORT).show(); 
} 

public void onStatusChanged(String provider, int status, Bundle extras) { 
    // TODO Auto-generated method stub 

} 

}

+1

그 라인을 어디에서 부릅니까? –

+1

이 처리기 또는 비동기 작업에서 호출되는 이유는 무엇입니까? –

+1

끊임없이 전화하지 않는 것이 확실합니까? –

답변

3

이 방법 LocationManager.requestLocationUpdates()의 문서를 읽어 보시기 바랍니다보다 더해야한다.

특히 파라미터 : 매 10 초

minTime  minimum time interval between location updates, in milliseconds. 

시도 값 10'000. 생산 단계에서는 분당 이상의 가치를 고려해야합니다.

+0

도움을 주셔서 감사합니다.2 가지 문제가 있습니다. - requestLocationUpdates()의 매개 변수가있는 매개 변수 - 문제를 해결했으며 많이 고마워요 - 뒤로 버튼을 클릭 한 후에 토스트를 표시하는 경우 –

+1

토스트 표시가 UI 스레드에서 발생하지 않습니다. 나는 당신이 그것을 바꿀 수 있다고 생각하지 않는다. 알림 API를 볼 수 있습니다. – user802421

1

은 리튬을 보이는 귀하의 위치 수신기가 활성화되어 반복적으로 호출됩니다. 너는 너의 장치를 움직이고 있니? LocationListener는 위치가 변경 될 때 호출됩니다.

+0

전화가 움직이지 않는 경우에도 번호 정밀도로 인해 위치가 변경됩니다. 예 : 50,00443558333333 –

3

내 위치 감지 기능에 코드를 추가하고 LocationListener이 (가) 활성화되어 있다고 생각합니다. 즉, GPS가 새 위치를 감지하면 토스트가 호출됩니다.

+0

맞습니다. 가능한 해결책은 무엇입니까? 나는 수업의 근원을 추가했다. 좀 봐 줄래? –

1

시도해보십시오.

Toast.makeText(getBaseContext(), strText, Toast.LENGTH_SHORT).show(); 

2.

@Override 
public void onPause() { 
    super.onPause(); 
    locationManager.removeUpdates(locationListener); 
} 

3.

@Override 
    public void onResume() { 
     super.onResume(); 
     locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 
       Length, long, locationListener); 
    } 

길이 긴 0

+0

도움 주셔서 감사합니다. 2 가지 문제가 있습니다. - requestLocationUpdates()에 매개 변수가있는 매개 변수가 하나 있습니다. - 뒤로 버튼을 클릭 한 후에도 토스트가 표시된 것과 하나 - 문제가 해결되어 많은 감사를드립니다. –

관련 문제