Android定位简介

.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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Barry__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值