android:LocationManager详解(-)

通过在网络上查找相关资料以及阅读相关源码,总结如下:

这个类提供访问系统位置服务的访问。这些服务允许应用程序获得定期更新设备的地理位置。

点击下载源码:一个简单的demo,从网络中获取GPS信息

1、LocationManager : provider

 public static final String NETWORK_PROVIDER = "network";
 相关权限:
 android.permission.ACCESS_COARSE_LOCATION
 android.permission.ACCESS_FINE_LOCATION
  public static final String GPS_PROVIDER = "gps";
  相关权限:
  android.permission.ACCESS_FINE_LOCATION
   public static final String PASSIVE_PROVIDER = "passive";
   相关权限:
   android.permission.ACCESS_FINE_LOCATION

LocationManager.GPS_PROVIDER:GPS,精度高,速度慢,耗电对,而且可能因为天气原因或者障碍物而无法获取卫星信息,另外设备可能没有GPS模块(比如说一些平板);
LocationManager.NETWORK_PROVIDER:通过网络获取定位信息,精度低,网络通畅时速度快,耗电少,不依赖GPS模块。

2、获得LocationManager实例

protected LocationManager  locationManager;
locationManager=(LocationManager) getSystemService(Context.LOCATION_SERVICE);

3、LocationListener:位置监听器接口

protected final LocationListener locationListener=new LocationListener() {

            // Provider的在可用、暂时不可用和无服务三个状态直接切换时触发此函数
            @Override
            public void onStatusChanged(String provider, int status, Bundle extras) {
                // TODO Auto-generated method stub

            }
            //  Provider被enable时触发此函数,比如GPS被打开
            @Override
            public void onProviderEnabled(String provider) {
                // TODO Auto-generated method stub

            }
            // Provider被disable时触发此函数,比如GPS被关闭
            @Override
            public void onProviderDisabled(String provider) {
                // TODO Auto-generated method stub

            }
            //当坐标改变时触发此函数
            @Override
            public void onLocationChanged(Location location) {
                // TODO Auto-generated method stub
                mlocation=location;

            }
    };

4、获取所有的Provider

//获取当前设备所有的Provider

        List<String> allprovides=locationManager.getAllProviders();
        for(String allprovide:allprovides){
            Log.i("Test", allprovide);
        }

5、绑定监听与解绑

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);

locationManager.removeUpdates(locationListener);

6、注意事项

在使用网络获取GPS时,需要先判断基于网络的位置服务是否开启了。
locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)

7、一个简单的例子

package com.example.locationmanagerdemo;

import java.util.List;

import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity {
    protected LocationManager  locationManager;
    protected Location mlocation;
    TextView gpstext;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        gpstext=(TextView) findViewById(R.id.gpstext);
        locationManager=(LocationManager) getSystemService(Context.LOCATION_SERVICE);

        //首先判断网络是否可用
        if(locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
            locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
        }else{
            //将手机位置服务中--基于网络的位置服务关闭后,则获取不到数据
            showgps("NETWORK_PROVIDER不可用,无法获取GPS信息!");
        }

        //获取当前设备说有的Provider

        List<String> allprovides=locationManager.getAllProviders();
        for(String allprovide:allprovides){
            Log.i("Test", allprovide);
        }

    }

    protected final LocationListener locationListener=new LocationListener() {

            // Provider的在可用、暂时不可用和无服务三个状态直接切换时触发此函数
            @Override
            public void onStatusChanged(String provider, int status, Bundle extras) {
                // TODO Auto-generated method stub

            }
            //  Provider被enable时触发此函数,比如GPS被打开
            @Override
            public void onProviderEnabled(String provider) {
                // TODO Auto-generated method stub

            }
            // Provider被disable时触发此函数,比如GPS被关闭
            @Override
            public void onProviderDisabled(String provider) {
                // TODO Auto-generated method stub

            }
            //当坐标改变时触发此函数
            @Override
            public void onLocationChanged(Location location) {
                // TODO Auto-generated method stub
                mlocation=location;
                //解除监听
                locationManager.removeUpdates(locationListener);
                String  gpsinfo="GPS: Latitude="+mlocation.getLatitude()+"   Longitude="+mlocation.getLongitude();
                showgps(gpsinfo);
            }
    };


    public void showgps(String info){
        gpstext.setText(info);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}

点击下载源码:一个简单的demo,从网络中获取GPS信息

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 中的 LocationManager 是用于获取设备当前位置信息的类,下面是使用 LocationManager 的基本方法: 1. 获取 LocationManager 实例: 要使用 LocationManager,首先需要获取它的实例。可以通过 getSystemService() 方法来获取系统级的 LocationManager 实例,例如: LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 2. 设置位置更新监听器: 要获取设备位置信息,需要注册一个位置更新监听器。可以通过 locationManager 的 requestLocationUpdates() 方法来设置监听器,设置监听器需要指定位置信息的更新频率和最小更新距离等参数: locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, locationListener); 3. 实现位置监听器: 需要自定义一个 LocationListener 的实现类来处理位置信息的更新。在 LocationListener 的回调方法中可以处理获取到的位置信息,例如: private class MyLocationListener implements LocationListener { @Override public void onLocationChanged(Location location) { // 处理获取到的位置信息 } @Override public void onStatusChanged(String provider, int status, Bundle extras) { // 位置提供者状态变化时的处理 } @Override public void onProviderEnabled(String provider) { // 位置提供者启用时的处理 } @Override public void onProviderDisabled(String provider) { // 位置提供者禁用时的处理 } } 4. 获取最后已知的位置信息: 除了实时获取设备位置信息外,还可以通过 LocationManager 的 getLastKnownLocation() 方法来获取设备最后一次已知的位置信息,例如: Location lastKnownLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 通过以上方法,可以使用 LocationManager 来获取设备的当前位置信息,并且可以在位置信息更新时及时进行处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值