获取手机位置工具类

package com.alading.util;

import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.content.ContextCompat;

import com.alading.myApplication.MyApplication;

/**
 * Created by Administrator on 2017/9/20.
 */

public class PhoneLocutionUtils {

    LocationManager lm;
    LocationListener ll = new LocationListener() {
        public void onLocationChanged(Location location) {
            updateLocation.updateView(location);
        }

        @Override
        public void onProviderDisabled(String provider) {
            updateLocation.updateView(null);
        }

        @Override
        public void onProviderEnabled(String provider) {
            if (ContextCompat.checkSelfPermission(MyApplication.getContext(), permissions[0]) != PackageManager.PERMISSION_GRANTED) {
                Location l = lm.getLastKnownLocation(provider);
                updateLocation.updateView(l);
            }
        }

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

        }
    };
    String[] permissions = {Manifest.permission.LOCATION_HARDWARE, Manifest.permission.ACCESS_COARSE_LOCATION};

    private Criteria getCriteria() {
        Criteria c = new Criteria();
        c.setAccuracy(Criteria.ACCURACY_COARSE);
        c.setSpeedRequired(false);
        c.setCostAllowed(false);
        c.setBearingRequired(false);
        c.setAltitudeRequired(false);
        c.setPowerRequirement(Criteria.POWER_LOW);
        return c;
    }

    public void getlocation(UpdateLocationListener updateLocation) {
        this.updateLocation = updateLocation;
        lm = (LocationManager) MyApplication.getContext().getSystemService(Context.LOCATION_SERVICE);
        String bestProvider = lm.getBestProvider(getCriteria(), true);
        if (ContextCompat.checkSelfPermission(MyApplication.getContext(), permissions[0]) != PackageManager.PERMISSION_GRANTED) {
            Location l = lm.getLastKnownLocation(bestProvider);
            updateLocation.updateView(l);
            lm.requestLocationUpdates(bestProvider, 5000, 8, ll);
        }
    }

    private UpdateLocationListener updateLocation;
    public interface UpdateLocationListener{
        void updateView(Location newLocation);
    }
}
new PhoneLocutionUtils().getlocation(new PhoneLocutionUtils.UpdateLocationListener() {
    @Override
    public void updateView(Location newLocation) {//获取手机的位置
        try {
            Log.d(TAG, "纬度: " + String.valueOf(newLocation.getLatitude()));
            Log.d(TAG, "经度: " + String.valueOf(newLocation.getLongitude()));
           } catch (Exception e) {
            e.printStackTrace();
            ToastUtil.showToast(StartActivity.this,"位置获取异常"+ e.toString());
            Log.d(TAG, "获取手机的位置异常: "+ e.toString());
        }

    }
});

权限
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
项目中用到的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值