0

GPSまたはネットワークから場所を取得しています。問題は、私は htc の欲望 hd でそれをテストし、それは完全に正常に動作したことです, しかし今、私はサムスンのギャラクシーの場所にある他のデバイスでテストを開始し、常にnullです.

これが場所を取得するための私のコードです

  locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
    currentLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    if( currentLocation == null){
    currentLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
    }

前もって感謝します

4

2 に答える 2

0

場所の変更にはリスナーを登録する必要があります。次のようなものを追加します。

 LocationListener locationListener = new LocationListener() {
            public void onLocationChanged(Location location) {
                if (location != null) {
                    doSomethingWithLocation();
                }
            }

            public void onProviderDisabled(String provider) {
            }

            public void onProviderEnabled(String provider) {
            }

            public void onStatusChanged(String provider, int status, Bundle extras) {
            }
        };
        locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, locationListener);

位置情報の更新をリクエストするときは、必ず適切な待ち時間を追加してください。1000 の代わりに 0 を使用すると、システムは新しい場所を取得するのに十分な時間がありません。

上記のコードを実行した後に getLastKnownLocation() を呼び出すと、null の問題が解消されます。

于 2011-12-13T04:39:58.890 に答える
0

GPS が機能するための API の例はありますか? アプリが既にロケーション リスナーをセットアップしており、最初のロケーションが到着するのを待っている場合にのみ、一部の電話はアプリに最後の既知のロケーションを提供すると思います。あなたのコードはこれをしません。

public class YourActivity extends Activity implements LocationListener {
    private LocationManager lm;
    @Override public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

        startLocating();
    }
    private void startLocating(){
        lm.requestLocationUpdates("gps", 0, 10, this);  
    }
    @Override
    public void onLocationChanged(Location arg0) {
        lm.removeUpdates(this);
        /*
         * put your code here
         */
    }
    @Override public void onProviderDisabled(String arg0) {}
    @Override public void onProviderEnabled(String provider) {}
    @Override public void onStatusChanged(String provider, int status, Bundle extras) {}

}
于 2011-05-07T06:19:01.507 に答える