diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6912ae7..35668a3 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -116,36 +116,6 @@ android:launchMode="standard" android:screenOrientation="portrait" /> - - - - - - - - - - - - - - - - * 路线规划活动传输点 - *

- * - * @Author: entfrm开发团队-王翔 - * @since: 2022/11/11 - */ -@Data -@Accessors -public class RoutePlanLatPoint implements Parcelable { - - /** 起点 */ - private LatLonPoint originPoint; - - /** 终点 */ - private LatLonPoint destinationPoint; - - public RoutePlanLatPoint() { - } - - public RoutePlanLatPoint(Parcel in) { - originPoint = in.readTypedObject(LatLonPoint.CREATOR); - destinationPoint = in.readTypedObject(LatLonPoint.CREATOR); - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeTypedObject(originPoint, flags); - dest.writeTypedObject(destinationPoint, flags); - } - - public static final Creator CREATOR = new Creator() { - @Override - public RoutePlanLatPoint createFromParcel(Parcel in) { - return new RoutePlanLatPoint(in); - } - - @Override - public RoutePlanLatPoint[] newArray(int size) { - return new RoutePlanLatPoint[size]; - } - }; -} diff --git a/app/src/main/java/com/kanglai/push/listener/MapGpsSensorEventListener.java b/app/src/main/java/com/kanglai/push/listener/MapGpsSensorEventListener.java deleted file mode 100644 index e373c5e..0000000 --- a/app/src/main/java/com/kanglai/push/listener/MapGpsSensorEventListener.java +++ /dev/null @@ -1,157 +0,0 @@ -package com.kanglai.push.listener; - -import android.content.Context; -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.hardware.SensorManager; -import android.view.Display; -import android.view.Surface; -import android.view.WindowManager; - -import com.amap.api.maps.AMap; -import com.amap.api.maps.CameraUpdateFactory; -import com.amap.api.maps.model.Marker; -import com.kanglai.push.ui.fragment.DemoMapFragment; - -/** - *

- * 地图gps方位旋转传感器监听 - * 参考: - * https://blog.csdn.net/bob_fly1984/article/details/80717335?spm=1001.2014.3001.5506 - * https://blog.csdn.net/liu857279611/article/details/50606484?spm=1001.2014.3001.5506 - * https://github.com/amap-demo/android-location-rotation-effect/blob/master/app/src/main/java/com/amap/location/rotation/MainActivity.java - *

- * - * @Author: entfrm开发团队-王翔 - * @since: 2022/10/31 - */ -public class MapGpsSensorEventListener implements SensorEventListener { - - /** 上次方向旋转传感器时间 */ - private long lastTime = 0; - - /** 传感器时间精度,控制旋转间隔 */ - private final int TIME_SENSOR = 100; - - /** gps位置标记 */ - private Marker mMarker; - - /** 当前活动上下文 */ - private Context mContext; - - /** 传感器管理 */ - private SensorManager mSensorManager; - - /** 传感器 */ - private Sensor magneticSensor, accelerometerSensor; - - /** 磁场传器数据 */ - private float[] gravity = new float[3]; - - /** 加速传感器数据 */ - private float[] geomagnetic= new float[3]; - - /** 手机旋转角度 */ - private float mAngle; - - /** 高德地图组件 */ - private AMap aMap; - - public MapGpsSensorEventListener(Context context) { - this.mContext = context; - // 初始化传感器 - mSensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE); - // 计算手机方位根据加速度传感器和地磁场传感器计算获取 - magneticSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD); - accelerometerSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); - } - - public void registerSensorListener() { - mSensorManager.registerListener(this, magneticSensor, SensorManager.SENSOR_DELAY_NORMAL); - mSensorManager.registerListener(this, accelerometerSensor, SensorManager.SENSOR_DELAY_NORMAL); - } - - public void unRegisterSensorListener() { - mSensorManager.unregisterListener(this); - } - - public void setGpsMarker(Marker marker) { - mMarker = marker; - } - - public void setAMap(AMap aMap) { - this.aMap = aMap; - } - - @Override - /** 当有新的传感器事件时(手机方向改变时调用)调用 */ - public void onSensorChanged(SensorEvent event) { - if (System.currentTimeMillis() - lastTime < TIME_SENSOR) return; - if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) { - geomagnetic = event.values; - } - if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { - gravity = event.values; - } - if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD || event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { - // 用来保存手机的旋转弧度 - float[] values = new float[3]; - // 被填充的旋转矩阵 - float[] r = new float[9]; - // 传入gravity和geomagnetic,通过计算它们得到旋转矩阵R - // 而第二个参数倾斜矩阵I是用于将磁场数据转换进实际的重力坐标系中的,一般默认设置为NULL即可 - SensorManager.getRotationMatrix(r, null, gravity, geomagnetic); - // 根据旋转矩阵R计算设备的方向,将结果存储在values中 - // values[0]记录着手机围绕 Z 轴的旋转弧度 - // values[1]记录着手机围绕 X 轴的旋转弧度 - // values[2]记录着手机围绕 Y 轴的旋转弧度 - SensorManager.getOrientation(r, values); - - // 地心旋转弧度转为角度 - float x = (float) Math.toDegrees(values[0]); - x += getScreenRotationOnPhone(mContext); - x %= 360.0F; - if (x > 180.0F) - x -= 360.0F; - else if (x < -180.0F) - x += 360.0F; - if (Math.abs(mAngle - x) < 3.0f) return; - mAngle = Float.isNaN(x) ? 0 : x; - x = (360 - mAngle); - if (mMarker != null) mMarker.setRotateAngle(x); - if (aMap != null && !DemoMapFragment.userMoveToLocationMark) aMap.moveCamera(CameraUpdateFactory.changeBearing(360 - mAngle)); - lastTime = System.currentTimeMillis(); - } - } - - @Override - /** 当注册传感器的精度发生变化时调用 */ - public void onAccuracyChanged(Sensor sensor, int accuracy) { - } - - /** - * 获取当前屏幕旋转角度 - * @param context 当前活动上下文 - * @return 0表示是竖屏; 90表示是左横屏; 180表示是反向竖屏; 270表示是右横屏 - */ - public static int getScreenRotationOnPhone(Context context) { - final Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); - - switch (display.getRotation()) { - case Surface.ROTATION_0: - return 0; - - case Surface.ROTATION_90: - return 90; - - case Surface.ROTATION_180: - return 180; - - case Surface.ROTATION_270: - return -90; - } - return 0; - } - -} diff --git a/app/src/main/java/com/kanglai/push/ui/activity/DriveRouteDetailActivity.java b/app/src/main/java/com/kanglai/push/ui/activity/DriveRouteDetailActivity.java deleted file mode 100644 index 3382ecd..0000000 --- a/app/src/main/java/com/kanglai/push/ui/activity/DriveRouteDetailActivity.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.kanglai.push.ui.activity; - -import android.content.Intent; -import android.os.Bundle; -import android.widget.ListView; -import android.widget.TextView; - -import com.amap.api.services.route.DrivePath; -import com.dolphin.core.base.BaseActivity; -import com.dolphin.core.util.AMapCommonUtil; -import com.kanglai.push.BR; -import com.kanglai.push.R; -import com.kanglai.push.databinding.ActivityRoutePlanDetailBinding; -import com.kanglai.push.ui.adapter.DriveListAdapter; -import com.kanglai.push.ui.vm.ToolbarViewModel; - -/** - *

- * 驾车路线详情活动 - *

- * - * @Author: entfrm开发团队-王翔 - * @since: 2022/11/11 - */ -public class DriveRouteDetailActivity extends BaseActivity { - - @Override - public int setContentView(Bundle savedInstanceState) { - return R.layout.activity_route_plan_detail; - } - - @Override - public int setVariableId() { - return BR.viewModel; - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - Intent intent = getIntent(); - if (intent == null) return; - DrivePath mDrivePath = intent.getParcelableExtra("drive_path"); - mViewModel.setTitleText("驾车路线详情"); - TextView mRouteTime = findViewById(R.id.route_time); - int distance = (int) mDrivePath.getDistance(); - int duration = (int) mDrivePath.getDuration(); - String routeDetail = AMapCommonUtil.getPlanTime(duration) + "(" + AMapCommonUtil.getPlanKilometer(distance) + ")"; - mRouteTime.setText(routeDetail); - // 配置列表视图数据 - ListView mDriveList = findViewById(R.id.route_list); - DriveListAdapter mDriveListAdapter = new DriveListAdapter(this.getApplicationContext(), mDrivePath.getSteps()); - mDriveList.setAdapter(mDriveListAdapter); - } - -} diff --git a/app/src/main/java/com/kanglai/push/ui/activity/DriveSingleRouteCalculateActivity.java b/app/src/main/java/com/kanglai/push/ui/activity/DriveSingleRouteCalculateActivity.java deleted file mode 100644 index 5af4318..0000000 --- a/app/src/main/java/com/kanglai/push/ui/activity/DriveSingleRouteCalculateActivity.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.kanglai.push.ui.activity; - -import android.content.Intent; -import android.os.Bundle; - -import com.amap.api.navi.AMapNaviViewOptions; -import com.amap.api.navi.enums.NaviType; -import com.amap.api.navi.model.AMapCalcRouteResult; -import com.amap.api.navi.model.NaviLatLng; -import com.amap.api.services.core.LatLonPoint; -import com.dolphin.core.amap.NaviBaseActivity; -import com.kanglai.push.R; -import com.kanglai.push.constant.CommonConstant; -import com.kanglai.push.entity.RoutePlanLatPoint; - -import java.util.ArrayList; -import java.util.List; - -/** - *

- * 驾车导航单路线计算活动 - *

- * - * @Author: wangxiang4 - * @since: 2023/2/8 - */ -public class DriveSingleRouteCalculateActivity extends NaviBaseActivity { - - private LatLonPoint mOriginPoint; - private LatLonPoint mDestinationPoint; - // 起点 - private List sList = new ArrayList(); - // 终点 - private List eList = new ArrayList(); - // 途经点 - private List mWayPointList = new ArrayList(); - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_basic_navi); - // 获取传递参数 - RoutePlanLatPoint routePlanLatPoint = getIntent().getParcelableExtra(CommonConstant.ROUTE_PLAN_LAT_POINT); - mOriginPoint = routePlanLatPoint.getOriginPoint(); - mDestinationPoint = routePlanLatPoint.getDestinationPoint(); - mAMapNaviView = findViewById(R.id.navi_view); - mAMapNaviView.onCreate(savedInstanceState); - mAMapNaviView.setAMapNaviViewListener(this); - AMapNaviViewOptions options = new AMapNaviViewOptions(); - options.setTilt(0); - mAMapNaviView.setViewOptions(options); - - setResult(RESULT_CANCELED, new Intent().putExtra(RoutePlanActivity.DEMO_RESULT_LAUNCHER_RESULT_KEY, "驾车导航失败!")); - } - - @Override - public void onInitNaviSuccess() { - super.onInitNaviSuccess(); - sList.add(new NaviLatLng(mOriginPoint.getLatitude(), mOriginPoint.getLongitude())); - eList.add(new NaviLatLng(mDestinationPoint .getLatitude(), mDestinationPoint.getLongitude())); - - /** - * 方法: int strategy=mAMapNavi.strategyConvert(congestion, avoidhightspeed, cost, hightspeed, multipleroute); 参数: - * - * @congestion 躲避拥堵 - * @avoidhightspeed 不走高速 - * @cost 避免收费 - * @hightspeed 高速优先 - * @multipleroute 多路径 - * - * 说明: 以上参数都是boolean类型,其中multipleroute参数表示是否多条路线,如果为true则此策略会算出多条路线。 - * 注意: 不走高速与高速优先不能同时为true 高速优先与避免收费不能同时为true - */ - int strategy = 0; - try { - // 再次强调,最后一个参数为true时代表多路径,否则代表单路径 - strategy = mAMapNavi.strategyConvert(true, false, false, false, false); - } catch (Exception e) { - e.printStackTrace(); - } - // mAMapNavi.calculateDriveRoute(sList, eList, mWayPointList, strategy); - mAMapNavi.calculateDriveRoute(sList, eList, null, strategy); - - // 设置回调结果 - setResult(RESULT_OK, new Intent().putExtra(RoutePlanActivity.DEMO_RESULT_LAUNCHER_RESULT_KEY, "驾车导航成功!")); - } - - @Override - public void onCalculateRouteSuccess(AMapCalcRouteResult aMapCalcRouteResult) { - super.onCalculateRouteSuccess(aMapCalcRouteResult); - mAMapNavi.startNavi(NaviType.EMULATOR); - } - -} diff --git a/app/src/main/java/com/kanglai/push/ui/activity/PushTypeActivity.java b/app/src/main/java/com/kanglai/push/ui/activity/PushTypeActivity.java index a0f012b..6b96f79 100644 --- a/app/src/main/java/com/kanglai/push/ui/activity/PushTypeActivity.java +++ b/app/src/main/java/com/kanglai/push/ui/activity/PushTypeActivity.java @@ -1,7 +1,5 @@ package com.kanglai.push.ui.activity; -import android.app.Dialog; -import android.content.DialogInterface; import android.os.Bundle; import android.text.Editable; import android.text.InputFilter; @@ -13,7 +11,6 @@ import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; -import androidx.core.content.ContextCompat; import androidx.databinding.library.baseAdapters.BR; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -22,8 +19,6 @@ import com.blankj.utilcode.util.CacheDiskUtils; import com.blankj.utilcode.util.CollectionUtils; import com.blankj.utilcode.util.LogUtils; import com.dolphin.core.base.BaseActivity; -import com.dolphin.core.util.ToastUtil; -import com.dolphin.core.widget.DefaultItemDecoration; import com.kanglai.push.R; import com.kanglai.push.constant.CacheConstant; import com.kanglai.push.databinding.ActivityPushTypeBinding; diff --git a/app/src/main/java/com/kanglai/push/ui/activity/RideRouteCalculateActivity.java b/app/src/main/java/com/kanglai/push/ui/activity/RideRouteCalculateActivity.java deleted file mode 100644 index 36bc892..0000000 --- a/app/src/main/java/com/kanglai/push/ui/activity/RideRouteCalculateActivity.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.kanglai.push.ui.activity; - -import android.content.Intent; -import android.os.Bundle; - -import com.amap.api.navi.enums.NaviType; -import com.amap.api.navi.model.AMapCalcRouteResult; -import com.amap.api.navi.model.NaviLatLng; -import com.amap.api.services.core.LatLonPoint; -import com.dolphin.core.amap.NaviBaseActivity; -import com.kanglai.push.R; -import com.kanglai.push.constant.CommonConstant; -import com.kanglai.push.entity.RoutePlanLatPoint; - -/** - *

- * 骑行导航路线计算活动 - *

- * - * @Author: wangxiang4 - * @since: 2023/2/8 - */ -public class RideRouteCalculateActivity extends NaviBaseActivity { - - private LatLonPoint mOriginPoint; - private LatLonPoint mDestinationPoint; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_basic_navi); - // 获取传递参数 - RoutePlanLatPoint routePlanLatPoint = getIntent().getParcelableExtra(CommonConstant.ROUTE_PLAN_LAT_POINT); - mOriginPoint = routePlanLatPoint.getOriginPoint(); - mDestinationPoint = routePlanLatPoint.getDestinationPoint(); - mAMapNaviView = findViewById(R.id.navi_view); - mAMapNaviView.onCreate(savedInstanceState); - mAMapNaviView.setAMapNaviViewListener(this); - setResult(RESULT_CANCELED, new Intent().putExtra(RoutePlanActivity.DEMO_RESULT_LAUNCHER_RESULT_KEY, "骑行导航失败!")); - } - - @Override - public void onInitNaviSuccess() { - super.onInitNaviSuccess(); - mAMapNavi.calculateRideRoute(new NaviLatLng(mOriginPoint.getLatitude(), mOriginPoint.getLongitude()), new NaviLatLng(mDestinationPoint.getLatitude(), mDestinationPoint.getLongitude())); - setResult(RESULT_OK, new Intent().putExtra(RoutePlanActivity.DEMO_RESULT_LAUNCHER_RESULT_KEY, "骑行导航成功!")); - } - - @Override - public void onCalculateRouteSuccess(AMapCalcRouteResult aMapCalcRouteResult) { - super.onCalculateRouteSuccess(aMapCalcRouteResult); - mAMapNavi.startNavi(NaviType.EMULATOR); - } -} diff --git a/app/src/main/java/com/kanglai/push/ui/activity/RideRouteDetailActivity.java b/app/src/main/java/com/kanglai/push/ui/activity/RideRouteDetailActivity.java deleted file mode 100644 index d88808d..0000000 --- a/app/src/main/java/com/kanglai/push/ui/activity/RideRouteDetailActivity.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.kanglai.push.ui.activity; - -import android.content.Intent; -import android.os.Bundle; -import android.widget.ListView; -import android.widget.TextView; - -import com.amap.api.services.route.RidePath; -import com.dolphin.core.base.BaseActivity; -import com.dolphin.core.util.AMapCommonUtil; -import com.kanglai.push.BR; -import com.kanglai.push.R; -import com.kanglai.push.databinding.ActivityRoutePlanDetailBinding; -import com.kanglai.push.ui.adapter.RideListAdapter; -import com.kanglai.push.ui.vm.ToolbarViewModel; - -/** - *

- * 骑行路线详情活动 - *

- * - * @Author: entfrm开发团队-王翔 - * @since: 2022/11/11 - */ -public class RideRouteDetailActivity extends BaseActivity { - - @Override - public int setContentView(Bundle savedInstanceState) { - return R.layout.activity_route_plan_detail; - } - - @Override - public int setVariableId() { - return BR.viewModel; - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - Intent intent = getIntent(); - if (intent == null) return; - RidePath mRidePath = intent.getParcelableExtra("ride_path"); - mViewModel.setTitleText("骑行路线详情"); - TextView mRouteTime = findViewById(R.id.route_time); - int distance = (int) mRidePath.getDistance(); - int duration = (int) mRidePath.getDuration(); - String routeDetail = AMapCommonUtil.getPlanTime(duration) + "(" + AMapCommonUtil.getPlanKilometer(distance) + ")"; - mRouteTime.setText(routeDetail); - // 配置列表视图数据 - ListView mDriveList = findViewById(R.id.route_list); - RideListAdapter mRideListAdapter = new RideListAdapter(this.getApplicationContext(), mRidePath.getSteps()); - mDriveList.setAdapter(mRideListAdapter); - } - - -} diff --git a/app/src/main/java/com/kanglai/push/ui/activity/RoutePlanActivity.java b/app/src/main/java/com/kanglai/push/ui/activity/RoutePlanActivity.java deleted file mode 100644 index a9b5cac..0000000 --- a/app/src/main/java/com/kanglai/push/ui/activity/RoutePlanActivity.java +++ /dev/null @@ -1,345 +0,0 @@ -package com.kanglai.push.ui.activity; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; -import android.widget.Button; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.activity.result.ActivityResultLauncher; -import androidx.activity.result.contract.ActivityResultContract; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.afollestad.materialdialogs.MaterialDialog; -import com.amap.api.maps.AMap; -import com.amap.api.maps.CameraUpdateFactory; -import com.amap.api.maps.MapView; -import com.amap.api.maps.model.CameraPosition; -import com.amap.api.maps.model.LatLng; -import com.amap.api.services.core.AMapException; -import com.amap.api.services.core.LatLonPoint; -import com.amap.api.services.route.BusRouteResult; -import com.amap.api.services.route.DrivePath; -import com.amap.api.services.route.DriveRouteResult; -import com.amap.api.services.route.RidePath; -import com.amap.api.services.route.RideRouteResult; -import com.amap.api.services.route.RouteSearch; -import com.amap.api.services.route.RouteSearch.DriveRouteQuery; -import com.amap.api.services.route.RouteSearch.OnRouteSearchListener; -import com.amap.api.services.route.RouteSearch.RideRouteQuery; -import com.amap.api.services.route.WalkRouteResult; -import com.dolphin.core.amap.overlay.DrivingRouteOverlay; -import com.dolphin.core.amap.overlay.RideRouteOverlay; -import com.dolphin.core.base.BaseActivity; -import com.dolphin.core.util.AMapCommonUtil; -import com.dolphin.core.util.ToastUtil; -import com.kanglai.push.BR; -import com.kanglai.push.R; -import com.kanglai.push.constant.CommonConstant; -import com.kanglai.push.databinding.ActivityRoutePlanBinding; -import com.kanglai.push.entity.RoutePlanLatPoint; -import com.kanglai.push.ui.vm.RoutePlanViewModel; - -/** - *

- * 导航路线规划 - *

- * - * @Author: entfrm开发团队-王翔 - * @since: 2022/11/9 - */ -public class RoutePlanActivity extends BaseActivity implements OnRouteSearchListener { - - - private AMap aMap; - private MapView mapView; - private RouteSearch mRouteSearch; - private final int ROUTE_TYPE_DRIVE = 1; - private final int ROUTE_TYPE_RIDE = 2; - - private Button mBtnStartNavi; - private RelativeLayout mRouteDriveLayout; - private TextView mRouteTime; - private ImageView mDrive; - private ImageView mRide; - private LinearLayout mRouteDetail; - private LatLonPoint mOriginPoint; - private LatLonPoint mDestinationPoint; - private MaterialDialog mMaterialDialog; - - private ActivityResultLauncher driveNaviLauncherResult; - private ActivityResultLauncher rideNaviLauncherResult; - - public static final String DEMO_RESULT_LAUNCHER_RESULT_KEY = "DEMO_RESULT_LAUNCHER_RESULT_KEY"; - interface DefaultConfig { - - // 默认中心点长沙望城区域砂之船奥莱 - double mapCentreLat = 28.288623; - double mapCentreLng = 112.919043; - // 地图缩放级别 - float zoom = 17f; - // 3D地图倾斜度 - float tilt = 55f; - // 正视前方可视区域方向 - float bearing = 300; - - } - - @Override - public int setContentView(Bundle savedInstanceState) { - return R.layout.activity_route_plan; - } - - @Override - public int setVariableId() { - return BR.viewModel; - } - - public RoutePlanActivity getActivityContext(){ - return this; - } - - @Override - protected void onCreate(Bundle bundle) { - super.onCreate(bundle); - // 获取传递参数 - RoutePlanLatPoint routePlanLatPoint = getIntent().getParcelableExtra(CommonConstant.ROUTE_PLAN_LAT_POINT); - mOriginPoint = routePlanLatPoint.getOriginPoint(); - mDestinationPoint = routePlanLatPoint.getDestinationPoint(); - // 初始化高德地图 - mapView = findViewById(R.id.route_map); - mapView.onCreate(bundle); - aMap = mapView.getMap(); - aMap.getUiSettings().setLogoBottomMargin(-100); - aMap.getUiSettings().setZoomControlsEnabled(false); - try { - mRouteSearch = new RouteSearch(this); - mRouteSearch.setRouteSearchListener(this); - } catch (AMapException e) { - e.printStackTrace(); - } - LatLng latLng = new LatLng(DefaultConfig.mapCentreLat, DefaultConfig.mapCentreLng); - // 首次定位移动到地图中心点并修改一些默认属性 - aMap.moveCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition(latLng, DefaultConfig.zoom, DefaultConfig.tilt, DefaultConfig.bearing))); - mBtnStartNavi = findViewById(R.id.btn_start_navi); - mRouteDriveLayout = findViewById(R.id.layout_route_drive); - mRouteTime = findViewById(R.id.route_time); - mRouteDetail = findViewById(R.id.route_detail); - mDrive = findViewById(R.id.route_drive); - mRide = findViewById(R.id.route_ride); - mRouteDriveLayout.performClick(); - - // 注册驾车导航活动结果 - driveNaviLauncherResult = registerForActivityResult(new ActivityResultContract() { - @Override - public String parseResult(int resultCode, @Nullable Intent intent) { - if (intent == null) { - return null; - } - if (resultCode == RESULT_OK) { - return intent.getStringExtra(DEMO_RESULT_LAUNCHER_RESULT_KEY); - } else { - return intent.getStringExtra(DEMO_RESULT_LAUNCHER_RESULT_KEY) + "ð"; - } - } - @Override - public Intent createIntent(@NonNull Context context, RoutePlanLatPoint routePlanLatPoint) { - Intent intent = new Intent(getActivityContext(), DriveSingleRouteCalculateActivity.class); - intent.putExtra(CommonConstant.ROUTE_PLAN_LAT_POINT, routePlanLatPoint); - return intent; - } - }, result -> ToastUtil.show(result)); - - // 注册骑行导航活动结果 - rideNaviLauncherResult = registerForActivityResult(new ActivityResultContract() { - @Override - public String parseResult(int resultCode, @Nullable Intent intent) { - if (intent == null) { - return null; - } - if (resultCode == RESULT_OK) { - return intent.getStringExtra(DEMO_RESULT_LAUNCHER_RESULT_KEY); - } else { - return intent.getStringExtra(DEMO_RESULT_LAUNCHER_RESULT_KEY) + "ð"; - } - } - @Override - public Intent createIntent(@NonNull Context context, RoutePlanLatPoint routePlanLatPoint) { - Intent intent = new Intent(getActivityContext(), RideRouteCalculateActivity.class); - intent.putExtra(CommonConstant.ROUTE_PLAN_LAT_POINT, routePlanLatPoint); - return intent; - } - }, result -> ToastUtil.show(result)); - } - - public void onDriveClick(View view) { - searchRouteResult(ROUTE_TYPE_DRIVE, RouteSearch.DRIVING_SINGLE_DEFAULT); - mDrive.setImageResource(R.drawable.icon_route_drive_select); - mRide.setImageResource(R.drawable.icon_route_ride_normal); - } - - public void onRideClick(View view) { - searchRouteResult(ROUTE_TYPE_RIDE, RouteSearch.DRIVING_SINGLE_DEFAULT); - mDrive.setImageResource(R.drawable.icon_route_drive_normal); - mRide.setImageResource(R.drawable.icon_route_ride_select); - } - - public void searchRouteResult(int routeType, int mode) { - if (mOriginPoint == null) { - ToastUtil.show("起点未设置"); - return; - } - if (mDestinationPoint == null) { - ToastUtil.show("终点未设置"); - return; - } - showProgressDialog(); - final RouteSearch.FromAndTo fromAndTo = new RouteSearch.FromAndTo(mOriginPoint, mDestinationPoint); - if (routeType == ROUTE_TYPE_DRIVE) { - DriveRouteQuery query = new DriveRouteQuery(fromAndTo, mode, null, null, ""); - mRouteSearch.calculateDriveRouteAsyn(query); - } else if (routeType == ROUTE_TYPE_RIDE) { - RideRouteQuery query = new RideRouteQuery(fromAndTo, mode); - mRouteSearch.calculateRideRouteAsyn(query); - } - } - - @Override - public void onBusRouteSearched(BusRouteResult result, int errorCode) {} - - @Override - public void onDriveRouteSearched(DriveRouteResult result, int errorCode) { - closeProgressDialog(); - aMap.clear(); - if (errorCode != AMapException.CODE_AMAP_SUCCESS) { - ToastUtil.showAmapError(errorCode); - return; - } - if (result == null && result.getPaths() == null) { - ToastUtil.show("对不起,没有搜索到相关数据!"); - return; - } - if (result.getPaths().size() > 0) { - final DrivePath drivePath = result.getPaths().get(0); - if (drivePath == null) return; - DrivingRouteOverlay drivingRouteOverlay = new DrivingRouteOverlay( - this, - aMap, - drivePath, - result.getStartPos(), - result.getTargetPos(), - null - ); - drivingRouteOverlay.removeFromMap(); - drivingRouteOverlay.drawDrivingRoute(); - drivingRouteOverlay.zoomToRouteBounds(); - - int distance = (int) drivePath.getDistance(); - int duration = (int) drivePath.getDuration(); - - String routeDetail = AMapCommonUtil.getPlanTime(duration) + "(" + AMapCommonUtil.getPlanKilometer(distance) + ")"; - mRouteTime.setText(routeDetail); - mRouteDetail.setOnClickListener(view -> { - Intent intent = new Intent(this, DriveRouteDetailActivity.class); - intent.putExtra("drive_path", drivePath); - startActivity(intent); - }); - mBtnStartNavi.setOnClickListener(view -> - driveNaviLauncherResult.launch(new RoutePlanLatPoint().setOriginPoint(mOriginPoint).setDestinationPoint(mDestinationPoint))); - } - } - - @Override - public void onRideRouteSearched(RideRouteResult result, int errorCode) { - closeProgressDialog(); - aMap.clear(); - if (errorCode != AMapException.CODE_AMAP_SUCCESS) { - ToastUtil.showAmapError(errorCode); - return; - } - if (result == null && result.getPaths() == null) { - ToastUtil.show("对不起,没有搜索到相关数据!"); - return; - } - if (result.getPaths().size() > 0) { - final RidePath ridePath = result.getPaths().get(0); - if (ridePath == null) return; - RideRouteOverlay rideRouteOverlay = new RideRouteOverlay( - this, - aMap, - ridePath, - result.getStartPos(), - result.getTargetPos() - ); - rideRouteOverlay.removeFromMap(); - rideRouteOverlay.drawDrivingRoute(); - rideRouteOverlay.zoomToRouteBounds(); - - int distance = (int) ridePath.getDistance(); - int duration = (int) ridePath.getDuration(); - - String routeDetail = AMapCommonUtil.getPlanTime(duration) + "(" + AMapCommonUtil.getPlanKilometer(distance) + ")"; - mRouteTime.setText(routeDetail); - mRouteDetail.setOnClickListener(view -> { - Intent intent = new Intent(this, RideRouteDetailActivity.class); - intent.putExtra("ride_path", ridePath); - startActivity(intent); - }); - mBtnStartNavi.setOnClickListener(view -> - rideNaviLauncherResult.launch(new RoutePlanLatPoint().setOriginPoint(mOriginPoint).setDestinationPoint(mDestinationPoint))); - } - } - - @Override - public void onWalkRouteSearched(WalkRouteResult result, int errorCode) {} - - @Override - protected void onResume() { - super.onResume(); - mapView.onResume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.onPause(); - } - - @Override - protected void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - mapView.onSaveInstanceState(outState); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.onDestroy(); - } - - private void showProgressDialog() { - if (mMaterialDialog == null) { - mMaterialDialog= new MaterialDialog.Builder(this) - .progress(true, 0) - .progressIndeterminateStyle(true) - .canceledOnTouchOutside(false) - .backgroundColorRes(R.color.white) - .keyListener((dialog, keyCode, event) -> false).build(); - } - mMaterialDialog = mMaterialDialog.getBuilder().title("正在搜索").build(); - mMaterialDialog.show(); - } - - private void closeProgressDialog() { - if (mMaterialDialog != null) { - mMaterialDialog.dismiss(); - } - } - -} - diff --git a/app/src/main/java/com/kanglai/push/ui/activity/SplashActivity.java b/app/src/main/java/com/kanglai/push/ui/activity/SplashActivity.java index f1cc6d9..cb0c63a 100644 --- a/app/src/main/java/com/kanglai/push/ui/activity/SplashActivity.java +++ b/app/src/main/java/com/kanglai/push/ui/activity/SplashActivity.java @@ -10,7 +10,6 @@ import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.style.ForegroundColorSpan; -import com.amap.api.maps.MapsInitializer; import com.kanglai.push.R; import com.kanglai.push.constant.CacheConstant; import com.tencent.mmkv.MMKV; @@ -42,7 +41,6 @@ public class SplashActivity extends UmengSplashMessageActivity { /** 软件隐私协议 */ private void softwarePrivacyAgreement() { - MapsInitializer.updatePrivacyShow(getApplicationContext(), true, true); SpannableStringBuilder spannable = new SpannableStringBuilder(getResources().getString(R.string.privacy_agreement)); spannable.setSpan(new ForegroundColorSpan(Color.BLUE), 65, 69, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); spannable.setSpan(new ForegroundColorSpan(Color.RED), 133, 137, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); @@ -50,7 +48,6 @@ public class SplashActivity extends UmengSplashMessageActivity { .setTitle("隐私政策") .setMessage(spannable) .setPositiveButton("同意", (dialogInterface, listener) -> { - MapsInitializer.updatePrivacyAgree(getApplicationContext(),true); MMKV.defaultMMKV().putInt(CacheConstant.SOFTWARE_PRIVACY_AGREEMENT_AUTH, 0); // 友盟移动统计,账号统计隐私协议 UMConfigure.submitPolicyGrantResult(getApplicationContext(), true); @@ -59,9 +56,7 @@ public class SplashActivity extends UmengSplashMessageActivity { finish(); }) .setNegativeButton("不同意", (dialogInterface, listener) -> { - MapsInitializer.updatePrivacyAgree(getApplicationContext(),false); // 友盟移动统计,账号统计隐私协议 - UMConfigure.submitPolicyGrantResult(getApplicationContext(), false); // 不同意隐私协议,退出app Process.killProcess(Process.myPid()); diff --git a/app/src/main/java/com/kanglai/push/ui/adapter/DriveListAdapter.java b/app/src/main/java/com/kanglai/push/ui/adapter/DriveListAdapter.java deleted file mode 100644 index e0cfc4d..0000000 --- a/app/src/main/java/com/kanglai/push/ui/adapter/DriveListAdapter.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.kanglai.push.ui.adapter; - -import android.content.Context; -import android.view.View; -import android.view.ViewGroup; -import android.widget.BaseAdapter; -import android.widget.ImageView; -import android.widget.TextView; - -import com.amap.api.services.route.DriveStep; -import com.kanglai.push.R; -import com.dolphin.core.util.AMapCommonUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - *

- * 驾车表格数据适配器 - *

- * - * @Author: entfrm开发团队-王翔 - * @since: 2022/11/11 - */ -public class DriveListAdapter extends BaseAdapter { - - private Context mContext; - private List mItemList = new ArrayList(); - - public DriveListAdapter(Context context, List list) { - this.mContext = context; - mItemList.add(new DriveStep()); - for (DriveStep driveStep : list) { - mItemList.add(driveStep); - } - mItemList.add(new DriveStep()); - } - - @Override - public int getCount() { - return mItemList.size(); - } - - @Override - public Object getItem(int position) { - return mItemList.get(position); - } - - @Override - public long getItemId(int position) { - return position; - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - ViewHolder holder; - if (convertView == null) { - holder = new ViewHolder(); - convertView = View.inflate(mContext, R.layout.item_route_plan, null); - holder.driveDirIcon = convertView.findViewById(R.id.route_dir_icon); - holder.driveLineName = convertView.findViewById(R.id.route_line_name); - holder.driveDirUp = convertView.findViewById(R.id.route_dir_icon_up); - holder.driveDirDown = convertView.findViewById(R.id.route_dir_icon_down); - holder.splitLine = convertView.findViewById(R.id.route_split_line); - convertView.setTag(holder); - } else { - holder = (ViewHolder) convertView.getTag(); - } - final DriveStep item = mItemList.get(position); - if (position == 0) { - holder.driveDirIcon.setImageResource(R.drawable.icon_orgin); - holder.driveLineName.setText("出发"); - holder.driveDirUp.setVisibility(View.GONE); - holder.driveDirDown.setVisibility(View.VISIBLE); - holder.splitLine.setVisibility(View.GONE); - return convertView; - } else if (position == mItemList.size() - 1) { - holder.driveDirIcon.setImageResource(R.drawable.icon_destination); - holder.driveLineName.setText("到达终点"); - holder.driveDirUp.setVisibility(View.VISIBLE); - holder.driveDirDown.setVisibility(View.GONE); - holder.splitLine.setVisibility(View.VISIBLE); - return convertView; - } else { - String actionName = item.getAction(); - int resID = AMapCommonUtil.getDrivingActionResource(actionName); - holder.driveDirIcon.setImageResource(resID); - holder.driveLineName.setText(item.getInstruction()); - holder.driveDirUp.setVisibility(View.VISIBLE); - holder.driveDirDown.setVisibility(View.VISIBLE); - holder.splitLine.setVisibility(View.VISIBLE); - return convertView; - } - - } - - private class ViewHolder { - TextView driveLineName; - ImageView driveDirIcon; - ImageView driveDirUp; - ImageView driveDirDown; - ImageView splitLine; - } - -} diff --git a/app/src/main/java/com/kanglai/push/ui/adapter/RideListAdapter.java b/app/src/main/java/com/kanglai/push/ui/adapter/RideListAdapter.java deleted file mode 100644 index 6964c7a..0000000 --- a/app/src/main/java/com/kanglai/push/ui/adapter/RideListAdapter.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.kanglai.push.ui.adapter; - -import android.content.Context; -import android.view.View; -import android.view.ViewGroup; -import android.widget.BaseAdapter; -import android.widget.ImageView; -import android.widget.TextView; - -import com.amap.api.services.route.RideStep; -import com.kanglai.push.R; -import com.dolphin.core.util.AMapCommonUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - *

- * 骑行表格数据适配器 - *

- * - * @Author: entfrm开发团队-王翔 - * @since: 2022/11/11 - */ -public class RideListAdapter extends BaseAdapter { - - private Context mContext; - private List mItemList = new ArrayList(); - - public RideListAdapter(Context context, List list) { - this.mContext = context; - mItemList.add(new RideStep()); - for (RideStep rideStep : list) { - mItemList.add(rideStep); - } - mItemList.add(new RideStep()); - } - - @Override - public int getCount() { - return mItemList.size(); - } - - @Override - public Object getItem(int position) { - return mItemList.get(position); - } - - @Override - public long getItemId(int position) { - return position; - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - ViewHolder holder; - if (convertView == null) { - holder = new ViewHolder(); - convertView = View.inflate(mContext, R.layout.item_route_plan, null); - holder.lineName = convertView.findViewById(R.id.route_line_name); - holder.dirIcon = convertView.findViewById(R.id.route_dir_icon); - holder.dirUp = convertView.findViewById(R.id.route_dir_icon_up); - holder.dirDown = convertView.findViewById(R.id.route_dir_icon_down); - holder.splitLine = convertView.findViewById(R.id.route_split_line); - convertView.setTag(holder); - } else { - holder = (ViewHolder) convertView.getTag(); - } - final RideStep item = mItemList.get(position); - if (position == 0) { - holder.dirIcon.setImageResource(R.drawable.icon_orgin); - holder.lineName.setText("出发"); - holder.dirUp.setVisibility(View.INVISIBLE); - holder.dirDown.setVisibility(View.VISIBLE); - holder.splitLine.setVisibility(View.INVISIBLE); - return convertView; - } else if (position == mItemList.size() - 1) { - holder.dirIcon.setImageResource(R.drawable.icon_destination); - holder.lineName.setText("到达终点"); - holder.dirUp.setVisibility(View.VISIBLE); - holder.dirDown.setVisibility(View.INVISIBLE); - return convertView; - } else { - holder.splitLine.setVisibility(View.VISIBLE); - holder.dirUp.setVisibility(View.VISIBLE); - holder.dirDown.setVisibility(View.VISIBLE); - String actionName = item.getAction(); - int resID = AMapCommonUtil.getWalkActionResource(actionName); - holder.dirIcon.setImageResource(resID); - holder.lineName.setText(item.getInstruction()); - return convertView; - } - } - - private class ViewHolder { - TextView lineName; - ImageView dirIcon; - ImageView dirUp; - ImageView dirDown; - ImageView splitLine; - } - -} diff --git a/app/src/main/java/com/kanglai/push/ui/fragment/DemoMapFragment.java b/app/src/main/java/com/kanglai/push/ui/fragment/DemoMapFragment.java deleted file mode 100644 index 40b654d..0000000 --- a/app/src/main/java/com/kanglai/push/ui/fragment/DemoMapFragment.java +++ /dev/null @@ -1,360 +0,0 @@ -package com.kanglai.push.ui.fragment; - -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.view.ViewGroup; -import android.view.animation.LinearInterpolator; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.amap.api.location.AMapLocationClient; -import com.amap.api.location.AMapLocationListener; -import com.amap.api.location.AMapLocationQualityReport; -import com.amap.api.maps.AMap; -import com.amap.api.maps.CameraUpdateFactory; -import com.amap.api.maps.LocationSource; -import com.amap.api.maps.MapView; -import com.amap.api.maps.model.BitmapDescriptorFactory; -import com.amap.api.maps.model.CameraPosition; -import com.amap.api.maps.model.LatLng; -import com.amap.api.maps.model.Marker; -import com.amap.api.maps.model.MarkerOptions; -import com.amap.api.maps.model.animation.Animation; -import com.amap.api.maps.model.animation.ScaleAnimation; -import com.amap.api.services.core.AMapException; -import com.amap.api.services.core.LatLonPoint; -import com.amap.api.services.route.BusRouteResult; -import com.amap.api.services.route.DrivePath; -import com.amap.api.services.route.DriveRouteResult; -import com.amap.api.services.route.RideRouteResult; -import com.amap.api.services.route.RouteSearch; -import com.amap.api.services.route.WalkRouteResult; -import com.blankj.utilcode.util.CollectionUtils; -import com.blankj.utilcode.util.LogUtils; -import com.blankj.utilcode.util.ObjectUtils; -import com.dolphin.core.amap.LocationRequest; -import com.dolphin.core.amap.overlay.DrivingRouteOverlay; -import com.dolphin.core.base.BaseFragment; -import com.dolphin.core.util.PermissionUtil; -import com.dolphin.core.util.ToastUtil; -import com.kanglai.push.BR; -import com.kanglai.push.R; -import com.kanglai.push.databinding.FragmentMapBinding; -import com.kanglai.push.listener.MapGpsSensorEventListener; -import com.kanglai.push.ui.vm.MapViewModel; - -import java.util.List; - -/** - *

- * 高德地图 - *

- * - * @Author: entfrm开发团队-王翔 - * @Date: 2022/7/15 - */ -public class DemoMapFragment extends BaseFragment implements LocationSource, AMap.OnMapTouchListener, RouteSearch.OnRouteSearchListener { - - /** 高德地图组件 */ - private AMap aMap; - - /** 高德地图ui视图 */ - private MapView mapView; - - /** LBS定位请求 */ - private LocationRequest locationRequest; - - /** 当前位置gps标记 */ - private Marker locationMarker; - - /** 用户手动移动地图标记 */ - public static boolean userMoveToLocationMark = true; - - /** 地图旋转gps方向传感监听 */ - private MapGpsSensorEventListener mapGpsSensorEventListener; - - /** 路线搜索 */ - private RouteSearch mRouteSearch; - - /** 中间途径点 */ - private List throughPoints; - - /** 默认地图配置 */ - interface DefaultConfig { - - // 默认中心点长沙望城区域砂之船奥莱 - double mapCentreLat = 28.288623; - double mapCentreLng = 112.919043; - // 地图缩放级别 - float zoom = 17f; - // 3D地图倾斜度 - float tilt = 55f; - // 正视前方可视区域方向 - float bearing = 300; - - } - - @Override - public int setContentView(LayoutInflater inflater, @Nullable ViewGroup parentContainer, @Nullable Bundle savedInstanceState) { - return R.layout.fragment_map; - } - - @Override - public int setVariableId() { - return BR.viewModel; - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - locationRequest = new LocationRequest(getActivity().getClass()); - mapGpsSensorEventListener = new MapGpsSensorEventListener(getActivity()); - locationRequest.setLocationListen(locationListener); - singleAMapLocationClient(); - } - - AMapLocationListener locationListener = location -> { - if (null != location && aMap != null && location.getErrorCode() == 0) { - LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude()); - if (locationMarker == null) { - locationMarker = aMap.addMarker(new MarkerOptions().position(latLng) - .icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_map_gps)) - .anchor(0.5f, 0.5f)); - mapGpsSensorEventListener.setGpsMarker(locationMarker); - mapGpsSensorEventListener.setAMap(aMap); - } else if (userMoveToLocationMark) { - locationMarker.setPosition(latLng); - } else { - locationMarker.setPosition(latLng); - // 地图画布动画移动的时间,最好不要比定位间隔长,如果定位间隔2000ms动画移动时间最好小于2000ms,可以使用1000ms - // 如果超过了,需要在myCancelCallback中进行处理被打断的情况 - aMap.animateCamera(CameraUpdateFactory.changeLatLng(latLng), 1000, new AMap.CancelableCallback() { - @Override - public void onFinish() { - locationMarker.setPosition(latLng); - } - @Override - public void onCancel() { - locationMarker.setPosition(latLng); - } - }); - } - } else { - ToastUtil.showAmapError(location.getErrorCode()); - } - }; - - @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - mapView = getView().findViewById(R.id.amap); - mapView.onCreate(savedInstanceState); - aMap = mapView.getMap(); - aMap.getUiSettings().setLogoBottomMargin(-100); - // 设置高德地图ui交互 - aMap.getUiSettings().setMyLocationButtonEnabled(true); - // 打开定位图层 - aMap.setMyLocationEnabled(true); - // 自定义地图模式 - aMap.setLocationSource(this); - aMap.setOnMapTouchListener(this); - // 设置地图默认中心点 - LatLng latLng = new LatLng(DefaultConfig.mapCentreLat, DefaultConfig.mapCentreLng); - // 首次定位移动到地图中心点并修改一些默认属性 - aMap.moveCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition(latLng, DefaultConfig.zoom, DefaultConfig.tilt, DefaultConfig.bearing))); - mapGpsSensorEventListener.registerSensorListener(); - locationRequest.start(); - try { - mRouteSearch = new RouteSearch(getActivity()); - mRouteSearch.setRouteSearchListener(this); - } catch (AMapException e) { - e.printStackTrace(); - } - } - - class PointData { - String id; - String label; - Double mapLng; - Double mapLat; - public PointData(String id, String label, Double mapLng, Double mapLat) { - this.id = id; - this.label = label; - this.mapLng = mapLng; - this.mapLat = mapLat; - } - } - - List carPointData = CollectionUtils.newArrayList( - new PointData("001","小黄车", 112.918119, 28.282891), - new PointData("002","小绿车", 112.918919, 28.282991), - new PointData("003","小红车", 112.918019, 28.283991) - ); - - List gasStationPointData = CollectionUtils.newArrayList( - new PointData("001","地沟油加油站", 112.919043, 28.288623), - new PointData("002","一路平安加油站", 112.919165, 28.289924), - new PointData("003","一把火加油站", 112.919965, 28.289924) - ); - - @Override - public void onStart() { - super.onStart(); - try { - carPointData.forEach(item -> { - if(ObjectUtils.isNotEmpty(item.mapLat) && ObjectUtils.isNotEmpty(item.mapLng)){ - setMapDataPointMarker(new LatLng(item.mapLat, item.mapLng), item.label, 0); - } - }); - gasStationPointData.forEach(item -> { - if(ObjectUtils.isNotEmpty(item.mapLat) && ObjectUtils.isNotEmpty(item.mapLng)){ - setMapDataPointMarker(new LatLng(item.mapLat, item.mapLng), item.label, 1); - } - }); - throughPoints = CollectionUtils.newArrayList(new LatLonPoint(carPointData.get(1).mapLat, carPointData.get(1).mapLng)); - // 渲染导航路线 - final RouteSearch.FromAndTo fromAndTo = new RouteSearch.FromAndTo(new LatLonPoint(carPointData.get(0).mapLat, carPointData.get(0).mapLng), new LatLonPoint(gasStationPointData.get(1).mapLat, gasStationPointData.get(1).mapLng)); - // 第一个参数表示路径规划的起点和终点,第二个参数表示驾车模式,第三个参数表示途经点,第四个参数表示避让区域,第五个参数表示避让道路 - RouteSearch.DriveRouteQuery query = new RouteSearch.DriveRouteQuery(fromAndTo, RouteSearch.DRIVING_SINGLE_DEFAULT, throughPoints, null, ""); - mRouteSearch.calculateDriveRouteAsyn(query); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public void setMapDataPointMarker(LatLng latlng, String title, Integer type) { - int resourcesId; - switch (type) { - case 0: - resourcesId = R.drawable.icon_car; - break; - case 1: - resourcesId = R.drawable.icon_gasstation; - break; - default: - throw new IllegalStateException("Unexpected value: " + type); - } - MarkerOptions markerOptions = new MarkerOptions() - .title(title) - .icon(BitmapDescriptorFactory.fromResource(resourcesId)) - .position(latlng).anchor(0.5f, 0.5f); - Marker marker = aMap.addMarker(markerOptions); - // 设置生长动画 - Animation animation = new ScaleAnimation(0,1,0,1); - animation.setInterpolator(new LinearInterpolator()); - // 设置持续时间 - animation.setDuration(1000); - // 设置动画 - marker.setAnimation(animation); - // 开始动画 - marker.startAnimation(); - } - - @Override - public void onBusRouteSearched(BusRouteResult busRouteResult, int errorCode) {} - - @Override - public void onDriveRouteSearched(DriveRouteResult result, int errorCode) { - if (errorCode != AMapException.CODE_AMAP_SUCCESS) { - ToastUtil.showAmapError(errorCode); - return; - } - if (result == null && result.getPaths() == null) { - ToastUtil.show("对不起,没有搜索到相关数据!"); - return; - } - if (result.getPaths().size() > 0) { - final DrivePath drivePath = result.getPaths().get(0); - if(drivePath == null) return; - DrivingRouteOverlay drivingRouteOverlay = new DrivingRouteOverlay( - getActivity(), - aMap, - drivePath, - result.getStartPos(), - result.getTargetPos(), - throughPoints - ); - drivingRouteOverlay.removeFromMap(); - drivingRouteOverlay.drawDrivingRoute(); - drivingRouteOverlay.zoomToRouteBounds(); - } - } - - @Override - public void onWalkRouteSearched(WalkRouteResult walkRouteResult, int errorCode) {} - - @Override - public void onRideRouteSearched(RideRouteResult rideRouteResult, int errorCode) {} - - @Override - public void onResume() { - super.onResume(); - mapView.onResume(); - mapGpsSensorEventListener.registerSensorListener(); - } - - @Override - public void onPause() { - super.onPause(); - mapView.onPause(); - mapGpsSensorEventListener.unRegisterSensorListener(); - } - - @Override - public void onSaveInstanceState(@NonNull Bundle outState) { - super.onSaveInstanceState(outState); - mapView.onSaveInstanceState(outState); - } - - @Override - public void onDestroy() { - super.onDestroy(); - //fixme 内部高德视图组件销毁修改了内存标记,安卓11后不让修改,会导致内存漏动 - // 等待后面高德库更新修复这个问题,目前只能关闭堆指针标记 - // https://source.android.com/devices/tech/debug/tagged-pointers - mapView.onDestroy(); - } - - /** 单次定位,用于判断设备权限以及缺少GPS的硬件提示不能使用此软件(针对首次进入时判断) */ - private void singleAMapLocationClient() { - AMapLocationClient singleLocationClient = locationRequest.initLocation(locationRequest.getDefaultOption().setOnceLocation(true)); - singleLocationClient.startLocation(); - singleLocationClient.setLocationListener(location -> { - if (null != location) { - switch (location.getLocationQualityReport().getGPSStatus()) { - case AMapLocationQualityReport.GPS_STATUS_NOGPSPROVIDER: - ToastUtil.show("手机中没有GPS模块提供,无法进行GPS定位,请更换设备"); - break; - case AMapLocationQualityReport.GPS_STATUS_OFF: - PermissionUtil.openApplicationSettings(getActivity(), "GPS关闭,建议开启GPS,提高定位质量"); - break; - case AMapLocationQualityReport.GPS_STATUS_NOGPSPERMISSION: - PermissionUtil.openApplicationSettings(getActivity(), "没有GPS定位权限,建议开启gps定位权限"); - break; - } - } else ToastUtil.show("定位失败,请联系系统管理员!"); - singleLocationClient.onDestroy(); - }); - } - - @Override - public void activate(OnLocationChangedListener onLocationChangedListener) { - userMoveToLocationMark = false; - if (locationRequest.getLocationClient() == null) { - locationRequest.getLocationClient().startLocation(); - } - } - - @Override - public void deactivate() { - LogUtils.i("地图暂停时不结束后台定位,让定位在后台也能运行!"); - } - - @Override - public void onTouch(MotionEvent motionEvent) { - userMoveToLocationMark = true; - } -} diff --git a/app/src/main/java/com/kanglai/push/ui/fragment/HomeFragment.java b/app/src/main/java/com/kanglai/push/ui/fragment/HomeFragment.java index 4e580e5..2e70747 100644 --- a/app/src/main/java/com/kanglai/push/ui/fragment/HomeFragment.java +++ b/app/src/main/java/com/kanglai/push/ui/fragment/HomeFragment.java @@ -18,33 +18,24 @@ import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import com.amap.api.services.core.LatLonPoint; -import com.blankj.utilcode.util.CacheDiskUtils; import com.blankj.utilcode.util.CollectionUtils; import com.blankj.utilcode.util.LogUtils; -import com.blankj.utilcode.util.StringUtils; import com.dolphin.core.base.BaseFragment; import com.dolphin.core.bus.RxBus; import com.dolphin.core.entity.OssFile; import com.dolphin.core.util.NotificationUtil; import com.dolphin.core.util.ToastUtil; import com.dolphin.core.widget.DefaultItemDecoration; +import com.google.gson.Gson; import com.kanglai.push.BR; import com.kanglai.push.R; -import com.kanglai.push.constant.CacheConstant; -import com.kanglai.push.constant.CommonConstant; import com.kanglai.push.databinding.FragmentHomeBinding; -import com.kanglai.push.entity.RoutePlanLatPoint; import com.kanglai.push.entity.RxbusDemo; -import com.kanglai.push.entity.User; import com.kanglai.push.ui.activity.DemoShareActivity; import com.kanglai.push.ui.activity.PictureSelectorActivity; -import com.kanglai.push.ui.activity.RoutePlanActivity; import com.kanglai.push.ui.adapter.HomeRecyclerAdapter; import com.kanglai.push.ui.vm.HomeViewModel; -import com.google.gson.Gson; import com.luck.picture.lib.config.PictureConfig; -import com.umeng.message.PushAgent; import java.util.ArrayList; import java.util.List; @@ -64,7 +55,6 @@ public class HomeFragment extends BaseFragment routePlanLauncherResult; private ActivityResultLauncher> pictureSelectorLauncherResult; @Override @@ -80,20 +70,6 @@ public class HomeFragment extends BaseFragment() { - @Override - public Void parseResult(int resultCode, @Nullable Intent intent) { - return null; - } - @Override - public Intent createIntent(@NonNull Context context, RoutePlanLatPoint routePlanLatPoint) { - Intent intent = new Intent(getActivity(), RoutePlanActivity.class); - intent.putExtra(CommonConstant.ROUTE_PLAN_LAT_POINT, routePlanLatPoint); - return intent; - } - }, result -> {}); pictureSelectorLauncherResult = registerForActivityResult(new ActivityResultContract, ArrayList>() { @Override public ArrayList parseResult(int resultCode, @Nullable Intent intent) { @@ -162,10 +138,6 @@ public class HomeFragment extends BaseFragment list = new ArrayList(); diff --git a/app/src/main/java/com/kanglai/push/ui/vm/InstantViewModel.java b/app/src/main/java/com/kanglai/push/ui/vm/InstantViewModel.java index 2d4464c..d1834f8 100644 --- a/app/src/main/java/com/kanglai/push/ui/vm/InstantViewModel.java +++ b/app/src/main/java/com/kanglai/push/ui/vm/InstantViewModel.java @@ -9,10 +9,8 @@ import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.LifecycleOwner; -import com.autonavi.base.amap.mapcore.Convert; import com.blankj.utilcode.util.CacheDiskUtils; import com.blankj.utilcode.util.CollectionUtils; -import com.blankj.utilcode.util.ConvertUtils; import com.blankj.utilcode.util.LogUtils; import com.blankj.utilcode.util.MapUtils; import com.blankj.utilcode.util.StringUtils; @@ -22,9 +20,6 @@ import com.dolphin.core.http.api.ResultResponse; import com.dolphin.core.http.exception.ExceptionHandle; import com.dolphin.core.util.RxUtil; import com.dolphin.core.util.ToastUtil; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.internal.LinkedTreeMap; import com.kanglai.push.app.AppApplication; import com.kanglai.push.constant.CacheConstant; import com.kanglai.push.di.component.DaggerServiceComponent; @@ -34,16 +29,10 @@ import com.kanglai.push.entity.PushChatMessage; import com.kanglai.push.entity.User; import com.kanglai.push.service.PushService; import com.kanglai.push.ui.activity.InstantActivity; -import com.kanglai.push.util.CustomDeserializer; import com.kanglai.push.util.LocalPushChatMsgUtil; -import com.kanglai.push.util.TimeFormatUtil; -import java.lang.reflect.Type; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; import java.util.Collections; -import java.util.HashMap; import java.util.List; import java.util.Map; diff --git a/app/src/main/java/com/kanglai/push/ui/vm/MapViewModel.java b/app/src/main/java/com/kanglai/push/ui/vm/MapViewModel.java deleted file mode 100644 index 02a7b84..0000000 --- a/app/src/main/java/com/kanglai/push/ui/vm/MapViewModel.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.kanglai.push.ui.vm; - -import android.app.Application; - -import androidx.annotation.NonNull; -import androidx.lifecycle.LifecycleOwner; - -/** - *

- * 地图视图模型层 - *

- * - * @Author: entfrm开发团队-王翔 - * @since: 2022/11/1 - */ -public class MapViewModel extends ToolbarViewModel { - - - public MapViewModel(@NonNull Application application) { - super(application); - } - - @Override - public void onCreate(@NonNull LifecycleOwner owner) { - super.onCreate(owner); - super.setTitleText("高德地图"); - } - -} diff --git a/app/src/main/res/layout/activity_basic_navi.xml b/app/src/main/res/layout/activity_basic_navi.xml deleted file mode 100644 index 6a08010..0000000 --- a/app/src/main/res/layout/activity_basic_navi.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - diff --git a/app/src/main/res/layout/activity_route_plan.xml b/app/src/main/res/layout/activity_route_plan.xml deleted file mode 100644 index afe0df8..0000000 --- a/app/src/main/res/layout/activity_route_plan.xml +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - - - - - - - - - - -