Android集成百度地图实现导航

Android百度地图开发定位和路线导航 在写之前要先加入百度地图sdk的jar包从百度地图开发者官网上就能下载 百度地图sdk下载 而其中用到的一些与定位和路线规划有关的包可以在事例中查看导入 首先是xml的布局文件,其中editText的background是采用的自定义的样式,而在edittext前面的小点是用来美化界面的,可以直接删除 <?xml version="1.0" encoding=&amp 阅读详情

集成百度地图导航其实很简单,但是必须要在百度TT语音播报后台成功注册了注册地址注册时候很简单我就不赘述了,

上代码:

TodaytaskdetailActivity .java

package com.wdkj.housemanager.activity;

import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.method.ScrollingMovementMethod;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ScrollView;
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 com.baidu.navisdk.adapter.BNCommonSettingParam;
import com.baidu.navisdk.adapter.BNOuterLogUtil;
import com.baidu.navisdk.adapter.BNOuterTTSPlayerCallback;
import com.baidu.navisdk.adapter.BNRoutePlanNode;
import com.baidu.navisdk.adapter.BNaviSettingManager;
import com.baidu.navisdk.adapter.BaiduNaviManager;
import com.bumptech.glide.Glide;
import com.wdkj.housemanager.R;
import com.wdkj.housemanager.bean.Constant;
import com.wdkj.housemanager.bean.SuccessdEvent;
import com.wdkj.housemanager.bean.TaskItemBean;
import com.wdkj.housemanager.view.CircleImageView;

import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;

import java.io.File;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;

import static com.baidu.navisdk.adapter.BNRoutePlanNode.CoordinateType.BD09LL;
import static com.baidu.navisdk.adapter.BNRoutePlanNode.CoordinateType.WGS84;
import static com.baidu.navisdk.adapter.PackageUtil.getSdcardDir;
import static com.baidu.navisdk.adapter.PackageUtil.init;

/**
 * 今日任务详情
 */
public class TodaytaskdetailActivity extends Activity implements View.OnClickListener {
    @BindView(R.id.ll_back)
    LinearLayout llBack;
    @BindView(R.id.tv_creatperson)
    TextView tvCreatperson;
    @BindView(R.id.tv_task)
    TextView tvTask;
    @BindView(R.id.iv_person)
    CircleImageView ivPerson;
    @BindView(R.id.tv_execuperson)
    TextView tvExecuperson;
    @BindView(R.id.tv_category)
    TextView tvCategory;
    @BindView(R.id.tv_name)
    TextView tvName;
    @BindView(R.id.tv_status)
    TextView tvStatus;
    @BindView(R.id.tv_starttime)
    TextView tvStarttime;
    @BindView(R.id.tv_endtime)
    TextView tvEndtime;
    @BindView(R.id.tv_overtime)
    TextView tv_overtime;
    @BindView(R.id.tv_content)
    TextView tvContent;
    @BindView(R.id.wb_location)
    WebView wbLocation;
    @BindView(R.id.ll_save)
    LinearLayout llSave;
    @BindView(R.id.ll_photo)
    LinearLayout llPhoto;
    @BindView(R.id.ll_onwer)
    LinearLayout llOnwer;
    @BindView(R.id.sc_view)
    ScrollView scView;
    @BindView(R.id.iv_housesave)
    ImageView ivHousesave;
    @BindView(R.id.iv_housephoto)
    ImageView ivHousephoto;
    @BindView(R.id.iv_housejd)
    ImageView ivHousejd;
    @BindView(R.id.tv_housesave)
    TextView tvHousesave;
    @BindView(R.id.tv_housephoto)
    TextView tvHousephoto;
    @BindView(R.id.tv_housejd)
    TextView tvHousejd;
    @BindView(R.id.ll_newbottom)
    LinearLayout llNewbottom;
    @BindView(R.id.ll_task_map)
    LinearLayout llTaskmap;
    private TaskItemBean detailBean;
    private WebSettings webSettings;
    private int requestCode;
    private static final String[] authBaseArr = { Manifest.permission.WRITE_EXTERNAL_STORAGE,
            Manifest.permission.ACCESS_FINE_LOCATION };
    private static final String[] authComArr = { Manifest.permission.READ_PHONE_STATE };
    public static List<Activity> activityList = new LinkedList<Activity>();
    private static final int authBaseRequestCode = 1;
    private static final int authComRequestCode = 2;
    private boolean hasInitSuccess = false;
    private boolean hasRequestComAuth = false;
    public static final String ROUTE_PLAN_NODE = "routePlanNode";
    private String mSDCardPath = null;
    private static final String APP_FOLDER_NAME = "BNSDKSimpleDemo";
    private static final String TAG = "TodaytaskdetailActivity";
    private MyLocationListener myListener;
    private LocationClient mLocationClient;
    private double mCurrentLat,mCurrentLon;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        activityList.add(this);
        setContentView(R.layout.activity_todaytaskdetail);
        ButterKnife.bind(this);
        if (getIntent() != null) {
            detailBean = (TaskItemBean) getIntent().getSerializableExtra("todaytaskBean");
            requestCode = getIntent().getIntExtra("requestCode", 0);
        }
        initLocation();
        EventBus.getDefault().register(this);
        scView.smoothScrollTo(0, 0);

