在公司接手的幾個項目呛梆,幾乎都和地圖有關,比如說定位磕诊。因為經常用到填物,最近又學習了一些注解相關的知識,所以就結合這兩者霎终,做了一個開源庫滞磺,用注解的方式使用定位服務,目前支持百度定位和高德定位莱褒。
特點
- 支持注解方式獲取定位信息击困。
- 支持百度定位及高德定位。
簡單例子
@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" />
<!-- 用于讀取手機當前的狀態(tài)-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 寫入擴展存儲脸哀,向擴展卡寫入數(shù)據(jù),用于寫入離線定位數(shù)據(jù)-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 訪問網絡扭吁,網絡定位需要上網-->
<uses-permission android:name="android.permission.INTERNET" />
<!-- SD卡讀取權限撞蜂,用戶寫入離線定位數(shù)據(jù)-->
<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>
根據(jù)需要配置百度/高德定位服務。
其它說明
6.0以上請做好權限處理侥袜。
覺得有用的可以點個贊留個star哦蝌诡,謝謝O(∩_∩)O謝謝。