您当前的位置: 首页 > 

仙剑情缘

暂无认证

  • 2浏览

    0关注

    333博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

GPS定位

仙剑情缘 发布时间:2018-06-02 12:48:48 ,浏览量:2

1.布局文件



    


2.声明权限

 

3.android 6以上需要动态请求权限

if(ContextCompat.checkSelfPermission(MainActivity.this,
        Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){
    ActivityCompat.requestPermissions(MainActivity.this,
            new String[]{Manifest.permission.ACCESS_FINE_LOCATION},1);
}

4.获取LocationManager实例

locationManage = (LocationManager) getSystemService(LOCATION_SERVICE);

5.设置定位准则

Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);//粗略精度
criteria.setAltitudeRequired(false);//是否需要返回海拔信息
criteria.setBearingRequired(false);//是否需要返回方向信息
criteria.setCostAllowed(true);    //是否允许付费服务
criteria.setPowerRequirement(Criteria.ACCURACY_HIGH);    //电量消耗等级
criteria.setSpeedRequired(false);    //是否需要返回速度信息

6.获取Location 实例

String currentProvider = locationManage.getBestProvider(criteria,true);
location = locationManage.getLastKnownLocation(currentProvider);//获取最后一次位置信息

7.设置LocationListener监听

LocationListener locationListener = new LocationListener() {
    @Override
    public void onLocationChanged(Location location) {
        getLocationInfo(location);
    }

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

    }

    @Override
    public void onProviderEnabled(String provider) {

    }

    @Override
    public void onProviderDisabled(String provider) {

    }
};
locationManage.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000,
        0,locationListener);

8.获取定位信息

private void getLocationInfo(Location location) {
    if(location != null){
        double lag = location.getLatitude();
        double lng = location.getLongitude();
        double speed = location.getSpeed();
        float acc = 0;
        if(location.hasAccuracy()){
            acc = location.getAccuracy();
        }

        double height = 0;
        if(location.hasAltitude()) {
            height = location.getAltitude();
        }
        float bear = 0;
        if(location.hasBearing()){
            bear = location.getBearing();
        }
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("经纬度是: ")
                .append(lag)
                .append("\n")
                .append("纬度是: ")
                .append(lng)
                .append("\n速度是: ")
                .append(speed)
                .append("\n精度是: ")
                .append(acc)
                .append("\n高度是: ")
                .append(height)
                .append("\n风向是: ")
                .append(bear);
        tv_location.setText(stringBuilder.toString());


    }else {
        tv_location.setText("没有获取到信息");
    }
}

关注
打赏
1658017818
查看更多评论
立即登录/注册

微信扫码登录

0.0409s