        llTaskmap.setOnClickListener(this);//点击导航

    }
    private boolean initDirs() {
        mSDCardPath = getSdcardDir();
        if (mSDCardPath == null) {
            return false;
        }
        File f = new File(mSDCardPath, APP_FOLDER_NAME);
        if (!f.exists()) {
            try {
                f.mkdir();
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
        }
        return true;
    }
    String authinfo = null;

    /**
     * 内部TTS播报状态回传handler
     */
    private Handler ttsHandler = new Handler() {
        public void handleMessage(Message msg) {
            int type = msg.what;
            switch (type) {
                case BaiduNaviManager.TTSPlayMsgType.PLAY_START_MSG: {
                    // showToastMsg("Handler : TTS play start");
                    break;
                }
                case BaiduNaviManager.TTSPlayMsgType.PLAY_END_MSG: {
                    // showToastMsg("Handler : TTS play end");
                    break;
                }
                default:
                    break;
            }
        }
    };
    /**
     * 内部TTS播报状态回调接口
     */
    private BaiduNaviManager.TTSPlayStateListener ttsPlayStateListener = new BaiduNaviManager.TTSPlayStateListener() {

        @Override
        public void playEnd() {
            // showToastMsg("TTSPlayStateListener : TTS play end");
        }

        @Override
        public void playStart() {
            // showToastMsg("TTSPlayStateListener : TTS play start");
        }
    };
    private void initNavi() {

        BNOuterTTSPlayerCallback ttsCallback = null;

        // 申请权限
        if (android.os.Build.VERSION.SDK_INT >= 23) {

            if (!hasBasePhoneAuth()) {

                this.requestPermissions(authBaseArr, authBaseRequestCode);
                return;

            }
        }

        BaiduNaviManager.getInstance().init(this, mSDCardPath, APP_FOLDER_NAME, new BaiduNaviManager.NaviInitListener() {
            @Override
            public void onAuthResult(int status, String msg) {
                if (0 == status) {
                    authinfo = "key校验成功!";
                } else {
                    authinfo = "key校验失败, " + msg;
                }
//                TodaytaskdetailActivity.this.runOnUiThread(new Runnable() {
//
//                    @Override
//                    public void run() {
//                        Toast.makeText(TodaytaskdetailActivity.this, authinfo, Toast.LENGTH_LONG).show();
//                    }
//                });
            }

            public void initSuccess() {
                //Toast.makeText(TodaytaskdetailActivity.this,"百度导航引擎初始化成功", Toast.LENGTH_SHORT).show();
                hasInitSuccess = true;
                initSetting();
            }

            public void initStart() {
                //Toast.makeText(TodaytaskdetailActivity.this, "百度导航引擎初始化开始", Toast.LENGTH_SHORT).show();
            }

            public void initFailed() {
                //Toast.makeText(TodaytaskdetailActivity.this, "百度导航引擎初始化失败", Toast.LENGTH_SHORT).show();
            }

        }, null, ttsHandler, ttsPlayStateListener);

    }
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.ll_task_map:
                if (BaiduNaviManager.isNaviInited()) {
                    Toast.makeText(TodaytaskdetailActivity.this,"即将开始导航",Toast.LENGTH_SHORT).show();
                    routeplanToNavi();
                }
                break;
        }
    }

    private BNRoutePlanNode.CoordinateType mCoordinateType = null;

