private class TestLocationListener implements LocationListener{ @Override public void onLocationChanged(Location location){ System.out.println(location.getLongitude()); System.out.println(location.getLatitude()); } @Override public void onProviderDisabled(String provider){ // do something you need } @Override public void onProviderEnabled(String provider){ // do something you need } @Override public void onStatusChanged(String provider,int status,Bundle extras){ // do something you need } }
private class ButtonListener implements OnClickListener{ @Override public void onClick(View v){ // 得到LocationManager对象 LocationManager locationManager = (LocationManager)YourActivity.this.getSystemService(Context.LOCATION_SERVICE); // requestLocationUpdates(String provider,long minTime,float minDistance,LocationListener listener) // 第一个参数,定义当前所使用的Location Provider // 第二个参数,指示更新的最小时间,但并不是确定的,可能更多或更小 // 第三个参数,两次定位之间的最小距离,单位米。 // 第四个参数,监听器 LocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,new TestLocationListener()); }
List<String> providers = locationManager.getAllProviders(); for(Iterator iterator = providers.iterator();iterator.hasNext();){ String provider = (String)iterator.next(); System.out.println(provider); // and do something you need }
private class BestProviderButtonListener implements OnClickListener{ @Override public void onClick(View v){ // 生成一个Criteria对象 Criteria criteria = new Criteria(); // 设置查询条件 criteria.setAccuracy(Criteria.ACCURACY_FINE); // 设置准确而非粗糙的精度 criteria.setPowerRequirement(Criteria.POWER_LOW); // 设置相对省电而非耗电,一般高耗电量会换来更精确的位置信息 criteria.setAltitudeRequired(false); // 不需要提供海拔信息 criteria.setSpeedRequired(false); // 不需要速度信息 criteria.setCostAllowed(false); // 不能产生费用 // 第一个参数,传递criteria对象 // 第二个参数,若为false,在所有Provider中寻找,不管该Provider是否处于可用状态,均使用该Provider。 // 若为true,则在所有可用的Provider中寻找。比如GPS处于禁用状态,则忽略GPS Provider。 String provider = locationManager.getBestProvider(criteria,false); System.out.println("Best provider-->"+provider); } }