package cn.flightfeather.thirdappmodule.util;
|
|
import android.content.Context;
|
import android.content.DialogInterface;
|
import android.content.Intent;
|
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageManager;
|
import android.support.v7.app.AlertDialog;
|
import android.widget.Toast;
|
|
import com.amap.api.maps.model.LatLng;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* Created by note_ff_1602 on 2018/2/26.
|
* 开始高德导航
|
*/
|
|
public class AmapNavi {
|
private Context context;
|
|
public AmapNavi(Context context) {
|
this.context = context;
|
}
|
//开始导航功能,坐标为高德坐标
|
public void startNavi(final double lat, final double lng){
|
|
if (lat!=0&&lng!=0){
|
if (isAvilible(context,"com.autonavi.minimap")){
|
AlertDialog.Builder dialog = new AlertDialog.Builder(context);
|
dialog.setTitle("要开始导航吗");
|
dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
LatLng latlng = new LatLng(lat,lng);
|
goToGaode(latlng.latitude,latlng.longitude);
|
}
|
});
|
dialog.setNegativeButton("取消",null);
|
dialog.show();
|
|
}else Toast.makeText(context, "请安装高德地图来启用导航功能", Toast.LENGTH_SHORT).show();
|
|
|
}else {
|
Toast.makeText(context, "无定位不能导航", Toast.LENGTH_SHORT).show();
|
}
|
}
|
|
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);
|
}
|
|
|
//高德
|
private void goToGaode(double lat, double lon) {
|
|
StringBuffer stringBuffer = new StringBuffer("androidamap://route?sourceApplication=").append("amap");
|
|
stringBuffer.append("&dlat=").append(""+lat)
|
.append("&dlon=").append(""+lon)
|
.append("&dev=").append(0)
|
.append("&t=").append(0);
|
|
Intent intent = new Intent("android.intent.action.VIEW", android.net.Uri.parse(stringBuffer.toString()));
|
intent.setPackage("com.autonavi.minimap");
|
context.startActivity(intent);
|
}
|
}
|