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

この文字列の表示に問題があります。それは現れていて、終わることはありません。メインメニューの戻るボタンを押すと、アプリケーションを閉じても常に表示されます。どんな手掛かり?この問題を解決するにはどうすればよいですか?

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

}

}

4

4 に答える 4

3

メソッドLocationManager.requestLocationUpdates()のドキュメントをお読みください。

特にパラメータ:

    minTime     minimum time interval between location updates, in milliseconds.

10 秒ごとに値 10'000 を試してください。本番環境では、mins よりも値を考慮する必要があります。

于 2012-08-30T16:40:51.560 に答える
3

LocationListener位置検出機能にコードを追加してアクティブになっていると思います。これは、GPS が新しい位置を検出したときに Toast が呼び出されることを意味します。

于 2012-08-30T16:19:35.050 に答える
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 に答える