//    private void routeplanToNavi(BNRoutePlanNode.CoordinateType coType) {
private void routeplanToNavi() {
//        mCoordinateType = coType;
        if (!hasInitSuccess) {
            //Toast.makeText(TodaytaskdetailActivity.this, "还未初始化!", Toast.LENGTH_SHORT).show();
        }
        // 权限申请
        if (android.os.Build.VERSION.SDK_INT >= 23) {
            // 保证导航功能完备
            if (!hasCompletePhoneAuth()) {
                if (!hasRequestComAuth) {
                    hasRequestComAuth = true;
                    this.requestPermissions(authComArr, authComRequestCode);
                    return;
                } else {
                    //Toast.makeText(TodaytaskdetailActivity.this, "没有完备的权限!", Toast.LENGTH_SHORT).show();
                }
            }

        }
        BNRoutePlanNode sNode = null;
        BNRoutePlanNode eNode = null;
        sNode = new BNRoutePlanNode(mCurrentLon, mCurrentLat,null, null, BD09LL);//起点
        eNode = new BNRoutePlanNode(detailBean.getLon(), detailBean.getLat(),null, null, WGS84);//终点
        if (sNode != null && eNode != null) {
            List<BNRoutePlanNode> list = new ArrayList<BNRoutePlanNode>();
            list.add(sNode);//添加起点
            list.add(eNode);//添加终点
            BaiduNaviManager.getInstance().launchNavigator(this, list, 1, true, new DemoRoutePlanListener(sNode));
        }
    }
    public class DemoRoutePlanListener implements BaiduNaviManager.RoutePlanListener {

        private BNRoutePlanNode mBNRoutePlanNode = null;

        public DemoRoutePlanListener(BNRoutePlanNode node) {
            mBNRoutePlanNode = node;
        }
        @Override
        public void onJumpToNavigator() {
            /*
             * 设置途径点以及resetEndNode会回调该接口
             */
            for (Activity ac : activityList) {
                if (ac.getClass().getName().endsWith("BNDemoGuideActivity")) {
                    return;
                }
            }
            Intent intent = new Intent(TodaytaskdetailActivity.this, BNDemoGuideActivity.class);//跳转到导航界面
            Bundle bundle = new Bundle();
            bundle.putSerializable(ROUTE_PLAN_NODE, (BNRoutePlanNode) mBNRoutePlanNode);
            intent.putExtras(bundle);
            startActivity(intent);
        }

        @Override
        public void onRoutePlanFailed() {
            // TODO Auto-generated method stub
            Toast.makeText(TodaytaskdetailActivity.this, "算路失败", Toast.LENGTH_SHORT).show();
        }
    }
    private void initSetting() {
        BNaviSettingManager.setDayNightMode(BNaviSettingManager.DayNightMode.DAY_NIGHT_MODE_DAY);
        BNaviSettingManager
                .setShowTotalRoadConditionBar(BNaviSettingManager.PreViewRoadCondition.ROAD_CONDITION_BAR_SHOW_ON);
        BNaviSettingManager.setVoiceMode(BNaviSettingManager.VoiceMode.Veteran);
        // BNaviSettingManager.setPowerSaveMode(BNaviSettingManager.PowerSaveMode.DISABLE_MODE);
        BNaviSettingManager.setRealRoadCondition(BNaviSettingManager.RealRoadCondition.NAVI_ITS_ON);
        Bundle bundle = new Bundle();
        // 必须设置APPID,否则会静音
        bundle.putString(BNCommonSettingParam.TTS_APP_ID, "9480303");//将TTS申请的语音设置好
        BNaviSettingManager.setNaviSdkParam(bundle);
    }
    @Subscribe
    public void onEventMainThread(SuccessdEvent event) {
        if (event.getCode() == 100 || event.getCode() == 300) {
            detailBean.setStatus(2);
        }
    }

    private boolean hasBasePhoneAuth() {
        // TODO Auto-generated method stub

        PackageManager pm = this.getPackageManager();
        for (String auth : authBaseArr) {
            if (pm.checkPermission(auth, this.getPackageName()) != PackageManager.PERMISSION_GRANTED) {
                return false;
            }
        }
        return true;
    }
    private boolean hasCompletePhoneAuth() {
        // TODO Auto-generated method stub

        PackageManager pm = this.getPackageManager();
        for (String auth : authComArr) {
            if (pm.checkPermission(auth, this.getPackageName()) != PackageManager.PERMISSION_GRANTED) {
                return false;
            }
        }
        return true;
    }
    @Override
    protected void onResume() {
        super.onResume();
    }
    /**
     * 初始化定位
     */
    private void initLocation(){
        // 开启定位图层
        myListener = new MyLocationListener();
        mLocationClient = new LocationClient(TodaytaskdetailActivity.this);
        mLocationClient.registerLocationListener(myListener);
        LocationClientOption option = new LocationClientOption();
        option.setOpenGps(true); // 打开gps
        option.setCoorType("bd09ll"); // 设置坐标类型
        option.setScanSpan(60000);
        mLocationClient.setLocOption(option);
        mLocationClient.start();
    }
    public class MyLocationListener implements BDLocationListener {
        @Override
        public void onReceiveLocation(final BDLocation location) {
            //获取定位结果
            // map view 销毁后不在处理新接收的位置
            if (location == null) {
                return;
            }
            mCurrentLat = location.getLatitude();
            mCurrentLon = location.getLongitude();
            //开始初始化导航信息
            BNOuterLogUtil.setLogSwitcher(true);
            if (initDirs()) {
                initNavi();
            }
        }
        @Override
        public void onConnectHotSpotMessage(String s, int i) {
        }
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        EventBus.getDefault().unregister(this);
        // 退出时销毁定位
        mLocationClient.stop();
    }

}

