Androd Studio3.0.1实现百度地图SDK定位功能
本文是本人原创,如遇不懂之处请及时留言询问,科技在进步时代在发展,所有的成功都是建立在当时的条件和环境下的。希望大家大家能够赶上时代的步伐。以下代码是基于Android Studio 3.0以上的版本编写的,3.0以下版本可以借鉴,但并不适合哦!
Android Studio源代码下载:点击打开链接。
Android Studio源代码下载:https://download.csdn.net/download/qq_26545269/10483358
第一步:申请百度地图的Key
首先,进入百度地图开放平台。网址:https://lbsyun.baidu.com/:如下图:
其次,选择控制台,如下图所示:
然后,进入控制台,如下图所示,选择创建应用,(没有百度账号的需要自己申请)。
点击创建应用后弹出如下界面,并填写相关申请信息。
SCHA1的获取,和包名获取如下图所示:
最后,点击提交后得到如下图。
第二步:下载相关定位SDK支持,具体步骤分别如下图所示。
文件2需要右击添加到库(右击倒数第二个选项)。
第三步:代码编写
AndroidManifest.xml中需添加的代码如下:
Activity_main.xml代码:
MainActivity.java代码:
public class MainActivity extends AppCompatActivity {
public LocationClient mLocationClient;
private TextView positionText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mLocationClient = new LocationClient(getApplicationContext());
mLocationClient.registerLocationListener((BDAbstractLocationListener)new MyLocationListener());
setContentView(R.layout.activity_main);
positionText = findViewById(R.id.position_text_view);
List<String> permissionList = new ArrayList<>();
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION);
}
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
permissionList.add(Manifest.permission.READ_PHONE_STATE);
}
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
permissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
}
if (!permissionList.isEmpty()) {
String [] permissions =permissionList.toArray(new String[permissionList.size()]);
ActivityCompat.requestPermissions(MainActivity.this, permissions, 1);
} else {
requestLocation();
}
}
private void requestLocation() {
initLocation();
mLocationClient.start();
}
private void initLocation(){
LocationClientOption option = new LocationClientOption();
option.setScanSpan(5000);
option.setIsNeedAddress(true);
mLocationClient.setLocOption(option);
}
@Override
protected void onDestroy() {
super.onDestroy();
mLocationClient.stop();
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case 1:
if (grantResults.length > 0) {
for (int result : grantResults) {
if (result != PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "必须同意所有权限才能使用本程序", Toast.LENGTH_SHORT).show();
finish();
return;
}
}
requestLocation();
} else {
Toast.makeText(this, "发生未知错误", Toast.LENGTH_SHORT).show();
finish();
}
break;
default:
}
}
private class MyLocationListener extends BDAbstractLocationListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
StringBuilder currentPosition= new StringBuilder();
currentPosition.append("纬度:").append(location.getLatitude()).append("\n");
currentPosition.append("经线:").append(location.getLongitude()).append("\n");
currentPosition.append("国家:").append(location.getCountry()).append("\n");
currentPosition.append("省:").append(location.getProvince()).append("\n");
currentPosition.append("市:").append(location.getCity()).append("\n");
currentPosition.append("区:").append(location.getDistrict()).append("\n");
currentPosition.append("街道:").append(location.getStreet()).append("\n");
currentPosition.append("定位方式:");
if (location.getLocType() == BDLocation.TypeGpsLocation) {
currentPosition.append("GPS");
} else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {
currentPosition.append("网络");
}else{
currentPosition.append(location.getLocType());
}
positionText.setText(currentPosition);
}
}
}
第四步:真机测试
Android Studio源代码下载:点击打开链接。
Android Studio源代码下载:https://download.csdn.net/download/qq_26545269/10483358