【问题标题】:Android: GPS lose fixAndroid:GPS 丢失修复
【发布时间】:2012-08-18 15:38:41
【问题描述】:

我对 Android 上的 gps 实施有疑问。问题是 GPS 丢失修复。位置图标正在闪烁,几秒钟后 toast 显示位置,然后 GPS 丢失定位并尝试再次连接。

我的服务:

public class LocationService extends Service {

    private static final long MIN_TIME = 15000;
    private static final float MIN_DISTANCE = 1;

    private final IBinder binder = new LocalBinder();

    private LocationManager locationManager;

    @Override
    public void onCreate() {
        super.onCreate();

        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);     
    }

    @Override
    public IBinder onBind(Intent intent) {
        return binder;
    }

    public class LocalBinder extends Binder {
        LocationService getService() {
            return LocationService.this;
        }
    }

    public void setListener(LocationListener listener) {
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME, MIN_DISTANCE, listener);
    }

    public void removeListener(LocationListener listener) {
        locationManager.removeUpdates(listener);
    }
}

我的活动:

public class MainMapActivity extends CustomMapActivity implements LocationListener {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.map_layout);

        Intent i = new Intent(this, LocationService.class);
        startService(i);
        bindService(i, conn, BIND_AUTO_CREATE);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        unbindService(conn);
    }

    ServiceConnection conn = new ServiceConnection() {

        @Override
        public void onServiceDisconnected(ComponentName name) {

        }

        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            // TODO Auto-generated method stub
            serv = ((LocalBinder)service).getService();
            serv.setListener(MainMapActivity.this);
        }
    };

    @Override
    public void onLocationChanged(Location location) {
        Toast.makeText(this, Double.toString(location.getLatitude())+Double.toString(location.getLongitude()),     Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onProviderDisabled(String provider) {

    }

    @Override
    public void onProviderEnabled(String provider) {

    }

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

    }
}

这不是设备的问题,因为在 Google Map App 中它可以完美运行。

感谢您的帮助

【问题讨论】:

    标签: android gps


    【解决方案1】:

    您已将至少 15 秒的时间参数传递给位置侦听器。在大多数设备/操作系统版本中,这会在重新启用 GPS 之前将其关闭一段时间。

    【讨论】:

      猜你喜欢
      • 2016-05-05
      • 2021-05-08
      • 2014-09-01
      • 2014-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-06
      • 2013-09-04
      相关资源
      最近更新 更多