zoukankan      html  css  js  c++  java
  • android获取手机位置服务

    Using the Location Manager

        只需要进行一些简单的设置,你的应用程序就可以接受位置更新

    第一步:获得权限:

    1     <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
    2     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    3     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

    第二步:获得位置管理者LocationManager

             LocationManager是一个主类,在android里你通过这个类你可以使位置服务。使用方法类似于其他的服务,通过调用getSystemService方法可以获得相应的引用。如果你的应用想要在前台(在Activity里)获得位置更新

    1 LocationManager locationManager =  (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

    第三步:挑选一个位置提供者

      android中存在三种位置提供者:1.基于基站的地位服务,精确度不高,在200—2000米之间。

                                               2.基于GPS 精确度在2-10m ,但是获取位置的时候手机所在的地方头顶必须空旷

                                               3.基于网络(3G或者wifi),精确度依赖精确的数据库,例如谷歌纵横

    示范1:获取GPS提供者的服务

    LocationProvider provider = locationManager.getProvider(LocationManager.GPS_PROVIDER);

    示范2:获取手机其中一种位置提供者

      1 package cn.itcast.mobilesafe.engine;
      2 
      3 import android.content.Context;
      4 import android.content.SharedPreferences;
      5 import android.content.SharedPreferences.Editor;
      6 import android.location.Criteria;
      7 import android.location.Location;
      8 import android.location.LocationListener;
      9 import android.location.LocationManager;
     10 import android.os.Bundle;
     11 import android.util.Log;
     12 
     13 public class GPSInfoProvider {
     14     private static GPSInfoProvider mGPSInfoProvider;
     15     private static LocationManager lm;
     16     private static final String tag = "GPSInfoProvider";
     17     private static SharedPreferences sp;
     18 
     19     private GPSInfoProvider() {
     20 
     21     }
     22 
     23     public static GPSInfoProvider getInstance(Context context) {
     24         if (mGPSInfoProvider == null) {
     25             mGPSInfoProvider = new GPSInfoProvider();
     26             // 取得获取位置的服务
     27             lm = (LocationManager) context
     28                     .getSystemService(Context.LOCATION_SERVICE);
     29             Criteria criteria = new Criteria();
     30             // 获取精确的位置ACCURACY_FINE
     31             criteria.setAccuracy(Criteria.ACCURACY_FINE);
     32             // 是否允许付费
     33             criteria.setCostAllowed(true);
     34             // 对电量的要求
     35             criteria.setPowerRequirement(Criteria.POWER_HIGH);
     36             // 是否显示海拔的位置
     37             criteria.setAltitudeRequired(true);
     38 
     39             String provider = lm.getBestProvider(criteria, true);
     40             Log.i(tag, provider);
     41 
     42             // 设置监听事件
     43             MyListener listener = new GPSInfoProvider().new MyListener();
     44             lm.requestLocationUpdates(provider, 60000, 100, listener);
     45             sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);
     46 
     47         }
     48 
     49         return mGPSInfoProvider;
     50 
     51     }
     52 
     53     class MyListener implements LocationListener {
     54 
     55         /**
     56          * 当手机位置发生改变的时候 调用方法
     57          */
     58         public void onLocationChanged(Location location) {
     59             String latitude = "latitude" + location.getLatitude();// 纬度
     60             String longitude = "longitude" + location.getLongitude();// 精度
     61             String accuracy = "accuracy" + location.getAccuracy();// 精确度
     62 
     63             System.out.println("latitude:" + location.getLatitude()
     64                     + "longitude:" + location.getLongitude() + "accuracy:"
     65                     + location.getAccuracy());
     66 
     67             Editor edit = sp.edit();
     68             edit.putString("last_location", latitude + "-" + longitude + "-"
     69                     + accuracy);
     70             edit.commit();
     71 
     72         }
     73 
     74         /**
     75          * 当某个位置提供者不可用的时候,调用方法
     76          */
     77         public void onProviderDisabled(String provider) {
     78 
     79         }
     80 
     81         /**
     82          * 当某个位置提供者可用的时候,调用
     83          */
     84         public void onProviderEnabled(String provider) {
     85 
     86         }
     87 
     88         /**
     89          * 当位置提供者状态发生改变的时候,调用方法
     90          */
     91         public void onStatusChanged(String provider, int status, Bundle extras) {
     92 
     93         }
     94 
     95     }
     96 
     97     public String getLocation() {
     98 
     99         String location = sp.getString("last_location", "");
    100         return location;
    101 
    102     }
    103 }

      以上代码,调用getLocation方法即可或得位置信息

      

  • 相关阅读:
    深入分析 Python 的垃圾回收机制
    9.26
    Web安全之ML--构建机器学习工具箱
    第八节--图的数据结构及其算法
    第七节--树形结构及其算法
    第六节--堆栈与队列算法
    第四节--查找与哈希算法
    第三节--排序算法
    第二节--常用数据结构
    第一节--走入算法的世界
  • 原文地址:https://www.cnblogs.com/tagie/p/3119483.html
Copyright © 2011-2022 走看看