您当前的位置: Android导航SDK > 开发指南 > Hello World
Hello World

开发工具

Android开发工具有很多,开发者可根据自己的喜好进行选择。在此,我们推荐开发者使用Eclipse作为自己的开发工具,本套开发指南也是针对Eclipse开发环境下进行编写的。

SDK组成

百度导航SDK由三部分组成:代码Jar包,资源Jar包,so动态库。代码Jar包由Java源代码编译打包而成,线路规划和导航、自定义图层,语音播报等功能。资源Jar包由导航所需的配置数据、基础数据,以及导航功能所需的layout、drawable、string等资源打包而成。So动态库是由native代码编译而成,主要是地图、导航、路线规划、语音播报等功能的底层实现。

工程配置

在新建的android工程里的assets目录添加BaiduNaviSDK_Resource_X_X.png, BaiduNaviSDK _X_X.png和chanel文件(demo工程里面assets目录有),在libs目录添加BaiduNaviSDK_X_X.jar, httpmime-4.1.2.jar 在libs/armeabi目录添加so库,libapp_BaiduNaviApplib.so、libapp_BaiduVIlib.so、libaudiomessage-jni.so、libcurl.so、libgnustl_shared.so、 libbds.so、 libbd_etts.so 、libbdtts.so、libetts_domain_data_builder.so、libBDSpeechDecoder_V1.so、liblocnaviSDK.so。

在AndroidManifest.xml文件中添加如下三个内容:

<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" />     
 <-- 摄影机 -->     
<uses-permission android:name="android.permission.CAMERA" />

增加百度LBS密钥,将下面的key值修改为在LBS开放平台申请的AK。

<meta-data android:name="com.baidu.lbsapi.API_KEY"  
            android:value="CVCyYeTeOnl1TDeONgGHWhva" />

定位用的service:

<service  
           android:name="com.baidu.location.f"  
           android:enabled="true"  
           android:process=":remote" />

初始化

在使用SDK前,应该先进行百度服务授权和引擎初始化。已经内置了tts播报功能,如果需要使用自己的tts来进行播报,需要传入对应tts回调。具体回调请参考demo:

private void initNavi() {
        // 申请权限
        if (android.os.Build.VERSION.SDK_INT >= 23) {
 
            if (!hasBasePhoneAuth()) {
 
                this.requestPermissions(authBaseArr, authBaseRequestCode);
                return;
 
            }
        }
	BaiduNaviManager.getInstance().init(this, mSDCardPath, APP_FOLDER_NAME,
	new NaviInitListener() {
        @Override
        public void onAuthResult(int status, String msg) {
                if (0 == status) {
                    authinfo = "key校验成功!";
                } else {
                    authinfo = "key校验失败, " + msg;
                }
                BNDemoMainActivity.this.runOnUiThread(new Runnable() {
 
                    @Override
                    public void run() {
                        Toast.makeText(BNDemoMainActivity.this, authinfo, Toast.LENGTH_LONG).show();
                    }
                });
        }
 
        public void initSuccess() {
		Toast.makeText(BNDemoMainActivity.this, "百度导航引擎初始化成功", Toast.LENGTH_SHORT).show();
	}
 
	public void initStart() {
		Toast.makeText(BNDemoMainActivity.this, "百度导航引擎初始化开始", Toast.LENGTH_SHORT).show();
	}
 
	public void initFailed() {
		Toast.makeText(BNDemoMainActivity.this, "百度导航引擎初始化失败", Toast.LENGTH_SHORT).show();
		}
	}, null /*mTTSCallback*/);
}