android 导入android.jar ,获取经纬度

原创 2018年04月16日 15:10:11

前言:项目中用到了获取当前的经纬度,提供一个封装好的方法,直接调用即可。

工具类Utils:

public class LocationUtils {
    private static final String TAG = "LocationUtils";
    private UpdateLocationListener updateLocationListener;
    private LocationManager manager;
//            经度=120.107754, 纬度=30.287623

    /**
     * 这是普通的网络定位以及gps定位,我这里优先考虑网络定位,因为网络定位局限性比较小
     * 并且速度快,第三个参数代表是否是内网,因为使用内网的sim卡是无法进行网络定位的
     */
    public void normalLocation(Activity activity, UpdateLocationListener updateLocationListener, boolean insideSim) {
        LocationUtils.this.updateLocationListener = updateLocationListener;
        manager = (LocationManager) activity.getSystemService(Context.LOCATION_SERVICE);
        if (insideSim) {
            if (manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
                if (ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
                        && ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                    return;
                }
                //如果在GPS是开启的情况下并且选择是仅使用GPS定位服务,还是定位一直失败的话,请重启手机
//                ToastUtils.showToast(activity,"如果是在室内请走到窗户旁边,这样方便GPS定位");
                manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 1,
                        locationListener);
            } else {
                AlertDialog.Builder builder = new AlertDialog.Builder(activity);
                builder.setMessage("您的GPS没有打开,请打开GPS并且选择仅适用GPS选项");
              
   builder.setPositiveButton("去打开", new DialogInterface.OnClickListener() {
       @Override
       public void onClick(DialogInterface dialogInterface, int i) {
         openGPS(activity);
      }
      });
   builder.setNegativeButton("忽略", new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialogInterface, int i) {
        ToastUtils.showToast(activity,"已忽略");
     }
    });
AlertDialog dialog = builder.show(); dialog.setCancelable(false); } } else { if (manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) { //优先考虑网络定位 // 备注:参数2和3,如果参数3不为0,则以参数3为准;参数3为0,则通过时间来定时更新;两者为0,则随时刷新 // 1秒更新一次,或最小位移变化超过1米更新一次; // 注意:此处更新准确度非常低,推荐在service里面启动一个Thread,在run中sleep(10000);然后执行handler.sendMessage(),更新位置 if (ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { return; } manager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 1, locationListener); } else if (manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, locationListener); } else { ToastUtils.showToast(activity, "请打开GPS或网络"); } } } // 位置监听 private LocationListener locationListener = new LocationListener() { /** * 位置信息变化时触发 */ public void onLocationChanged(Location location) { if (location != null && updateLocationListener != null) { updateLocationListener.update(location);// ToastUtils.showToast(BaseApplication.getContext(),"获取到了定位信息"); } } /** * GPS状态变化时触发 */ public void onStatusChanged(String provider, int status, Bundle extras) { } /** * GPS开启时触发 */ public void onProviderEnabled(String provider) { } /** * GPS禁用时触发 */ public void onProviderDisabled(String provider) { } }; public interface UpdateLocationListener { void update(Location location); } public void reset() { updateLocationListener = null; if (manager != null && locationListener != null) manager.removeUpdates(locationListener); } public static final void openGPS(Activity context) { //跳转到开启GPS界面 Intent locationIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); context.startActivityForResult(locationIntent, 50); } public void requestResult(int resultCode, final Activity activity) { if (resultCode == 50) { if (manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { ToastUtils.showToast(activity, "如果是在室内请走到窗户旁边,这样方便GPS定位"); if (ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { return; } manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 1, locationListener); } else { ToastUtils.showToast(activity, "还是没有打开GPS,无法使用拍照和录音功能"); } } else { Log.i(TAG, "code != 50"); } }}

然后直接写个initPermission方法调用即可。

 private void initPermission2() {
        LocationUtils locationUtils = new LocationUtils();
       if (EasyPermissions.hasPermissions(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION)) {
            locationUtils.normalLocation(getActivity(), location -> this.location = location, true);
        } else {
           ToastUtils.showToast(getActivity(), "没有定位权限");
    }}

JFinal专题之POI-Excel导入解决方案

-
  • 1970年01月01日 08:00

Android导入项目时Android jar包丢失的解决

逐步尝试: 1.先从properties -> Android ,把右边的Project Build Target选中你要的Android版本 2.在你的工程上点击右键 -> 选择Android...
  • fjseryi
  • fjseryi
  • 2015-11-27 08:07:01
  • 2241

Android获取当前位置的经纬度

前言有些APP只是想简单的获取当前位置的经纬度,不想使用第三方定位(百度,高德)。那么我这里就说说利用SDK自带的LocationManager 类来获取当前的经纬度。这里实现分别通过GPS或NetW...
  • Alpha58
  • Alpha58
  • 2017-03-08 18:15:18
  • 5298

Android通过原生APi获取所在位置的经纬度

在Android开发当中,经常需要用到定位功能,尤其是依赖于地理位置功能的应用,本文介绍了Android通过原生APi获取所在位置的经纬度,分享给大家一、难点介绍1.难点我们的应用要新增一个功能,就是...
  • T_yoo_csdn
  • T_yoo_csdn
  • 2018-03-28 22:11:13
  • 17

android+studio引用library与导入jar

android+studio引用library与导入jar-爱编程  2016-06-28 14:34 android+studio引用library与导入jar 随着Android...
  • ht1066608644
  • ht1066608644
  • 2016-06-28 15:24:54
  • 1783

Android Studio jar包的导入

AndroidStudio用于开发安卓Apk非常地方便,但是它的很多设置都与Eclipse不一样。比如给项目中添加新的jar,在AndroidSutdio中就没有Java编译路径的入口,就很难找到添加...
  • xiyou_android
  • xiyou_android
  • 2015-11-28 15:43:23
  • 886

Android Studio导入framework.jar等系统jar包方式

从Eclipse 转到Android Studio,必经 的一个过程就是导入第三方jar包,导入普通的jar包方式比较简单,网上其他的例子也比较多,但是关于导入framework.jar包内容就比较少...
  • sd_zhuzhipeng
  • sd_zhuzhipeng
  • 2016-06-14 20:35:38
  • 15862

Android Studio之导入外部jar包

Android Studio导入外部jar包如果选择了“Android”视图,点击红色区域选择“project”视图 切换视图,可以看到“libs”文件夹,如果没有,则手动创建一个 然后,确保新建...
  • haikuotiankong8
  • haikuotiankong8
  • 2015-08-06 15:08:38
  • 3051

Android实战技巧之十二:Android Studio导入第三方类库、jar包和so库

第三方类库源码将一网友的XMPP代码从ADT转到AS时,发现其使用了第三方类库,源码放在了lib下,直接在AS中Import project,第三方类库并没有自动导入进来,看来需要自己动手了。项目的目...
  • lincyang
  • lincyang
  • 2015-03-28 18:49:50
  • 107308

AndroidStudio中导入jar包方法(超详细)

1.首先先去下载需要的jar包2.将jar包复制到Project下的app–>libs目录下(没有libs目录就新建一个)如下图所示位置:3.右键该jar包,选择add as library,弹出如下...
  • ygd1994
  • ygd1994
  • 2016-05-08 18:36:50
  • 14316
收藏助手
不良信息举报
您举报文章:android 导入android.jar ,获取经纬度
举报原因:
原因补充:

(最多只允许输入30个字)