BNDemoGuideActivity.java

package com.wdkj.housemanager.activity;

import java.util.ArrayList;
import java.util.List;
import com.baidu.navisdk.adapter.BNRouteGuideManager;
import com.baidu.navisdk.adapter.BNRouteGuideManager.CustomizedLayerItem;
import com.baidu.navisdk.adapter.BNRouteGuideManager.OnNavigationListener;
import com.baidu.navisdk.adapter.BNRoutePlanNode;
import com.baidu.navisdk.adapter.BNaviBaseCallbackModel;
import com.baidu.navisdk.adapter.BaiduNaviCommonModule;
import com.baidu.navisdk.adapter.NaviModuleFactory;
import com.baidu.navisdk.adapter.NaviModuleImpl;
import com.baidu.navisdk.adapter.BNRoutePlanNode.CoordinateType;
import com.wdkj.housemanager.R;

import android.app.Activity;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;


/**
 * 诱导界面
 *
 * @author sunhao04
 *
 */
public class BNDemoGuideActivity extends Activity {

	private final String TAG = BNDemoGuideActivity.class.getName();
	private BNRoutePlanNode mBNRoutePlanNode = null;
	private BaiduNaviCommonModule mBaiduNaviCommonModule = null;

	/*
     * 对于导航模块有两种方式来实现发起导航。 1:使用通用接口来实现 2:使用传统接口来实现
     *
     */
	// 是否使用通用接口
	private boolean useCommonInterface = true;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		TodaytaskdetailActivity.activityList.add(this);//添加到TodaytaskdetailActivity中
		createHandler();
		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
		}
		View view = null;
		if (useCommonInterface) {
			//使用通用接口
			mBaiduNaviCommonModule = NaviModuleFactory.getNaviModuleManager().getNaviCommonModule(
					NaviModuleImpl.BNaviCommonModuleConstants.ROUTE_GUIDE_MODULE, this,
					BNaviBaseCallbackModel.BNaviBaseCallbackConstants.CALLBACK_ROUTEGUIDE_TYPE, mOnNavigationListener);
			if(mBaiduNaviCommonModule != null) {
				mBaiduNaviCommonModule.onCreate();
				view = mBaiduNaviCommonModule.getView();
			}
		} else {
			//使用传统接口
			view = BNRouteGuideManager.getInstance().onCreate(this,mOnNavigationListener);
		}


		if (view != null) {
			setContentView(view);
		}

		Intent intent = getIntent();
		if (intent != null) {
			Bundle bundle = intent.getExtras();
			if (bundle != null) {
				mBNRoutePlanNode = (BNRoutePlanNode) bundle.getSerializable(TodaytaskdetailActivity.ROUTE_PLAN_NODE);
			}
		}
		//显示自定义图标
		if (hd != null) {
			hd.sendEmptyMessageAtTime(MSG_SHOW, 5000);
		}
	}

	@Override
	protected void onResume() {
		super.onResume();
		if(useCommonInterface) {
			if(mBaiduNaviCommonModule != null) {
				mBaiduNaviCommonModule.onResume();
			}
		} else {
			BNRouteGuideManager.getInstance().onResume();
		}



	}

	protected void onPause() {
		super.onPause();

		if(useCommonInterface) {
			if(mBaiduNaviCommonModule != null) {
				mBaiduNaviCommonModule.onPause();
			}
		} else {
			BNRouteGuideManager.getInstance().onPause();
		}

	};

	@Override
	protected void onDestroy() {
		super.onDestroy();
		if(useCommonInterface) {
			if(mBaiduNaviCommonModule != null) {
				mBaiduNaviCommonModule.onDestroy();
			}
		} else {
			BNRouteGuideManager.getInstance().onDestroy();
		}
		TodaytaskdetailActivity.activityList.remove(this);
	}

	@Override
	protected void onStop() {
		super.onStop();
		if(useCommonInterface) {
			if(mBaiduNaviCommonModule != null) {
				mBaiduNaviCommonModule.onStop();
			}
		} else {
			BNRouteGuideManager.getInstance().onStop();
		}

	}

	@Override
	public void onBackPressed() {
		if(useCommonInterface) {
			if(mBaiduNaviCommonModule != null) {
				mBaiduNaviCommonModule.onBackPressed(true);
			}
		} else {
			BNRouteGuideManager.getInstance().onBackPressed(false);
		}
	}

	public void onConfigurationChanged(android.content.res.Configuration newConfig) {
		super.onConfigurationChanged(newConfig);
		if(useCommonInterface) {
			if(mBaiduNaviCommonModule != null) {
				mBaiduNaviCommonModule.onConfigurationChanged(newConfig);
			}
		} else {
			BNRouteGuideManager.getInstance().onConfigurationChanged(newConfig);
		}

	};


	@Override
	public boolean onKeyDown(int keyCode, android.view.KeyEvent event) {
		if(useCommonInterface) {
			if(mBaiduNaviCommonModule != null) {
				Bundle mBundle = new Bundle();
				mBundle.putInt(RouteGuideModuleConstants.KEY_TYPE_KEYCODE, keyCode);
				mBundle.putParcelable(RouteGuideModuleConstants.KEY_TYPE_EVENT, event);
				mBaiduNaviCommonModule.setModuleParams(RouteGuideModuleConstants.METHOD_TYPE_ON_KEY_DOWN, mBundle);
				try {
					Boolean ret = (Boolean)mBundle.get(RET_COMMON_MODULE);
					if(ret) {
						return true;
					}
				}catch(Exception e){
					e.printStackTrace();
				}
			}
		}
		return super.onKeyDown(keyCode, event);
	}
	@Override
	protected void onStart() {
		super.onStart();
		// TODO Auto-generated method stub
		if(useCommonInterface) {
			if(mBaiduNaviCommonModule != null) {
				mBaiduNaviCommonModule.onStart();
			}
		} else {
			BNRouteGuideManager.getInstance().onStart();
		}
	}
	private void addCustomizedLayerItems() {
		List<CustomizedLayerItem> items = new ArrayList<CustomizedLayerItem>();
		CustomizedLayerItem item1 = null;
		if (mBNRoutePlanNode != null) {
			item1 = new CustomizedLayerItem(mBNRoutePlanNode.getLongitude(), mBNRoutePlanNode.getLatitude(),
					mBNRoutePlanNode.getCoordinateType(), getResources().getDrawable(R.mipmap.ic_launcher),
					CustomizedLayerItem.ALIGN_CENTER);
			items.add(item1);

			BNRouteGuideManager.getInstance().setCustomizedLayerItems(items);
		}
		BNRouteGuideManager.getInstance().showCustomizedLayer(true);
	}

	private static final int MSG_SHOW = 1;
	private static final int MSG_HIDE = 2;
	private static final int MSG_RESET_NODE = 3;
	private Handler hd = null;

	private void createHandler() {
		if (hd == null) {
			hd = new Handler(getMainLooper()) {
				public void handleMessage(android.os.Message msg) {
					if (msg.what == MSG_SHOW) {
						addCustomizedLayerItems();
					} else if (msg.what == MSG_HIDE) {
						BNRouteGuideManager.getInstance().showCustomizedLayer(false);
					} else if (msg.what == MSG_RESET_NODE) {
						BNRouteGuideManager.getInstance().resetEndNodeInNavi(
								new BNRoutePlanNode(116.21142, 40.85087, "百度大厦11", null, CoordinateType.GCJ02));
					}
				};
			};
		}
	}

	private OnNavigationListener mOnNavigationListener = new OnNavigationListener() {

		@Override
		public void onNaviGuideEnd() {
			//退出导航
			finish();
		}

		@Override
		public void notifyOtherAction(int actionType, int arg1, int arg2, Object obj) {

			if (actionType == 0) {
				//导航到达目的地 自动退出
				Log.i(TAG, "notifyOtherAction actionType = " + actionType + ",导航到达目的地!");
			}
			Log.i(TAG, "actionType:" + actionType + "arg1:" + arg1 + "arg2:" + arg2 + "obj:" + obj.toString());
		}
	};
	private final static String RET_COMMON_MODULE = "module.ret";

	private interface RouteGuideModuleConstants {
		final static int METHOD_TYPE_ON_KEY_DOWN = 0x01;
		final static String KEY_TYPE_KEYCODE = "keyCode";
		final static String KEY_TYPE_EVENT = "event";
	}
}

