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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值