Android百度地图导航Demo_百度导航例子_安卓导航实例
介绍
由于项目需要、这两天几天一直在研究百度导航的功能、通过不断的实践终于有结果了、不愿意独享
现在我把我的研究成果和大家分享一下、其实百度的 API 已经相当不错了
这之所以要写出来、一是自己做一个笔记、二是以方便一起朋友少走弯路
百度导航SDK由三部分组成:代码Jar包,资源包,so动态库。代码Jar包由Java源代码编译打包而成
提供在线导航、线路规划、语音播报等功能/资源包由导航所需的配置数据、基础数据
以及导航功能所需的layout、drawable、string等资源打包而成
So动态库是由native代码编译而成,主要是地图、导航、路线规划、语音播报等功能的底层实现
导入库文件
在相关下载最新的库文件
在新建的Android工程里的assets目录添加BaiduNaviSDK_Resource_vX_X_X.png和channel文件
在libs目录添加BaiduNaviSDK_vX_X_X.jar、android_api_1.1_forsdk.jar、galaxy_mini.jar、galaxy_mini_lbs.jar、lbsCoreSDK.jar
在libs/armeabi目录添加libapp_BaiduNaviApplib_vX_X.so、libejTTS.so、libCNPackage.so、liblocnaviSDK.so
确定后返回、这样您就可以在程序中使用百度定位SDK了
设置AndroidManifest.xml
在application标签中声明service组件,每个app拥有自己单独的导航service
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="你的百度key,源代码中已经提供了我申请的key" /> <service android:name="com.baidu.navi.location.f" android:enabled="true"/>
声明使用权限
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCES_MOCK_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_GPS" /> <!-- SDK1.5需要android.permission.GET_TASKS权限判断本程序是否为当前运行的应用? --> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.BROADCAST_STICKY" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <!-- 来电消音 --> <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.RECORD_AUDIO" />
百度导航基本使用
public class RouteGuideDemo extends Activity{ private BNaviPoint mStartPoint = new BNaviPoint(116.30142, 40.05087,"百度大厦", BNaviPoint.CoordinateType.GCJ02); private BNaviPoint mEndPoint = new BNaviPoint(116.39750, 39.90882, "北京*", BNaviPoint.CoordinateType.GCJ02); private List<BNaviPoint> mViaPoints = new ArrayList<BNaviPoint>(); private Button mBtnAddViaPoint; public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_routeguide); mBtnAddViaPoint = (Button) findViewById(R.id.add_via_btn); mBtnAddViaPoint.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { addViaPoint(); } }); } private void addViaPoint() { EditText viaXEditText = (EditText) findViewById(R.id.et_via_x); EditText viaYEditText = (EditText) findViewById(R.id.et_via_y); double latitude = 0, longitude = 0; try { latitude = Integer.parseInt(viaXEditText.getText() .toString()); longitude = Integer.parseInt(viaYEditText.getText() .toString()); } catch (NumberFormatException e) { e.printStackTrace(); } // 默认坐标系为GCJ BNaviPoint viaPoint = new BNaviPoint(longitude/1e5, latitude/1e5, "途经点" + (mViaPoints.size()+1)); mViaPoints.add(viaPoint); Toast.makeText(this, "已添加途经点:" + viaPoint.getName(), Toast.LENGTH_SHORT).show(); if (mViaPoints.size() >= 3) { mBtnAddViaPoint.setEnabled(false); } } //启动GPS导航. 前置条件:导航引擎初始化成功 private void launchNavigator(){ //这里给出一个起终点示例,实际应用中可以通过POI检索 //外部POI来源等方式获取起终点坐标 BaiduNaviManager.getInstance().launchNavigator(this, 40.05087, 116.30142,"百度大厦", 39.90882, 116.39750,"北京*", NE_RoutePlan_Mode.ROUTE_PLAN_MOD_MIN_TIME, true, BaiduNaviManager.STRATEGY_FORCE_ONLINE_PRIORITY, new OnStartNavigationListener() { @Override public void onJumpToNavigator(Bundle configParams) { Intent intent = new Intent(RouteGuideDemo.this, BNavigatorActivity.class); intent.putExtras(configParams); startActivity(intent); } @Override public void onJumpToDownloader() { } }); } //指定导航起终点启动GPS导航.起终点可为多种类型坐标系的地理坐标。 //前置条件:导航引擎初始化成功 private void launchNavigator2(){ //这里给出一个起终点示例,实际应用中可以通过POI检索、 //外部POI来源等方式获取起终点坐标 BNaviPoint startPoint = new BNaviPoint(116.307854,40.055878, "百度大厦", BNaviPoint.CoordinateType.BD09_MC); BNaviPoint endPoint = new BNaviPoint(116.403875,39.915168, "北京*", BNaviPoint.CoordinateType.BD09_MC); BaiduNaviManager.getInstance().launchNavigator(this, startPoint, endPoint, NE_RoutePlan_Mode.ROUTE_PLAN_MOD_MIN_TIME, true, BaiduNaviManager.STRATEGY_FORCE_ONLINE_PRIORITY, new OnStartNavigationListener() { @Override public void onJumpToNavigator(Bundle configParams) { Intent intent = new Intent(RouteGuideDemo.this, BNavigatorActivity.class); intent.putExtras(configParams); startActivity(intent); } @Override public void onJumpToDownloader() { } }); } }
最后、还是给大家献上源码链接: http://dwtedx.com/download.html?bdkey=s/1pJx6gHl 密码: 0lga
推荐阅读
-
Android仿微信调用第三方地图应用导航(高德、百度、腾讯)
-
Android仿微信调用第三方地图应用导航(高德、百度、腾讯)
-
Android百度地图导航开发:Androidstudio导入aar包,解决新版本百度地图SDK没有com.baidu.navisdk.adapter及类BaiduNaviManagerFactory
-
Android 百度地图导航没有语音问题踩坑 重点是AndroidManifest.xml的配置问题
-
android app安卓应用实例:起始页+fragment底部导航栏+ViewPager滑动切换+个人信息界面(二)
-
Android调用百度地图Web端接口,实现百度定位、导航
-
Android studio 百度地图开发(10)语音播报的问题:能正常导航,但是无法语音播报
-
Android百度地图开发学习笔记(五)之集成语音导航和Intent调用百度地图客户端
-
Android百度地图导航开发:Androidstudio导入aar包,解决新版本百度地图SDK没有com.baidu.navisdk.adapter及类BaiduNaviManagerFactory
-
android app安卓应用实例:起始页+fragment底部导航栏+ViewPager滑动切换+个人信息界面(二)