实例介绍
【实例简介】
【实例截图】
【核心代码】
package com.baidu.navi.sdkdemo; import java.io.File; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import com.baidu.navi.sdkdemo.R; import com.baidu.navisdk.adapter.BNCommonSettingParam; import com.baidu.navisdk.adapter.BNOuterLogUtil; import com.baidu.navisdk.adapter.BNOuterTTSPlayerCallback; import com.baidu.navisdk.adapter.BNRouteGuideManager; import com.baidu.navisdk.adapter.BNRoutePlanNode; import com.baidu.navisdk.adapter.BNRoutePlanNode.CoordinateType; import com.baidu.navisdk.adapter.BNaviCommonParams; 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; import com.baidu.navisdk.adapter.PackageUtil; import com.baidu.navisdk.adapter.base.BaiduNaviSDKProxy; import android.Manifest; import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.Button; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; public class BNDemoMainActivity extends Activity { public static List<Activity> activityList = new LinkedList<Activity>(); private static final String APP_FOLDER_NAME = "BNSDKSimpleDemo"; private Button mWgsNaviBtn = null; private Button mGcjNaviBtn = null; private Button mBdmcNaviBtn = null; private Button mDb06ll = null; private String mSDCardPath = null; public static final String ROUTE_PLAN_NODE = "routePlanNode"; public static final String SHOW_CUSTOM_ITEM = "showCustomItem"; public static final String RESET_END_NODE = "resetEndNode"; public static final String VOID_MODE = "voidMode"; private final static String authBaseArr[] = { Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION }; private final static String authComArr[] = { Manifest.permission.READ_PHONE_STATE }; private final static int authBaseRequestCode = 1; private final static int authComRequestCode = 2; private boolean hasInitSuccess = false; private boolean hasRequestComAuth = false; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); activityList.add(this); setContentView(R.layout.activity_main); Handler h = new Handler(); h.postDelayed(new Runnable() { @Override public void run() { String name = Thread.currentThread().getName(); Log.i("crug", name); delayTest(); } }, 500); mWgsNaviBtn = (Button) findViewById(R.id.wgsNaviBtn); mGcjNaviBtn = (Button) findViewById(R.id.gcjNaviBtn); mBdmcNaviBtn = (Button) findViewById(R.id.bdmcNaviBtn); mDb06ll = (Button) findViewById(R.id.mDb06llNaviBtn); BNOuterLogUtil.setLogSwitcher(true); initListener(); if (initDirs()) { initNavi(); } // BNOuterLogUtil.setLogSwitcher(true); } @Override protected void onResume() { super.onResume(); } public void delayTest() { // SDKInitializer.initialize(BNDemoMainActivity.this.getApplication()); // new Thread(new Runnable() { // // @Override // public void run() { // Looper.prepare(); // SDKInitializer.initialize(BNDemoMainActivity.this.getApplication()); // } // }).start(); } private void initListener() { if (mWgsNaviBtn != null) { mWgsNaviBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { if (BaiduNaviManager.isNaviInited()) { routeplanToNavi(CoordinateType.WGS84); } } }); } if (mGcjNaviBtn != null) { mGcjNaviBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { if (BaiduNaviManager.isNaviInited()) { routeplanToNavi(CoordinateType.GCJ02); } } }); } if (mBdmcNaviBtn != null) { mBdmcNaviBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { if (BaiduNaviManager.isNaviInited()) { routeplanToNavi(CoordinateType.BD09_MC); } } }); } if (mDb06ll != null) { mDb06ll.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { if (BaiduNaviManager.isNaviInited()) { routeplanToNavi(CoordinateType.BD09LL); } } }); } } 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"); } }; public void showToastMsg(final String msg) { BNDemoMainActivity.this.runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(BNDemoMainActivity.this, msg, Toast.LENGTH_SHORT).show(); } }); } 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; } 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 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(); hasInitSuccess = true; initSetting(); } public void initStart() { Toast.makeText(BNDemoMainActivity.this, "百度导航引擎初始化开始", Toast.LENGTH_SHORT).show(); } public void initFailed() { Toast.makeText(BNDemoMainActivity.this, "百度导航引擎初始化失败", Toast.LENGTH_SHORT).show(); } }, null, ttsHandler, ttsPlayStateListener); } private String getSdcardDir() { if (Environment.getExternalStorageState().equalsIgnoreCase(Environment.MEDIA_MOUNTED)) { return Environment.getExternalStorageDirectory().toString(); } return null; } private CoordinateType mCoordinateType = null; private void routeplanToNavi(CoordinateType coType) { mCoordinateType = coType; if (!hasInitSuccess) { Toast.makeText(BNDemoMainActivity.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(BNDemoMainActivity.this, "没有完备的权限!", Toast.LENGTH_SHORT).show(); } } } BNRoutePlanNode sNode = null; BNRoutePlanNode eNode = null; switch (coType) { case GCJ02: { sNode = new BNRoutePlanNode(116.30142, 40.05087, "百度大厦", null, coType); eNode = new BNRoutePlanNode(116.39750, 39.90882, "北京天安门", null, coType); break; } case WGS84: { sNode = new BNRoutePlanNode(116.300821, 40.050969, "百度大厦", null, coType); eNode = new BNRoutePlanNode(116.397491, 39.908749, "北京天安门", null, coType); break; } case BD09_MC: { sNode = new BNRoutePlanNode(12947471, 4846474, "百度大厦", null, coType); eNode = new BNRoutePlanNode(12958160, 4825947, "北京天安门", null, coType); break; } case BD09LL: { sNode = new BNRoutePlanNode(116.30784537597782, 40.057009624099436, "百度大厦", null, coType); eNode = new BNRoutePlanNode(116.40386525193937, 39.915160800132085, "北京天安门", null, coType); break; } default: ; } 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)); BaiduNaviManager.getInstance().launchNavigator(this, list, 1, true, new DemoRoutePlanListener(sNode), eventListerner); } } BaiduNaviManager.NavEventListener eventListerner = new BaiduNaviManager.NavEventListener() { @Override public void onCommonEventCall(int what, int arg1, int arg2, Bundle bundle) { BNEventHandler.getInstance().handleNaviEvent(what, arg1, arg2, bundle); } }; public class DemoRoutePlanListener implements 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(BNDemoMainActivity.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(BNDemoMainActivity.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); BNaviSettingManager.setIsAutoQuitWhenArrived(true); Bundle bundle = new Bundle(); // 必须设置APPID,否则会静音 bundle.putString(BNCommonSettingParam.TTS_APP_ID, "9354030"); BNaviSettingManager.setNaviSdkParam(bundle); } private BNOuterTTSPlayerCallback mTTSCallback = new BNOuterTTSPlayerCallback() { @Override public void stopTTS() { // TODO Auto-generated method stub Log.e("test_TTS", "stopTTS"); } @Override public void resumeTTS() { // TODO Auto-generated method stub Log.e("test_TTS", "resumeTTS"); } @Override public void releaseTTSPlayer() { // TODO Auto-generated method stub Log.e("test_TTS", "releaseTTSPlayer"); } @Override public int playTTSText(String speech, int bPreempt) { // TODO Auto-generated method stub Log.e("test_TTS", "playTTSText" "_" speech "_" bPreempt); return 1; } @Override public void phoneHangUp() { // TODO Auto-generated method stub Log.e("test_TTS", "phoneHangUp"); } @Override public void phoneCalling() { // TODO Auto-generated method stub Log.e("test_TTS", "phoneCalling"); } @Override public void pauseTTS() { // TODO Auto-generated method stub Log.e("test_TTS", "pauseTTS"); } @Override public void initTTSPlayer() { // TODO Auto-generated method stub Log.e("test_TTS", "initTTSPlayer"); } @Override public int getTTSState() { // TODO Auto-generated method stub Log.e("test_TTS", "getTTSState"); return 1; } }; @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { // TODO Auto-generated method stub super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == authBaseRequestCode) { for (int ret : grantResults) { if (ret == 0) { continue; } else { Toast.makeText(BNDemoMainActivity.this, "缺少导航基本的权限!", Toast.LENGTH_SHORT).show(); return; } } initNavi(); } else if (requestCode == authComRequestCode) { for (int ret : grantResults) { if (ret == 0) { continue; } } routeplanToNavi(mCoordinateType); } } }
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论