0

私はいくつかのコードを持っています:

マニフェスト

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

活動分野

 private LocationManager locationManager;
 private LocationListener mlocListener;

onCreate 初期化

locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
mlocListener = new MyLocationListener();
locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);

クラス MyLocationListener

    public class MyLocationListener implements LocationListener{

        @Override
        public void onLocationChanged(Location loc){
        }


        @Override

        public void onProviderDisabled(String provider){
            Toast.makeText( getApplicationContext(), "Gps Disabled", Toast.LENGTH_SHORT ).show();
        }

        @Override
        public void onProviderEnabled(String provider){
            Toast.makeText( getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show();
        }


        @Override

        public void onStatusChanged(String provider, int status, Bundle extras){
        }

    }

そして私はボタン、onclick =ユーザーのGPS位置を取得しています

public void getUserLocation(View v){
    boolean enabled = locationManager
            .isProviderEnabled(LocationManager.GPS_PROVIDER);

    if (!enabled) {
          Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
              startActivity(intent);
    } else {
            Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
            Toast.makeText(getApplicationContext(), String.valueOf(location.getLatitude()) + " " + String.valueOf(location.getLongitude()), Toast.LENGTH_SHORT).show();
    }
}

getLastKnownLocation でエラーが発生しました。locationManager に getLastKnownLocation があることを確認するにはどうすればよいですか?? requestLocationUpdates 自動で場所を取得する必要がありますね??

興味深いことに、requestLocationUpdates (minTime と minDistance) のどのパラメーターを使用する方がよいでしょうか?? ユーザーのバッテリーをあまり食べたくない

4

2 に答える 2

2

locationManager に getLastKnownLocation があることを確認するにはどうすればよいですか??

ヌルチェックだけで必要なことが行われます

requestLocationUpdates 自動で場所を取得する必要がありますね??

ネットワークまたは Gps からリクエストするとすぐに。位置情報の更新を探し始めます。ただし、時間がかかる場合があります。

GPS の更新はさらに遅くなります。オープンスカイが必要ですが、より正確です。

ネットワークの更新は、今後さらに高速化されます。ただし、GPS に比べて精度は低くなります。Wi-Fi ネットワークの精度は 50 ~ 100 前後で、ほとんどのシナリオに適しています。

興味深いことに、requestLocationUpdates (minTime と minDistance) のどのパラメーターを使用する方がよいでしょうか?? ユーザーのバッテリーをあまり食べたくない

希望する精度の更新を取得したらすぐに 0,0 を使用して、位置更新のリスニングから登録解除します。

于 2012-04-30T08:23:19.037 に答える
0
Use this..
   /*
     * getting the best location using the location manager
     */
    mLocation = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    Criteria criteria = new Criteria();
    mBestProvider = mLocation.getBestProvider(criteria, false);
    Location location = mLocation.getLastKnownLocation(mBestProvider);
    mLocation.requestLocationUpdates(
            LocationManager.GPS_PROVIDER, 
            Constants.MINIMUM_TIME_BETWEEN_UPDATES, 
            Constants.MINIMUM_DISTANCE_CHANGE_FOR_UPDATES,
            new LocationListenerManager()
    );
    if(location!=null) {
    latitude = location.getLatitude();
    longitude = location.getLongitude(); 
           }
            else { // handle by urself

            }
于 2012-04-30T08:23:50.583 に答える