在AndroidManifest.xml中配置

        <activity
            android:name=".activity.BNDemoGuideActivity"
            android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

效果如下:




Android Studio调用百度地图(二):实现地图显示后台定位和步行导航 先看一下运行效果: 阅读详情

相关推荐

安卓百度地图开发

安卓百度地图开发文档 1.      申请API key 利用jdk工具生成,进入jdk 的bin目录下, 输入keytool -genkey -alias androiddebugkey-keyalg RSA -validity 20000 -keystore debug.keystore -storepass android-keypass android,并根据中文提升输入基本信息(测

qq_29451649的博客 1429

2019-详细Android Studio开发百度地图(2)—百度地图_基本地图的显示

百度地图_基本地图的显示 参考官方文档(地图显示)的步骤; 具体操作: 1.在&amp;amp;amp;amp;amp;amp;amp;amp;amp;lt; application &amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;中加入如下代码配置开发密钥(AK): AK可以进入控制台获取: 在&amp;amp;amp;amp;amp;amp;amp;amp;amp;lt; application &amp;amp;amp;amp;amp

花海ipa的博客 1万+

基于安卓的校园助手APP开发实战项目

htmltable {th, td {th {pre {简介:“基于安卓的校园助手APP”是一款面向高校学生的多功能移动应用,旨在通过技术手段提升校园生活的便捷性与智能化水平。该APP以百度地图API为核心,集成定位导航、周边搜索、实时路况、地图定制和事件标注等地理信息服务,并融合课程管理、成绩查询、图书借阅、校内论坛、公告通知和校园一卡通等实用功能模块。

weixin_42581003的博客 1047

Adnroid 百度地图多标注 显示在一个页面的问题

Adnroid 百度地图多标注 显示在一个页面的问题

涂文远的博客 530

Android百度地图综合导航开发实战教程

随着智能手机的普及,基于Android平台的移动应用已经深入人们日常生活。其中,GPS(全球定位系统)的应用尤其突出,尤其是在地图导航领域。GPS允许设备接收来自卫星的信号,精确定位用户位置,结合地图服务,为用户提供从A点到B点的最佳路线和实时导航服务。百度地图API是由百度公司提供的地图服务接口,它允许开发者在其应用程序中嵌入地图功能,实现地点搜索、路线规划、定位和轨迹展示等功能。百度地图API的基本组成包括一系列服务模块,例如地图展示、位置服务、路径规划、地理编码等。

weixin_28968525的博客 869

Adams软件安装与配置全攻略:从入门到机器人仿真

机械系统动力学仿真软件Adams是工业机器人开发的重要工具,其安装过程涉及许可证配置、环境变量设置等关键技术环节。专业仿真软件安装通常需要处理系统兼容性、组件依赖和授权验证等工程问题,特别是在机器人控制仿真等场景中,还需集成MATLAB/Simulink等第三方工具。本文以Windows平台为例,详解Adams安装的核心步骤,包括系统环境检查、许可证服务器配置、工业机器人专项模块安装等实践要点,并针对NVIDIA Quadro显卡优化、27500端口通信等常见问题提供解决方案,帮助用户快速搭建可靠的仿真环境

weixin_28523493的博客 196

Android开发之——调用百度地图导航功能

使用场景是在某商家或者其他地点,显示在地图上,然后需要从当前

Micheal_Yang's Blog 6879

AD56XXR系列DAC驱动设计:SPI接口、寄存器配置与嵌入式工程实践

数模转换器(DAC)是嵌入式系统实现高精度模拟控制的核心器件,其性能取决于通信协议可靠性、寄存器配置准确性及硬件协同设计能力。基于SPI总线的电压输出型DAC广泛应用于工业控制、光模块偏置、传感器校准等场景,需兼顾静态精度、动态响应与低功耗特性。AD56XXR系列作为典型集成内部基准与多通道同步更新能力的12/14/16位DAC,支持轨到轨输出与灵活掉电模式,为资源受限MCU提供可移植固件范式。本文围绕SPI时序约束、16位指令字解析、LDAC同步机制及精度补偿策略展开,覆盖从硬件连接、初始化流程到量产级可

weixin_33481022的博客 610

Android studio 百度地图开发(3)地图导航

Android studio 百度地图开发(3)地图导航

生活没有if-else 2万+

先进半导体材料与器件Chapter3

Chapter3 异质结双极晶体管(HBT) 作者:毛茏玮 / Saint 掘金:https://juejin.im/user/5aa1f89b6fb9a028bb18966a 微博:https://weibo.com/5458277467/profile?topnav=1&wvr=6&is_all=1 GitHub:github.com/saint-000 知乎:https:/...

一个会写代码的烤鸭 5801

AISHELL-2 中文语音数据库

AISHELL-1 is by far the largest open-source speech corpus available for Mandarin speech recognition research. It was released with a baseline system containing solid training and testing pipelines for Mandarin ASR. In AISHELL-2, 1000 hours of cle

AI_SHELL的博客 7887

android百度导航实现,Android 集成百度地图实现设备定位

Android 集成百度地图实现设备定位步骤1:申请android 端SDK :http://lbsyun.baidu.com/步骤2:下载基础版SDK步骤3:下载示例程序步骤4:开始集成:ak加入libs加入SDKInitializer.setCoordType(CoordType.BD09LL);图标类/*** 演示覆盖物的用法*/public class OverlayDemo extend...

weixin_33941859的博客 330

企业微信API实战:解密external_userid的跨应用一致性管理

本文深入探讨企业微信API中external_userid的跨应用一致性管理问题,解析其本质及在不同应用场景下的ID不一致挑战。通过ID转换与统一管理方案,结合unionid实现跨应用客户数据整合,提供实战代码示例和架构设计,助力企业构建高效的客户管理系统。

weixin_29258297的博客 636

Android——实现APP内算路导航

百度API算路导航效果视频跳转至百度地图进行算路导航APP内进行算路导航功能实现跳转方式实现权限声明判断手机内是否安装百度地图实现跳转至百度地图非跳转方式实现UI设计背景圆点布局代码功能实现 效果视频 跳转至百度地图进行算路导航 APP内进行算路导航 功能实现 跳转方式实现 功能描述:通过初始化百度地图API,获取当前位置的经纬度做为起点,所输入的地址做为目的地,然后封装成Uri格式,使用隐式Intent调用百度地图APP,最终实现算路导航。 权限声明 声明导航所需要具备的权限,例如:网路权限、位置权限

FranzLiszt的博客 3141

从自然语言到PCB设计:DeepSeek与Altium协同自动化实战指南

摘要:在电子设计领域,将自然语言需求转化为PCB设计图是实现自动化设计的重要目标。受限于当前NLP和EDA技术,通过DeepSeek直接生成完整PCB设计图尚无法实现,但在设计辅助环节已展现实用价值。本文深入分析技术可行性,提出"自然语言→设计约束→脚本生成→人工验证"的人机协同工作流。通过28个完整代码示例、12张技术图表及5个工程案例,详细展示DeepSeek解析需求、生成设计约束,并结合Altium Designer API实现元件放置、规则设置、DRC校验的全流程。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1759

DSI3接口介绍

DSI3(distributed system interface)分布式系统接口,是一种强大且通用的总线协议,旨在将多个遥感器和执行器互连到中央控制模块。在单总线中集成了电压信号、电流信号还有电源,甚至引用了3位状态机概念(反向数据),从逻辑0/1扩展到了0/1/2。

Airer_00的博客 4299

机器人远程控制系统(安卓端)

前言 现在正值春招面试的时间段,笔者并没有投很多简历,因为经历过某大公司的电话面之后发现太多的不足,与其花时间在刷简历上,不如好好总结和复习学过的东西,本篇就作为个人项目总结的开端。 这个项目其实就是学校的一个参赛项目,主要实现的功能是通过发送语音文字识别控制机器人移动,也可以定点或多点导航,实时接收并更新机器人反馈的状态。我主要负责安卓的开发,下面分功能模块讲解: index界面 实现功能:三个...

weixin_38174835的博客 4581

华为OD机试双机位C卷-组装新的数组(Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【组装新的数组】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 组装新的数组。

qq_45776114的博客 1145

Android开发丶调用百度地图进行导航

开发过程中,遇到这样一个需求,指定起始和终点站,然后从app内部调起百度地图进行导航,网上相关的方法很多,但是很多都不太好使,官方的文档记录也不是很详细,经过一番折腾踩了一些坑,总算是将其实现了,特此做下记录! 步骤如下: 1.首先是新建一个AndroidStudio项目,然后去百度地图开放者平台注册项目,获取到ak值。 2.在百度地图开放者平台下载sdk,注意,常用的唤醒百度地图来进行导航...

u014078990的博客 6017

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

百度地图导航(不需要百度地图的jar包和so文件)

百度地图导航 在项目中或多或少会用到百度地图,如果你项目上用到导航,那么你来对了,现在的Android手机上几乎都装了百度地图,所以在项目上需要导航的时候直接调用百度地图app进行导航很方便,如果手机上没有百度地图app也可以用浏览器上网页版的百度地图进行导航。下面贴代码。 /** * 百度地图导航 * 若手机存在百度app 则会用app导航 * 若无 则会用浏览器打开

liyunte的博客 2725

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

2019-详细Android Studio开发百度地图(5)—百度地图_导航和TTS语音播报的实现

百度地图_导航和TTS语音播报的实现 巨详细 注: 本文仅在前文的基础上只新增了步行导航和TTS语音播报。 参考官方文档(导航和TTS)步骤: 配置AndroidManifest.xml文件: &amp;amp;amp;amp;amp;lt;!-- 读写sd卡 --&amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;lt;uses-permission android:name=&amp;amp;amp;amp;quot;and

花海ipa的博客 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Android百度地图+OSS图片拍照上传+导航+idea

Android百度地图+OSS图片上传安卓百度地图开发百度地图申请key百度地图显示百度地图路径规划导航功能百度输入地址模糊匹配拍照图片上传上传图片到OSS服务器图片显示在地图上 安卓百度地图开发 本文章,提供初学者学习,自己写的demo文档,第一次开发安卓(一直做java开发),有什么不对的地方欢迎指教。 本次开发使用的开发工具为idea,文章很全,适合新手,大佬绕道 百度地图申请key 百度...

xgn19941116的博客 2015

百度地图SDK导航功能实战:从零实现真实导航与模拟导航(附常见问题解决方案)

本文详细介绍了百度地图SDK导航功能的实战开发,包括真实导航与模拟导航的全流程实现。从环境准备、SDK集成到核心功能开发,提供了完整的代码示例和常见问题解决方案,帮助开发者快速掌握百度地图导航SDK的应用技巧。

sky77的博客 452

android开发百度地图步行导航

准备工作: 在百度地图上下载依赖,配置key。 创建一个demo项目,可显示百度地图的 添加按钮,点击按钮,开始导航 发起算路我用的是routePlanWithRouteNode这个方法,官网中routePlanWithParams这个方法,我调着闪退,目前不清楚原因 在mainAcitivity中,添加如下代码 private WalkNavigateHelper helper = null; @Override protected void onCreate(Bundle saved.

my_web_advanced的博客 2554

Android应用集成百度定位及导航

Android应用集成百度定位及导航步骤如下: 将以上所有so库分别放到arm64-v8a,armeabi,armeabi-v7a,x86,x86_64文件夹下 将assets文件夹里的资源拷贝到/项目名/app/src/main/下【主要用于导航】 将从百度定位,导航,地址转码jar包放到项目libs下 将以上所有资源都放到项目libs下 配置build.gradle defaultConfig

hkw1991的博客 3719

Android集成百度定位以及导航详解

Android集成百度定位以及导航详解                    百度地图Android SDK 官方下载地址:                            包括类参考、示例代码、开发包(基础地图、检索功能、LBS云检索和计算工具)                        申请密钥教程:点击打开 1.无GUI定位:

gjy_it的博客 3万+
上一篇: Android集成百度地图点击Mark弹出PopWindow
下一篇: Shiro的基本使用
码农王山
博客等级 码龄12年 32粉丝 41原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值