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 准确。如果 wifi 网络的准确度在 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 回答