【android之使用百度地图】行是知之始,知是行之成。这篇文章主要讲述android之使用百度地图相关的知识,希望能为你提供帮助。
Activity_main.xml
1 < ?xml version="1.0" encoding="utf-8"?> 2 < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3android:orientation="vertical" 4android:layout_width="match_parent" 5android:layout_height="match_parent"> 6 7< TextView 8android:layout_width="wrap_content" 9android:layout_height="wrap_content" 10android: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="https://www.songbingjia.com/android/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 Studio3.1.2编译时Java Compiler出错(Warning: Failed to parse host proxy3.bj...)
- 10款最佳薪资管理软件推荐合集(你应该使用的电子薪资软件)
- 11大最佳名片制作软件下载推荐合集(哪款最适合你())
- 10个最佳在线Logo制作工具合集(创建你的专业Logo)
- 10款最佳免费文字处理软件(文字处理器的功能、软件包和应用程序)
- 10款最佳在线演奏软件推荐合集(享受在线乐队的演奏)
- 关于LRU和FIFO的GATE 2015问题
- 关于TLB的门问题
- 文件访问方式