|
|
@@ -4,6 +4,8 @@ import android.content.BroadcastReceiver;
|
|
|
import android.content.Context;
|
|
|
import android.content.Intent;
|
|
|
import android.content.IntentFilter;
|
|
|
+import android.content.pm.PackageInfo;
|
|
|
+import android.content.pm.PackageManager;
|
|
|
import android.net.Uri;
|
|
|
import android.os.Bundle;
|
|
|
import android.support.v4.content.LocalBroadcastManager;
|
|
|
@@ -13,6 +15,9 @@ import android.widget.Toast;
|
|
|
|
|
|
import com.baidu.mapapi.map.MapView;
|
|
|
import com.baidu.mapapi.model.LatLng;
|
|
|
+import com.baidu.mapapi.navi.BaiduMapAppNotSupportNaviException;
|
|
|
+import com.baidu.mapapi.navi.BaiduMapNavigation;
|
|
|
+import com.baidu.mapapi.navi.NaviParaOption;
|
|
|
import com.baidu.mapapi.search.core.SearchResult;
|
|
|
import com.baidu.mapapi.search.route.DrivingRoutePlanOption;
|
|
|
import com.baidu.mapapi.search.route.DrivingRouteResult;
|
|
|
@@ -24,6 +29,7 @@ import com.common.data.ListUtils;
|
|
|
import com.core.app.Constants;
|
|
|
import com.core.base.BaseActivity;
|
|
|
import com.core.utils.BaiduMapUtil;
|
|
|
+import com.core.utils.ToastUtil;
|
|
|
import com.lidroid.xutils.ViewUtils;
|
|
|
import com.lidroid.xutils.view.annotation.ViewInject;
|
|
|
import com.uas.applocation.UasLocationHelper;
|
|
|
@@ -32,11 +38,15 @@ import com.xzjmyk.pm.activity.util.baidu.DrivingRouteOverlay;
|
|
|
import com.xzjmyk.pm.activity.util.baidu.OnGetRoutePlanResult;
|
|
|
|
|
|
import java.io.File;
|
|
|
+import java.net.URISyntaxException;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
|
|
|
public class NavigationActivity extends BaseActivity {
|
|
|
@ViewInject(R.id.baiduMap)
|
|
|
private MapView baiduMap;
|
|
|
private LatLng toLocation;
|
|
|
+ private List<String > mapList=null;
|
|
|
|
|
|
|
|
|
private BroadcastReceiver upLocationReceiver = new BroadcastReceiver() {
|
|
|
@@ -116,8 +126,8 @@ public class NavigationActivity extends BaseActivity {
|
|
|
|
|
|
public void onGetDrivingRouteResult(DrivingRouteResult result) {
|
|
|
//驾车
|
|
|
- if (result == null || SearchResult.ERRORNO.RESULT_NOT_FOUND == result.error|| ListUtils.isEmpty(result.getRouteLines())||
|
|
|
- result.getRouteLines().get(0)==null) {
|
|
|
+ if (result == null || SearchResult.ERRORNO.RESULT_NOT_FOUND == result.error || ListUtils.isEmpty(result.getRouteLines()) ||
|
|
|
+ result.getRouteLines().get(0) == null) {
|
|
|
Toast.makeText(getApplicationContext(), "未搜索到结果", Toast.LENGTH_LONG).show();
|
|
|
return;
|
|
|
}
|
|
|
@@ -135,13 +145,14 @@ public class NavigationActivity extends BaseActivity {
|
|
|
private void userOtherMap() {
|
|
|
if (isInstallBaidu()) {
|
|
|
LogUtil.i("百度地图客户端已经安装");
|
|
|
- userBauduMap();
|
|
|
+ startNaviBaidu();
|
|
|
} else {
|
|
|
LogUtil.i("百度地图客户端没有安装");
|
|
|
ToastMessage("系统检测到本机没有安装百度地图,请安装后使用");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
private boolean isInstallBaidu() {
|
|
|
return new File("/data/data/" + "com.baidu.BaiduMap").exists();
|
|
|
}
|
|
|
@@ -150,16 +161,94 @@ public class NavigationActivity extends BaseActivity {
|
|
|
return new File("/data/data/" + "com.autonavi.minimap").exists();
|
|
|
}
|
|
|
|
|
|
- private void userBauduMap() {
|
|
|
+ //是否安装腾讯地图
|
|
|
+ public boolean isHaveTencentMap() {
|
|
|
try {
|
|
|
- Intent intent = new Intent();
|
|
|
- intent.setData(Uri.parse("baidumap://map/navi?location=" + toLocation.latitude + "," + toLocation.longitude));
|
|
|
- startActivity(intent);
|
|
|
+ if (!new File("/data/data/" + "com.tencent.map").exists()) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
} catch (Exception e) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public static boolean isAvilible(Context context, String packageName) {
|
|
|
+ //获取packagemanager
|
|
|
+ final PackageManager packageManager = context.getPackageManager();
|
|
|
+ //获取所有已安装程序的包信息
|
|
|
+ List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);
|
|
|
+ //用于存储所有已安装程序的包名
|
|
|
+ List<String> packageNames = new ArrayList<String>();
|
|
|
+ //从pinfo中将包名字逐一取出,压入pName list中
|
|
|
+ if (packageInfos != null) {
|
|
|
+ for (int i = 0; i < packageInfos.size(); i++) {
|
|
|
+ String packName = packageInfos.get(i).packageName;
|
|
|
+ packageNames.add(packName);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //判断packageNames中是否有目标程序的包名,有TRUE,没有FALSE
|
|
|
+ return packageNames.contains(packageName);
|
|
|
+ }
|
|
|
+
|
|
|
+ //开启百度导航
|
|
|
+ public void startNaviBaidu() {
|
|
|
+ //百度地图,从起点是LatLng ll_location = new LatLng("你的纬度latitude","你的经度longitude");
|
|
|
+ //终点是LatLng ll = new LatLng("你的纬度latitude","你的经度longitude");
|
|
|
+ NaviParaOption para = new NaviParaOption();
|
|
|
+ para.startPoint(UasLocationHelper.getInstance().getUASLocation().getLocation());
|
|
|
+ para.startName(UasLocationHelper.getInstance().getUASLocation().getName());
|
|
|
+ para.endPoint(toLocation);
|
|
|
+ para.endName("到这里结束");
|
|
|
+ try {
|
|
|
+ BaiduMapNavigation.openBaiduMapNavi(para, this);
|
|
|
+ } catch (BaiduMapAppNotSupportNaviException e) {
|
|
|
e.printStackTrace();
|
|
|
+ ToastUtil.showToast(ct, "您尚未安装百度地图或地图版本过低");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
+ //高德地图,起点就是定位点
|
|
|
+ // 终点是LatLng ll = new LatLng("你的纬度latitude","你的经度longitude");
|
|
|
+ public void startNaviGao() {
|
|
|
+ if (isAvilible(ct, "com.autonavi.minimap")) {
|
|
|
+ try {
|
|
|
+ //sourceApplication
|
|
|
+ Intent intent = Intent.getIntent("androidamap://navi?sourceApplication=UU互联&poiname=到这里结束&lat=" + toLocation.latitude + "&lon=" + toLocation.longitude + "&dev=0");
|
|
|
+ startActivity(intent);
|
|
|
+ } catch (URISyntaxException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ ToastUtil.showToast(ct, "您尚未安装高德地图或地图版本过低");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //谷歌地图,起点就是定位点
|
|
|
+ // 终点是LatLng ll = new LatLng("你的latitude","你的longitude");
|
|
|
+ public void startNaviGoogle() {
|
|
|
+ if (isAvilible(this, "com.google.android.apps.maps")) {
|
|
|
+ Uri gmmIntentUri = Uri.parse("google.navigation:q=" + toLocation.latitude + "," + toLocation.longitude);
|
|
|
+ Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
|
|
|
+ mapIntent.setPackage("com.google.android.apps.maps");
|
|
|
+ startActivity(mapIntent);
|
|
|
+ } else {
|
|
|
+ ToastUtil.showToast(ct, "您尚未安装谷歌地图或地图版本过低");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
+
|
|
|
+ public void openTencentMap() {
|
|
|
+ try {
|
|
|
+ String url = "qqmap://map/routeplan?type=drive&to=" + "到这里结束" + "&tocoord=" + toLocation.latitude + "," + toLocation.longitude + "&policy=2&referer=myapp";
|
|
|
+ Intent intent = new Intent("android.intent.action.VIEW", android.net.Uri.parse(url));
|
|
|
+ startActivity(intent);
|
|
|
+ } catch (Exception e) {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|