LBS简单的使用

**1.首先定义LocationMananger和Location**
 /**
     * 定位管理(位置服务)
     */
    LocationManager locationManager;

    //位置
    Location location;

**2、在onCreate里面初始化locationManager和location** 在初始化ocation的时候先判断是否有权限,没有权限的话就请求ACCESS_FINE_LOCATION和ACCESS_COARSE_LOCATION权限,请求成功返回9
通过locationMananger.getLastKnowLocation,里面传入LocationMananger.NETWORK_PROVIDER作为参数
 
<pre name="code" class="java">//检查是否有权限
        if (ActivityCompat.checkSelfPermission(
                this, 
                android.Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED &&
                ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION)!= PackageManager.PERMISSION_GRANTED
                ){

            ActivityCompat.requestPermissions(this, new String[]{
                    android.Manifest.permission.ACCESS_FINE_LOCATION,
                    android.Manifest.permission.ACCESS_COARSE_LOCATION,
                    android.Manifest.permission.INTERNET
            }, 9);
            return;
        } else {
            //有权限
            location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

            if (location != null) {
                Log.d(TAG, location.toString());
                tv_lbs.setText(location.toString());
            }
        }




3、获得请求的结果,如果等于9,且grantResults[0]==0的话调用recreate()方法


/**
     * 获得请求的结果
     * @param requestCode
     * @param permissions
     * @param grantResults
     */
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        Log.d(TAG, String.format(
                "%d,%s,%s",
                requestCode,
                Arrays.toString(permissions),
                Arrays.toString(grantResults)
        ));

        if (requestCode == 9 && grantResults[0] == 0) {
            recreate();
        }
    }

4、写一个位置监听器,监听位置的变化
LocationListener listener=new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {
            String text=String.format(
                    "类型%s\n纬度%f\n精度%f\n海拔%f\n方向%f\n速度%f",
                    location.getProvider(),
                    location.getLatitude(),
                    location.getLongitude(),
                    location.getAltitude(),
                    location.getBearing(),
                    location.getSpeed()
            );

            tv_lbs.setText(text);

        }

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {

        }

        @Override
        public void onProviderEnabled(String provider) {

        }

        @Override
        public void onProviderDisabled(String provider) {

        }
    };

5、在onStart里面写请求位置的更新,并将监听器传进去
  @Override
    protected void onStart() {
        super.onStart();

        //更新
        if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

            ActivityCompat.requestPermissions(this, new String[]{
                    android.Manifest.permission.ACCESS_FINE_LOCATION,
                    android.Manifest.permission.ACCESS_COARSE_LOCATION,
                    android.Manifest.permission.INTERNET
            }, 9);

            return;
        }else {
            locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, listener);
            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener);
        }

6、在onStop里面移除位置更新的监听
@Override
    protected void onStop() {
        super.onStop();
        if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            // TODO: Consider calling
            //    ActivityCompat#requestPermissions
            // here to request the missing permissions, and then overriding
            //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
            //                                          int[] grantResults)
            // to handle the case where the user grants the permission. See the documentation
            // for ActivityCompat#requestPermissions for more details.
            return;
        }else {
            //取消
            locationManager.removeUpdates(listener);
        }

    }

这样我们就能获取到有关位置的相关信息,包括海拔,速度,方向等

 

                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值