跳转第三方App或网页进行导航
生活随笔
收集整理的這篇文章主要介紹了
跳转第三方App或网页进行导航
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*** Created by zhq_zhao on 2017/5/5.* 注意百度不需要起始位置的經緯度,而高德需要起始位置的經緯度* 使用第三方導航:高德、百度。。。。。。。。。。*/
public class AmapUtil {private static AmapUtil mAmapUtil;private LocationManager locationManager;private String locationProvider;public static String slat;public static String slng;private Location location;public AmapUtil(Context getApplicationContext) {//獲取地理位置管理器locationManager = (LocationManager) getApplicationContext.getSystemService(Context.LOCATION_SERVICE);//獲取所有可用的位置提供器List<String> providers = locationManager.getProviders(true);if (providers.contains(LocationManager.GPS_PROVIDER)) {//如果是GPSlocationProvider = LocationManager.GPS_PROVIDER;} else if (providers.contains(LocationManager.NETWORK_PROVIDER)) {//如果是NetworklocationProvider = LocationManager.NETWORK_PROVIDER;} else {ToastUtil.show(getApplicationContext, "沒有可用的位置提供器");return;}//獲取Locationif (ActivityCompat.checkSelfPermission(getApplicationContext, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getApplicationContext, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {ToastUtil.show(getApplicationContext, "沒有可用的位置提供器");}location = locationManager.getLastKnownLocation(locationProvider);if(location !=null){//不為空,顯示地理位置經緯度getLocationInfo(location,getApplicationContext);}}/**獲取起點位置用于高德地圖導航的使用** @param location*/private void getLocationInfo(Location location,Context context) {if (location != null) {//獲取緯度slat = String.valueOf(location.getLatitude());//獲取經度slng = String.valueOf(location.getLongitude());} else {ToastUtil.show(context,"請允許定位權限");return ;}}/*** 根據包名檢測某個APP是否安裝* @param packageName 包名 百度的包名為 com.baidu.BaiduMap,高德com.autonavi.minimap,騰訊* @return true 安裝 false 沒有安裝*/public boolean isInstallByRead(String packageName) {return new File("/data/data/" + packageName).exists();}public static AmapUtil getInstance(Context context){if(mAmapUtil ==null){mAmapUtil =new AmapUtil(context);}return mAmapUtil;}/*** 打開百度地圖導航客戶端* data = Intent.getIntent("baidumap://map/navi?location=34.264642646862,108.95108518068&type=BLK&src=thirdapp.navi.you* location 坐標點 location與query二者必須有一個,當有location時,忽略query* query 搜索key 同上* type 路線規劃類型 BLK:躲避擁堵(自駕);TIME:最短時間(自駕);DIS:最短路程(自駕);FEE:少走高速(自駕);默認DIS*/public void openBaiduNavi(Context context,String lat,String lng) {StringBuffer stringBuffer = new StringBuffer("baidumap://map/geocoder?location=").append(lat).append(",").append(lng).append("&type=TIME");Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(stringBuffer.toString()));intent.setPackage("com.baidu.BaiduMap");context.startActivity(intent);}/*** 打開google Web地圖導航*/public void openWebGoogleNavi(Context context,String lat,String lng) {
// http://ditu.google.cn/maps?hl=zh&mrt=loc&q=StringBuffer stringBuffer = new StringBuffer(" http://ditu.google.cn/maps?hl=zh&mrt=loc&q=").append("to").append(lat).append(",").append(lng);Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(stringBuffer.toString()));context. startActivity(i);}/*** 打開網頁版 導航 (高德)* 不填我的位置,則通過瀏覽器定未當前位置** @param context* @param myLatLng 起點經緯度* @param myAddress 起點地址名展示* @param destination 終點經緯度* @param destinationAddress 終點地址名展示*/public static void openBrowserMap(Context context, LatLonPoint myLatLng, LatLonPoint destination) {Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");intent.setData(Uri.parse("http://uri.amap.com/navigation?" +"from=" + myLatLng.getLongitude() + "," +myLatLng.getLatitude() + "," + "start&to=" + destination.getLongitude() + "," + destination.getLatitude() + "," + "end&mode=car&src=CQRCB"));context.startActivity(intent);}/*** 打開網頁版 導航 (百度)* @param activity* @param sLongitude* @param sLatitude* @param sName* @param dLongitude* @param dLatitude* @param dName* @param region* @param appName* @param useOutWeb*/public static void openBrosserNaviMap(Context activity, String sLongitude, String sLatitude,String sName, String dLongitude, String dLatitude, String dName) {Uri mapUri = Uri.parse("http://api.map.baidu.com/direction?origin=latlng:" +sLatitude + "," + sLongitude + "|name:" + sName + "&destination=latlng:" +dLatitude + "," + dLongitude + "|name:" + dName + "&mode=driving®ion=" + "重慶" +"&output=html&src=" + "重慶農商行");Intent loction = new Intent(Intent.ACTION_VIEW, mapUri);activity.startActivity(loction);}/*** 打開google地圖客戶端開始導航* q:目的地* mode:d駕車 默認*/public void openGoogleNavi(Context context,String lat,String lng) {StringBuffer stringBuffer = new StringBuffer("google.navigation:q=").append(lat).append(",").append(lng).append("&mode=d");Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(stringBuffer.toString()));i.setPackage("com.google.android.apps.maps");context.startActivity(i);}/*** 啟動高德App進行導航* sourceApplication 必填 第三方調用應用名稱。如 amap* poiname 非必填 POI 名稱* dev 必填 是否偏移(0:lat 和 lon 是已經加密后的,不需要國測加密; 1:需要國測加密)* style 必填 導航方式(0 速度快; 1 費用少; 2 路程短; 3 不走高速;4 躲避擁堵;5 不走高速且避免收費;6 不走高速且躲避擁堵;7 躲避收費和擁堵;8 不走高速躲避收費和擁堵))*/public void openGaoDeNavi(Context context,String slat,String slng) {StringBuffer stringBuffer = new StringBuffer("androidamap://navi?sourceApplication=").append("yitu8_driver").append("&lat=").append(slat).append("&lon=").append(slng).append("&dev=").append(1).append("&style=").append(0);;
// if (!TextUtils.isEmpty(poiname)) {
// stringBuffer.append("&poiname=").append(poiname);
// }Intent intent = new Intent(Intent.ACTION_VIEW, android.net.Uri.parse(stringBuffer.toString()));intent.addCategory(Intent.CATEGORY_DEFAULT);intent.setPackage("com.autonavi.minimap");context.startActivity(intent);}}
總結
以上是生活随笔為你收集整理的跳转第三方App或网页进行导航的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 子平真诠释疑笔记(六)
- 下一篇: 玩转华为ENSP模拟器系列 | 配置OS