1

我使用 GPS 线的简单 android 应用程序有问题。

我的MyLocationListener类实现了LocationListener,还有一个静态方法调用:

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

问题在于显示此字符串。它出现了,永远不会结束。当我按下主菜单的后退按钮时,即使我关闭应用程序,它也会不断出现。有什么线索吗?我该如何解决这个问题?

Gps模块类:

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

}

}

4

4 回答 4

3

我认为,您将代码添加到位置检测功能中并且LocationListener处于活动状态。这意味着当 GPS 检测到新位置时会调用您的 Toast。

于 2012-08-30T16:19:35.050 回答
3

请阅读方法LocationManager.requestLocationUpdates()的文档。

特别是参数:

    minTime     minimum time interval between location updates, in milliseconds.

每 10 秒尝试 10'000 的值。在生产中,您应该考虑的价值超过分钟。

于 2012-08-30T16:40:51.560 回答
1

看起来您的位置侦听器处于活动状态并反复被调用。你在移动你的设备吗?LocationListener 在位置改变时被调用。

于 2012-08-30T16:05:44.990 回答
1

试试这个,

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);
    }

length 和 long 应该大于 0。

于 2012-08-30T16:34:21.423 回答