請問有沒有Android 百度地圖開發的大神,百度導航初始化不了,總是回傳到我的第一個界面,我的jar包也導進去了,其他的so檔案也有,但是為什么初始化不了????????


private boolean hasBasePhoneAuth() {
PackageManager pm = this.getPackageManager();
for (String auth : authBaseArr) {
if (pm.checkPermission(auth, this.getPackageName()) != PackageManager
.PERMISSION_GRANTED) {
return false;
}
}
return true;
}
private void initNavi(){
//申請權限
if (android.os.Build.VERSION.SDK_INT >= 23) {
if (!hasBasePhoneAuth()) {
this.requestPermissions(authBaseArr, authBaseRequestCode);
//return;
Toast.makeText(RoutActivity.this,"!hasBasePhoneAuth()",Toast.LENGTH_SHORT).show();
}
}
if (BaiduNaviManagerFactory.getBaiduNaviManager().isInited()) {
hasInitSuccess = true;
//return;
Toast.makeText(RoutActivity.this,"hasInitSuccess = true",Toast.LENGTH_SHORT).show();
}
BaiduNaviManager.getInstance().init(RoutActivity.this,
mSDPath, APP_FOLDER_NAME,
new IBaiduNaviManager.INaviInitListener() {
@Override
public void onAuthResult(int i, String s) {
if(0 == i){
authinfo = "key校檢成功";
Toast.makeText(RoutActivity.this,"引擎初始化",Toast.LENGTH_SHORT).show();
}else{
authinfo = "key校檢失敗"+s;
}
RoutActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(RoutActivity.this,authinfo,Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void initStart() {
Toast.makeText(RoutActivity.this,"百度引擎初始化開始",Toast.LENGTH_SHORT).show();
}
@Override
public void initSuccess() {
Toast.makeText(RoutActivity.this,"百度引擎初始化成功",Toast.LENGTH_SHORT).show();
}
@Override
public void initFailed(int i) {
Toast.makeText(RoutActivity.this,"百度引擎初始化失敗",Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[]
grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == authBaseRequestCode) {
for (int ret : grantResults) {
if (ret == 0) {
continue;
} else {
Toast.makeText(RoutActivity.this.getApplicationContext(),
"缺少導航基本的權限!", Toast.LENGTH_SHORT).show();
return;
}
}
initNavi();
}
}
uj5u.com熱心網友回復:
檢查下你manifest檔案看看有沒有權限增加
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="https://bbs.csdn.net/topics/你自己的" />
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" />
package com.example.ar.bleapp;
import android.app.Application;
import android.app.Service;
import android.os.Vibrator;
import com.baidu.mapapi.CoordType;
import com.baidu.mapapi.SDKInitializer;
import com.example.ar.bleapp.service.LocationService;
/**
* Created by n004970 on 2019/2/25.
*/
public class BleGpsApplication extends Application {
public LocationService locationService;
public Vibrator mVibrator;
@Override
public void onCreate() {
super.onCreate();
locationService = new LocationService(getApplicationContext());
mVibrator =(Vibrator)getApplicationContext().getSystemService(Service.VIBRATOR_SERVICE);
//在使用SDK各組件之前初始化context資訊,傳入ApplicationContext
SDKInitializer.initialize(this);
//自4.3.0起,百度地圖SDK所有介面均支持百度坐標和國測局坐標,用此方法設定您使用的坐標型別.
//包括BD09LL和GCJ02兩種坐標,默認是BD09LL坐標。
SDKInitializer.setCoordType(CoordType.BD09LL);
}
}
package com.example.ar.bleapp;
import android.content.Intent;
import android.graphics.Point;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;
import com.baidu.location.BDAbstractLocationListener;
import com.baidu.location.BDLocation;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.model.LatLng;
import com.example.ar.bleapp.service.LocationService;
public class MainActivity extends AppCompatActivity {
private TextView mTextMessage;
private MapView mMapView = null;
private BaiduMap mBaiduMap = null;
private LocationClient mLocationClient = null;
private LocationService locationService = null;
MyLocationListener myLocationListener = null;
private BottomNavigationView navigation = null;
private Boolean isFirstLoc = true;
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.gps:
mTextMessage.setText(R.string.title_home);
return true;
case R.id.ble:
//mTextMessage.setText(R.string.title_dashboard);
mLocationClient.stop();
Intent intent = new Intent(MainActivity.this,BleSearchActivity.class);
startActivity(intent);
return true;
/* case R.id.navigation_notifications:
mTextMessage.setText(R.string.title_notifications);
return true;*/
}
return false;
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextMessage = (TextView) findViewById(R.id.message);
navigation = (BottomNavigationView) findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
//獲取地圖控制元件參考
mMapView = (MapView) findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
mBaiduMap.setMyLocationEnabled(true);
//定位初始化
mLocationClient = new LocationClient(getApplicationContext());
//通過LocationClientOption設定LocationClient相關引數
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true); // 打開gps
option.setCoorType("bd09ll"); // 設定坐標型別
option.setScanSpan(1000);
//設定需要地址資訊
option.setIsNeedAddress(true);
//設定locationClientOption
mLocationClient.setLocOption(option);
//注冊LocationListener監聽器
myLocationListener = new MyLocationListener();
mLocationClient.registerLocationListener(myLocationListener);
//開啟地圖定位圖層
mLocationClient.start();
}
public class MyLocationListener extends BDAbstractLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
//mapView 銷毀后不在處理新接收的位置
if (location == null || mMapView == null){
return;
}
MyLocationData locData = new MyLocationData.Builder()
.accuracy(location.getRadius())
// 此處設定開發者獲取到的方向資訊,順時針0-360
.direction(location.getDirection()).latitude(location.getLatitude())
.longitude(location.getLongitude()).build();
mBaiduMap.setMyLocationData(locData);
Log.v("===cf===","方向:" + location.getDirection() + ",緯度:" + location.getLatitude()
+ ",經度:" + location.getLongitude()
+ ",時間:" + location.getTime() + ",描述:"
+ location.getLocationDescribe() + ",地址:" + location.getAddrStr() + ",精度:" + location.getRadius());
if (isFirstLoc) {
isFirstLoc = false;
LatLng ll = new LatLng(location.getLatitude(),
location.getLongitude());
MapStatus.Builder builder = new MapStatus.Builder();
builder.target(ll).zoom(18.0f);
mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
}
//定義Maker坐標點
LatLng point = new LatLng(34.200715, 108.896274);
//構建Marker圖示
BitmapDescriptor bitmap = BitmapDescriptorFactory
.fromResource(R.mipmap.ic_launcher);
//構建MarkerOption,用于在地圖上添加Marker
OverlayOptions option = new MarkerOptions()
.position(point)
.icon(bitmap);
//在地圖上添加Marker,并顯示
mBaiduMap.addOverlay(option);
}
}
@Override
protected void onDestroy() {
mLocationClient.stop();
mBaiduMap.setMyLocationEnabled(false);
mMapView.onDestroy();
mMapView = null;
super.onDestroy();
}
@Override
protected void onStop() {
mLocationClient.stop();
super.onStop();
}
@Override
protected void onPause() {
mMapView.onPause();
super.onPause();
}
@Override
protected void onResume() {
mMapView.onResume();
navigation.setSelectedItemId(R.id.gps);
super.onResume();
}
}
參考下我找個
uj5u.com熱心網友回復:
多謝,還有個問題:我這匯入不了
import com.baidu.navisdk.adapter.BNaviSettingManager;
import com.baidu.navisdk.adapter.BaiduNaviManager;
import com.baidu.navisdk.adapter.BaiduNaviManager.NaviInitListener;
import com.baidu.navisdk.adapter.BaiduNaviManager.RoutePlanListener;
這個該怎么辦?
uj5u.com熱心網友回復:
這個應該是你沒有把lib庫或者so庫匯入進去 看看你libs下有BaiduLBS_Android.jar沒在就是main\jniLibs下有沒有libBaiduMapSDK_base_v5_2_1.so libBaiduMapSDK_map_v5_2_1.so liblocSDK7b.so
以及 app/build.gradle路徑下配置沒
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets { main { java.srcDirs = ['src/main/java', 'src/main/jniLibs'] } }
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation files('libs/BaiduLBS_Android.jar')
}
uj5u.com熱心網友回復:




都有,但是我剛剛試了下還是不行。。。。。。。。。。。
uj5u.com熱心網友回復:
對了,我剛剛又看了下百度的Demo,里面好像沒用這幾個包,但是網上大部分都用這個,為什么?uj5u.com熱心網友回復:
估計版本不一樣,百度后面更新api了或者增加新功能了轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/122067.html
標籤:Android
