Android定位简介
2016-06-01 20:58
429 查看
.Android定位的三种方式
(1)网络:wifi、2G、3G、4G、5G,网上的时候会分配给你一个IP地址,每个IP与实际地址是对应的;
(2)基站:基站越多定位越准,精确度为30米-1公里;
(3)GPS:美国的GPS卫星定位,全球有24颗卫星在为GPS定位服务,实际上有27颗,其中3个是备用的;
至少需要3个以上才能定位;精确度在15米左右;容易被高、厚、大的物体屏蔽GPS信号;
中国的北斗卫星,主要用于大型国企、科研、军事;民用的为美国的GPS卫星;
GPS设置的特点:不需要网络,定位时间长,开机启动慢;
(4)AGPS 网络辅助定位系统:结合了网络快速和GPS准确的优点;
在代码中使用LocationManager可以得到三种位置提供者;
packagecom.itheima.mobilesafe.service;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
importandroid.content.SharedPreferences;
importandroid.content.SharedPreferences.Editor;
import android.location.Location;
importandroid.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.IBinder;
public class GPSService extendsService {
privateLocationManager lm;
privateString a;
privateString j;
privateString w;
privateSharedPreferences sp;
privateMyLocationListener ml;
@Override
publicIBinder onBind(Intent intent) {
returnnull;
}
@Override
publicvoid onCreate() {
super.onCreate();
sp= getSharedPreferences("config", Context.MODE_PRIVATE);
lm= (LocationManager) getSystemService(LOCATION_SERVICE);
//更新地理位置信息
//provider 定位方式:GPS、网络、基站
//minTime 更新地理位置间隔的最小时间
//minDistance更新地理位置间隔的最小移动距离
//listener 位置变化的监听器
ml= new MyLocationListener();
// lm.getBestProvider(criteria, enabledOnly)
lm.requestLocationUpdates("gps",0, 0, ml);
}
@Override
publicvoid onDestroy() {
super.onDestroy();
//移除获得地理位置信息的监听器
lm.removeUpdates(ml);
lm= null;
}
/**
* 自定义一个位置监听器
* @author Administrator
*
*/
privateclass MyLocationListener implements LocationListener{
/**
* 位置发生变化回调这个方法
* location 位置对象
*/
@Override
publicvoid onLocationChanged(Location location) {
a= location.getAccuracy() + "/";
j= location.getLongitude() + "/";
w= location.getLatitude() + "";
Editoreditor = sp.edit();
editor.putString("location",a + j + w);
editor.commit();
}
/**
* 位置发生变化回调这个方法
* 定位方式的状态的变化:GPS 关闭-打开,打开-关闭
*/
@Override
publicvoid onStatusChanged(String provider, int status, Bundle extras) {
}
/**
*
* 定位方式可用时回调这个方法
*/
@Override
publicvoid onProviderEnabled(String provider) {
}
/**
*
* 定位方式不可用时回调这个方法
*/
@Override
publicvoid onProviderDisabled(String provider) {
}
}
}
(1)网络:wifi、2G、3G、4G、5G,网上的时候会分配给你一个IP地址,每个IP与实际地址是对应的;
(2)基站:基站越多定位越准,精确度为30米-1公里;
(3)GPS:美国的GPS卫星定位,全球有24颗卫星在为GPS定位服务,实际上有27颗,其中3个是备用的;
至少需要3个以上才能定位;精确度在15米左右;容易被高、厚、大的物体屏蔽GPS信号;
中国的北斗卫星,主要用于大型国企、科研、军事;民用的为美国的GPS卫星;
GPS设置的特点:不需要网络,定位时间长,开机启动慢;
(4)AGPS 网络辅助定位系统:结合了网络快速和GPS准确的优点;
在代码中使用LocationManager可以得到三种位置提供者;
packagecom.itheima.mobilesafe.service;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
importandroid.content.SharedPreferences;
importandroid.content.SharedPreferences.Editor;
import android.location.Location;
importandroid.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.IBinder;
public class GPSService extendsService {
privateLocationManager lm;
privateString a;
privateString j;
privateString w;
privateSharedPreferences sp;
privateMyLocationListener ml;
@Override
publicIBinder onBind(Intent intent) {
returnnull;
}
@Override
publicvoid onCreate() {
super.onCreate();
sp= getSharedPreferences("config", Context.MODE_PRIVATE);
lm= (LocationManager) getSystemService(LOCATION_SERVICE);
//更新地理位置信息
//provider 定位方式:GPS、网络、基站
//minTime 更新地理位置间隔的最小时间
//minDistance更新地理位置间隔的最小移动距离
//listener 位置变化的监听器
ml= new MyLocationListener();
// lm.getBestProvider(criteria, enabledOnly)
lm.requestLocationUpdates("gps",0, 0, ml);
}
@Override
publicvoid onDestroy() {
super.onDestroy();
//移除获得地理位置信息的监听器
lm.removeUpdates(ml);
lm= null;
}
/**
* 自定义一个位置监听器
* @author Administrator
*
*/
privateclass MyLocationListener implements LocationListener{
/**
* 位置发生变化回调这个方法
* location 位置对象
*/
@Override
publicvoid onLocationChanged(Location location) {
a= location.getAccuracy() + "/";
j= location.getLongitude() + "/";
w= location.getLatitude() + "";
Editoreditor = sp.edit();
editor.putString("location",a + j + w);
editor.commit();
}
/**
* 位置发生变化回调这个方法
* 定位方式的状态的变化:GPS 关闭-打开,打开-关闭
*/
@Override
publicvoid onStatusChanged(String provider, int status, Bundle extras) {
}
/**
*
* 定位方式可用时回调这个方法
*/
@Override
publicvoid onProviderEnabled(String provider) {
}
/**
*
* 定位方式不可用时回调这个方法
*/
@Override
publicvoid onProviderDisabled(String provider) {
}
}
}
相关文章推荐
- Android定位当前城市的实现
- 42.Android LocationManager
- 百度地图定位功能的使用
- Android定位获取当前经纬度
- 记录-Android根据手机gps或者网络获取当前位置
- android 百度地图定位辅助教程
- Android之如何判断定位是否开启及定位模式
- Android之使用GPS和NetWork定位
- 【框架】城市定位框架CityLocation_1.0
- Android利用API定位
- Android开源框架——事件总线 EventBus3.0讲解
- Android 自定义View (一)
- Android学习笔记-TextView实现跑马灯效果
- Android图片缓存之Lru算法(二)
- Android SQLite数据库添加数据出错 at android.database.sqlite.SQLiteStatement.releaseAndUnlock
- android隐式intent使用场景解析
- Android自由行之走进zxing,轻松实现二维码扫描
- 关于ubuntu14.04下开启wifi给Android使用的方法
- Android 控件绑定事件的几种方法
- Android的两种数据解析