一行代码获取定位信息

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

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谢谢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,985评论 6 342
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,079评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,860评论 25 709
  • 听了张帅老师的演讲,我们懂得了要爱祖国,爱老师,爱父母,爱自己。所以从现在开始我们一定会努力,让生命充满爱,让世界...
    朱口镇西街小学蔡美灵阅读 788评论 0 0
  • 2017年11月5日 晴 星期日 亲子日记第42篇 下午和儿子一起用树叶制作手工贴画,儿子是主角,我负责打下手...
    敏文妈咪阅读 230评论 0 0