Android获得GPS坐标

本文介绍了一个用于Android设备的GPS管理类,该类能够检查GPS是否启用,并获取当前的位置信息。通过设置位置精度和功耗需求,它能有效地利用系统的最佳位置提供者来获取位置更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.smartdot.utils;

import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.Toast;

public class GpsManager {
    private Context context;

    private GpsManager(Context context) {
        this.context = context;
    }

    private boolean openGPSSettings() {
        LocationManager alm = (LocationManager) context
                .getSystemService(Context.LOCATION_SERVICE);
        if (alm.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) {
            Toast.makeText(context, "GPS模块正常", Toast.LENGTH_SHORT).show();
            return true;
        }

        Toast.makeText(context, "请开启GPS!", Toast.LENGTH_SHORT).show();
        return false;
    }

    public static Location getLocatoin(Context context) {
        GpsManager gps = new GpsManager(context);
        return gps.getLocation();
    }
    
    private Location getLocation() {
        if(!openGPSSettings()) {
            return null;
        }
        // 获取位置管理服务
        LocationManager locationManager;
        String serviceName = Context.LOCATION_SERVICE;
        locationManager = (LocationManager) context.getSystemService(serviceName);
        // 查找到服务信息
        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_FINE); // 高精度
        criteria.setAltitudeRequired(false);
        criteria.setBearingRequired(false);
        criteria.setCostAllowed(true);
        criteria.setPowerRequirement(Criteria.POWER_LOW); // 低功耗

        String provider = locationManager.getBestProvider(criteria, true); // 获取GPS信息
        Location location = locationManager.getLastKnownLocation(provider); // 通过GPS获取位置
        //updateToNewLocation(location);
        // 设置监听器,自动更新的最小时间为间隔N秒(1秒为1*1000,这样写主要为了方便)或最小位移变化超过N米
        locationManager.requestLocationUpdates(provider, 100 * 1000, 500,
                listener );
//        location.getLatitude();
        return location;
    }

    LocationListener listener = new LocationListener() {
        
        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {
            // TODO Auto-generated method stub
            
        }
        
        @Override
        public void onProviderEnabled(String provider) {
            // TODO Auto-generated method stub
            
        }
        
        @Override
        public void onProviderDisabled(String provider) {
            // TODO Auto-generated method stub
            
        }
        
        @Override
        public void onLocationChanged(Location location) {
            // TODO Auto-generated method stub
            
        }
    };
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值