开始搭建环境
1.下载SDK
导入Jar包,这里分为2块,第一块是画圈的jar包,需要小奶瓶,第二部分是文件直接赋值即可
**清单文件注册**
<application
.....
<!--百度定位-->
<service android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote">
</service>
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="AK--官网申请" >
</meta-data>
</application>
**权限**
<!-- 这个权限用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!-- 这个权限用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!-- 用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!-- 访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET" />
<!-- SD卡读取权限,用户写入离线定位数据-->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
tools:ignore="ProtectedPermissions"></uses-permission>
还有就是build环境了,这里想吐槽下,唉,就想想吧,我给详细介绍就行了
在当前model下的build的android中添加
android {
.....
//添加
sourceSets {
main {
jni.srcDirs=[]
jniLibs.srcDirs = ['libs']
}
}
}
ok环境搭建完成,下面可以看上方官方Api扩展
这里我简单的说一下定位和经纬度
定位并展示,布局就是一个TextView,就不添加了,在主线程使用
public class MainActivity extends AppCompatActivity{
private TextView text;
public LocationClient mLocationClient = null;
private MyLocationListener myListener = new MyLocationListener();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
text = (TextView) findViewById(R.id.text);
mLocationClient = new LocationClient(getApplicationContext());
//声明LocationClient类
mLocationClient.registerLocationListener(myListener);
//注册监听函数
LocationClientOption option = new LocationClientOption();
//如果开发者需要获得当前点的位置信息,此处必须为true
option.setIsNeedLocationDescribe(true);
//可选,设置是否需要地址信息,默认不需要
option.setIsNeedAddress(true);
//可选,默认false,设置是否使用gps
option.setOpenGps(true);
//可选,默认false,设置是否当GPS有效时按照1S/1次频率输出GPS结果
option.setLocationNotify(true);
//可选,是否需要地址信息,默认为不需要,即参数为false
//如果开发者需要获得当前点的地址信息,此处必须为true
mLocationClient.setLocOption(option);
//mLocationClient为第二步初始化过的LocationClient对象
//需将配置好的LocationClientOption对象,通过setLocOption方法传递给LocationClient对象使用
//更多LocationClientOption的配置,请参照类参考中LocationClientOption类的详细说明
//只有调用它才会让下面的内部类有效果
mLocationClient.start();
}
//内部类,里面做些具体操作
public class MyLocationListener extends BDAbstractLocationListener {
@Override
public void onReceiveLocation(BDLocation location){
//此处的BDLocation为定位结果信息类,通过它的各种get方法可获取定位相关的全部结果
//以下只列举部分获取地址相关的结果信息
//更多结果信息获取说明,请参照类参考中BDLocation类中的说明
String addr = location.getAddrStr(); //获取详细地址信息
String country = location.getCountry(); //获取国家
String province = location.getProvince(); //获取省份
String city = location.getCity(); //获取城市
String district = location.getDistrict(); //获取区县
String street = location.getStreet(); //获取街道信息
//在文本中显示
text.setText(country+province+city+district+street);
}
}
}
效果
经纬度:和上面差不多,还有很多功能都是需要上官方上扩展的,只有会一个定位其他的定位使用才会很顺手