1.登録してキーを取得します
まず、開発者登録作業を完了する必要があります。アドレス:https://passport.baidu.com/v2/?reg
次に、私のアプリケーションが表示され、アプリケーションを作成できます。
参照ドキュメントを作成します。AndroidポジショニングSDK
現在、Baidu Maps AndroidポジショニングSDK国内サービスは、非営利目的で使用する開発者に料金を請求していません。
私はこの機能を必要とするので、私はここで選択:
ユーザディレクトリへのスイッチ.android
:
入力cmd
、入力コマンドを:
keytool -list -v -keystore debug.keystore -alias androiddebugkey
キーストアのパスワードを入力します。それandorid
が表示されたらSHA1
、コピーして入力するだけです。
次はパッケージ名です。AndroidManifest.xml構成ファイルを開きます。package属性に対応するコンテンツはアプリケーションパッケージ名です。
次に、それを送信します。
2. AndroidStudioの構成
AndroidロケーションSDKをダウンロードして解凍し、プロジェクト内の対応するロケーションのライブラリにjarなどを配置します。
私はここにダウンロードして、基本的なポジショニング、JARを選択し、BaiduLBS_AndroidSDK_Lib.zip
ファイルを取得します。
解凍の手順に従います。解凍後のコンテンツは次のとおりです。
次に、公式Webサイトの指示に従って、AndroidポジショニングSDKをAndroidプロジェクトに配置します。ビューに
切り替えて、project
次の情報を見つけますlibs
。
次に、依存関係を追加します。
android {
...
// 百度定位SDK需要
sourceSets{
main{
jniLibs.srcDir 'libs'
jni.srcDirs = [] //disable automatic ndk-build
}
}
}
implementation files('libs/BaiduLBS_Android.jar')
3.AKを追加します
次のコードをAndroidManifest.xmlファイルに追加して、開発キー(AK)を構成します。
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="AK" >
</meta-data>
サービスの追加:
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"> </service>
権限の追加:
<!-- 这个权限用于进行网络定位-->
<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.WRITE_EXTERNAL_STORAGE"/>
<!-- 访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET"/>
4.アドレスを取得します
公式ウェブサイトのケースに従ってください:http://lbsyun.baidu.com/index.php?title = android-locsdk / guide / get-location / address
テスト後、onstop
メソッドを自分で呼び出す必要もあります。
// 百度定位
public LocationClient mLocationClient = null;
private MyLocationListener myLocationListener = new MyLocationListener();
private void getLocation() {
// 请求定位
mLocationClient = new LocationClient(getApplicationContext());
List<String> permissionList = new ArrayList<>();
//如果没有启动下面权限,就询问用户让用户打开
if (ContextCompat.checkSelfPermission(PushActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION);
}
if (ContextCompat.checkSelfPermission(PushActivity.this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
permissionList.add(Manifest.permission.READ_PHONE_STATE);
}
if (ContextCompat.checkSelfPermission(PushActivity.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(PushActivity.this, permissions, 1);
}
requestLocation();
}
/**
* 请求定位
*/
private void requestLocation(){
LocationClientOption option = new LocationClientOption();
option.setScanSpan(500);
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
option.setCoorType("bd09ll");
option.setScanSpan(1000);
option.setOpenGps(true);
option.setIsNeedAddress(true);
option.setLocationNotify(true);
option.setIgnoreKillProcess(false);
option.SetIgnoreCacheException(false);
option.setEnableSimulateGps(false);
option.setNeedNewVersionRgc(true);
mLocationClient.setLocOption(option);
mLocationClient.registerLocationListener(myLocationListener);
mLocationClient.start();
}
private String currentPosition = "";
public class MyLocationListener extends BDAbstractLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
String addr = location.getAddrStr(); //获取详细地址信息
String country = location.getCountry(); //获取国家
String province = location.getProvince(); //获取省份
String city = location.getCity(); //获取城市
String district = location.getDistrict(); //获取区县
String street = location.getStreet(); //获取街道信息
String adcode = location.getAdCode(); //获取adcode
String town = location.getTown(); //获取乡镇信息
EditText reedit_page_position = findViewById(R.id.reedit_page_position);
String position_detail = country+province+city+district;
if(currentPosition.equals(position_detail) && currentPosition.length()!=0){
mLocationClient.unRegisterLocationListener(myLocationListener);
mLocationClient.stop();
}
reedit_page_position.setText(position_detail);
currentPosition = position_detail;
}
}
ただそれを呼んでくださいgetLocation
。