一行代码获取定位信息

作者: Wang_Guan | 来源:发表于2017-07-17 10:36 被阅读746次

在公司接手的几个项目,几乎都和地图有关,比如说定位。因为经常用到,最近又学习了一些注解相关的知识,所以就结合这两者,做了一个开源库,用注解的方式使用定位服务,目前支持百度定位和高德定位。

GayHub传送门

特点

  1. 支持注解方式获取定位信息。
  2. 支持百度定位及高德定位。

简单例子

@LocationAsst(value = MapType.TYPE_BDMap)//指定定位类型,默认百度定位
public class MainActivity extends AppCompatActivity {
    @LocationClient
    BDLocationClient bdClient;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        LAMainActivity.bind(this, this);//绑定定位服务

        bdClient.updateOption(myBDOption());//如不设置Option则使用默认的Option

        findViewById(R.id.btn).setOnClickListener(v -> {
            if (bdClient.isStarted()) {
                bdClient.stopLocation();//停止定位
            } else {
                bdClient.startLocation();//启动定位
            }
        });

    }
    
    //接收定位回调
    @onLocationReceived
    void onReceived(BDLocation location) {
        Log.i("ddd", "onReceived: " + location.getAddrStr());
    }
    
    @Override
    protected void onDestroy() {
        super.onDestroy();
        LAMainActivity.unBind();//在不需要定位服务的时候解绑定位服务
    }
    
}

使用方式

配置根目录的build.gradle

allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

配置app module的build.gradle

dependencies {
    compile 'com.github.WGwangguan.LocationAsst:annotatelocation:v1.0.0'
    compile 'com.github.WGwangguan.LocationAsst:annotations:v1.0.0'
    annotationProcessor 'com.github.WGwangguan.LocationAsst:processor:v1.0.0'
}

配置AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.xxx.xxx">

    <!-- 这个权限用于进行网络定位-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <!-- 这个权限用于访问GPS定位-->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <!-- 用于读取手机当前的状态-->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!-- 访问网络,网络定位需要上网-->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- SD卡读取权限,用户写入离线定位数据-->
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!--百度定位服务-->
        <meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="dfaKCMwZ3AWFYsOTwQfEoBG5TmjozgaA" />

        <service
            android:name="com.baidu.location.f"
            android:enabled="true"
            android:process=":remote" />

        <!--高德定位服务-->
        <meta-data
            android:name="com.amap.api.v2.apikey"
            android:value="6980330d930a3b6f2037d5a71884ef1c" />

        <service android:name="com.amap.api.location.APSService" />

    </application>

</manifest>

根据需要配置百度/高德定位服务。

其它说明

6.0以上请做好权限处理。

觉得有用的可以点个赞留个star哦,谢谢O(∩_∩)O谢谢。

相关文章

  • 一行代码获取定位信息

    在公司接手的几个项目,几乎都和地图有关,比如说定位。因为经常用到,最近又学习了一些注解相关的知识,所以就结合这两者...

  • 获取定位信息

    ios官方定位插件 百度地图定位Cordova插件,支持Android,IOS,ionic 1x 2x 均可使用(...

  • Android和Unity3D之高德地图(三)

    首先去高德地图官网下载定位功能的jar文件 下载并且导入依赖 在MaiActivity中代码如下 获取定位信息 在...

  • Android--获取SHA1的坑

    一丶按照《第一行代码》中的方法,无法正常获取 于是我Google了一下,发现在Terminal下定位到C:/...

  • CPU信息获取-代码获取

    手机开发者选项里面如何获取CPU运行信息的 做为Android开发者来说,应该对开发者选项是特别熟悉的。通过【设置...

  • js获取git分支信息

    1、git bash 获取分支信息 上面的代码是通过git命令获取的分支信息,怎么可以在项目代码里面获取分支信息呢...

  • RXJava 应用系列-场景2

    二、获取定位信息 场景描述: 首先使用GPS定位,如果定位失败使用IP定位从服务器获取。 问题分析: 此问题可以分...

  • iOS 获取项目相关信息(名称,版本号等)

    想要获取项目设置的相关信息?例如app名称和版本号?简单! 一行代码的事情!!! App的大部分设置信息都在 ap...

  • HTML5新增标签和新增API

    新增的API,检测网络监听和获取定位信息

  • 模拟器对GPS定位的小脾气

    获取定位信息报错 The operation couldn’t be completed. (kCLErrorDo...

网友评论

    本文标题:一行代码获取定位信息

    本文链接:https://www.haomeiwen.com/subject/lfyenttx.html