我的简单android应用程序使用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")
public class 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
}
}
答案 0 :(得分:3)
我认为,您在位置检测功能中添加了代码,LocationListener
处于活动状态。这意味着当GPS检测新位置时会调用您的Toast。
答案 1 :(得分:3)
请阅读方法LocationManager.requestLocationUpdates()的文档。
特别是参数:
minTime minimum time interval between location updates, in milliseconds.
每10秒尝试一次值10'000。在生产中,你应该考虑超过分钟的价值。
答案 2 :(得分:1)
看起来您的位置监听器处于活动状态并反复被调用。你搬家了吗?位置更改时会调用LocationListener。
答案 3 :(得分: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);
}
长度和长度应大于0。