android之使用百度地图
Posted archer-lcy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android之使用百度地图相关的知识,希望对你有一定的参考价值。
Activity_main.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent"> 6 7 <TextView 8 android:layout_width="wrap_content" 9 android:layout_height="wrap_content" 10 android:id="@+id/tv_positionTextView"/> 11 12 </LinearLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="acticitytest.exapmle.com.lbstest"> <!-- 这个权限用于进行网络定位--> <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"/> <!--允许用户读取低级别的系统日志--> <uses-permission android:name="android.permission.WAKE_LOCK"/> <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"> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="SvxVofWKmGx9PaizUrIk3q4TSaxlUv4A"/> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"> </service> </application> </manifest>
MainActivity.java
package acticitytest.exapmle.com.lbstest; import android.Manifest; import android.content.pm.PackageManager; import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; import android.widget.Toast; import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { public LocationClient mLocationClient; private TextView postionText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mLocationClient=new LocationClient(getApplicationContext()); mLocationClient.registerLocationListener(new MyLocationListener()); setContentView(R.layout.activity_main); postionText=(TextView)findViewById(R.id.tv_positionTextView); 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(); } } public void requestLocation(){ initLocation(); mLocationClient.start();//开始定位 } /**用于更新位置信息*/ private void initLocation(){ LocationClientOption option=new LocationClientOption(); option.setScanSpan(5000);//每五秒更新当前位置 mLocationClient.setLocOption(option); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull 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: break; } } public class MyLocationListener implements BDLocationListener{ @Override public void onReceiveLocation(BDLocation bdLocation) { StringBuilder currentPostion =new StringBuilder(); currentPostion.append("纬度:").append(bdLocation.getLatitude()).append("\n"); currentPostion.append("经度:").append(bdLocation.getLongitude()).append("\n"); currentPostion.append("定位方式:"); if (bdLocation.getLocType()==BDLocation.TypeGpsLocation){ currentPostion.append("GPS"); }else if(bdLocation.getLocType()==BDLocation.TypeNetWorkLocation){ currentPostion.append("网络"); }else{ currentPostion.append("未识别"); } postionText.setText(currentPostion); } } @Override protected void onDestroy() { super.onDestroy(); mLocationClient.stop();//不断更新时一定要注意,在活动销毁时关闭,否则会一直耗电 } }
以上是关于android之使用百度地图的主要内容,如果未能解决你的问题,请参考以下文章
Android百度地图:百度地图运动轨迹纠偏去噪绑路之百度鹰眼