Android开发_LocationManager定位应用
2015-04-17 09:29
260 查看
Android中LocationManager的提供了一系列方法来处理地理位置相关的问题,包括查询上一个已知位置;注册/注销来自某个 LocationProvider的周期性的位置更新;以及注册/注销接近某个坐标时对一个已定义Intent的触发等。下面就来介绍Android 中LocatinManager的简单使用。
获取当前手机支持的所有定位服务
定位服务所需要的权限
使用定位服务
计算两点间的距离
实现接近某个位置是放出警报
获取当前手机支持的所有定位服务
public class AllProvidersActivity extends Activity { private ListView mProviders; private LocationManager mLocationManager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mProviders = (ListView) findViewById(R.id.providers); // 获取LocationManager服务 mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); // 获取当前可用的定位服务名称 List<String> providerNames = mLocationManager.getAllProviders(); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, providerNames); mProviders.setAdapter(adapter); } }
定位服务所需要的权限
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.INTERNET"/>
使用定位服务
public class LocationActivity extends Activity { LocationManager mLocationManager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); // GPS定位的服务 Location location = mLocationManager .getLastKnownLocation(LocationManager.GPS_PROVIDER); updateView(location); // 注册监听事件 mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 8, new LocationListener() { // 状态发生改变 @Override public void onStatusChanged(String provider, int status, Bundle extras) { } // 定位服务开启 @Override public void onProviderEnabled(String provider) { updateView(mLocationManager .getLastKnownLocation(provider)); } // 定位服务不可用 @Override public void onProviderDisabled(String provider) { } // 定位信息发生改变 @Override public void onLocationChanged(Location location) { updateView(location); } }); } // 更新位置信息 public void updateView(Location newLocation) { if (newLocation != null) { StringBuilder sb = new StringBuilder(); sb.append("位置信息:\n"); sb.append("经度:"); sb.append(newLocation.getLongitude()); sb.append("\n纬度:"); sb.append(newLocation.getLatitude()); sb.append("\n高度:"); sb.append(newLocation.getAltitude()); sb.append("\n速度"); sb.append(newLocation.getSpeed()); sb.append("\n方向"); sb.append(newLocation.getBearing()); System.out.println(sb.toString()); } } }
计算两点间的距离
public class DistanceActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.lv); final float[] results = new float[3]; Location.distanceBetween(20.123, 30.05644, 30.124, 40.543, results); System.out.println(String.valueOf(results[0]) + "米"); } }
实现接近某个位置是放出警报
public class ProximityAlertActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); // 设置目的地的位置 double longitude = 123.427109; double latitude = 41.764998; float radius = 2000; Intent intent = new Intent(this, PromimityAlertRecivery.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 1, intent, 0); locationManager.addProximityAlert(latitude, longitude, radius, -1, pendingIntent); } }
public class PromimityAlertRecivery { public void onReceive(Context context, Intent intent) { // 获取传来的数据 boolean isEnter = intent.getBooleanExtra( LocationManager.KEY_PROXIMITY_ENTERING, false); if (isEnter) { Toast.makeText(context, "已经进入目的地范围", Toast.LENGTH_LONG).show(); } else { Toast.makeText(context, "已经离开目的地范围", Toast.LENGTH_LONG).show(); } } }
相关文章推荐
- Android应用开发人员定位之我见
- Android开发--地图与定位应用--申请Google地图服务(API Key)
- Android手机应用开发之手机GPS定位
- Android应用开发之(Location in Android-定位)
- Android应用开发之(Location in Android-定位)
- Android应用开发之(Location in Android-定位)
- Android开发:LocationManager获取经纬度及定位过程(附demo)
- 【Xamarin开发 Android 系列 12】 创建一个Json读取数据应用-添加定位服务
- 【总结备用】Android应用开发之(Location in Android-定位)
- Android实现定位---GPS应用开发
- Android开发 百度地图开发(定位、传感器应用)
- Android应用百度地图开发定位的问题,新手求大神帮忙看下
- Android应用开发之图片(Bitmap)压缩(三)---------采样率压缩
- 【备忘】开发Android移动互联网应用视频 下载
- MVP模式在Android开发中的应用
- Android百度地图开发(二)定位之自动定位及标注(及定位几日内瓦或坐标4.9E-324问题)
- Android 开发规范与应用
- 开发者必知:提升Android应用开发性能的十大要点
- Android 开发应用时的简单IO流使用
- Xamarin Studio开发Android应用