package com.catiger.taxi;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import com.amap.api.maps.AMap;
import com.amap.api.maps.CameraUpdateFactory;
import com.amap.api.maps.MapView;
import com.amap.api.maps.model.BitmapDescriptorFactory;
import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.LatLngBounds;
import com.amap.api.maps.model.Marker;
import com.amap.api.maps.model.MarkerOptions;
import com.amap.api.maps.model.MyLocationStyle;
import com.amap.api.maps.utils.SpatialRelationUtil;
import com.amap.api.maps.utils.overlay.SmoothMoveMarker;
import com.amap.api.navi.AMapNavi;
import com.amap.api.navi.AMapNaviListener;
import com.amap.api.navi.enums.PathPlanningStrategy;
import com.amap.api.navi.model.AMapCalcRouteResult;
import com.amap.api.navi.model.AMapLaneInfo;
import com.amap.api.navi.model.AMapModelCross;
import com.amap.api.navi.model.AMapNaviCameraInfo;
import com.amap.api.navi.model.AMapNaviCross;
import com.amap.api.navi.model.AMapNaviLocation;
import com.amap.api.navi.model.AMapNaviPath;
import com.amap.api.navi.model.AMapNaviRouteNotifyData;
import com.amap.api.navi.model.AMapNaviTrafficFacilityInfo;
import com.amap.api.navi.model.AMapServiceAreaInfo;
import com.amap.api.navi.model.AimLessModeCongestionInfo;
import com.amap.api.navi.model.AimLessModeStat;
import com.amap.api.navi.model.NaviInfo;
import com.amap.api.navi.model.NaviLatLng;
import com.amap.api.navi.view.RouteOverLay;
import com.amap.api.services.core.AMapException;
import com.amap.api.services.core.LatLonPoint;
import com.amap.api.services.core.PoiItem;
import com.amap.api.services.poisearch.PoiResult;
import com.amap.api.services.poisearch.PoiSearch;
import com.amap.api.services.route.BusRouteResult;
import com.amap.api.services.route.DistanceResult;
import com.amap.api.services.route.DistanceSearch;
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.RouteSearchV2;
import com.amap.api.services.route.WalkRouteResult;
import com.catiger.taxi.data.Driver;
import com.catiger.taxi.data.LoginRepository;
import com.catiger.taxi.data.model.LoggedInUser;
import com.catiger.taxi.tool.Order;
import com.catiger.taxi.ui.RippleView;
import com.catiger.taxi.utils.HttpUtil;
import com.catiger.taxi.utils.JsonUtil;
import com.catiger.taxi.utils.WebsocketUtil;
import com.catiger.taxi.view.FukuanDialog;
import com.catiger.taxi.view.VerificationCodeInput;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.util.Pair;
import android.view.View;
import android.view.animation.LinearInterpolator;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.appcompat.widget.LinearLayoutCompat;
import androidx.core.app.NotificationCompat;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import com.catiger.taxi.databinding.ActivityCallBinding;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
import okhttp3.WebSocket;
import okhttp3.WebSocketListener;
public class CallActivity extends AppCompatActivity implements PoiSearch.OnPoiSearchListener, DistanceSearch.OnDistanceSearchListener, RouteSearch.OnRouteSearchListener {
private static String TAG = "CallActivity";
private static String sendOrderURL = "http://192.168.42.61:8083/assign";
private static String appOrderURL = "http://192.168.42.61:8083/task";
private static String cancelOrderURL = "http://192.168.42.61:8083/cancel";
private AppBarConfiguration appBarConfiguration;
private ActivityCallBinding binding;
private RouteSearch routeSearch;
private MapView mapView;
private AMap aMap;
private PoiSearch poiSearch;
private LatLonPoint startLatLonPoint, endLatLonPoint;
private RouteOverLay routeOverLay;
private AMapNavi aMapNavi;
private SmoothMoveMarker driverMarker;
private FloatingActionButton call;
private DistanceSearch distanceSearch;
private Driver driver;
private boolean picking = false;
private LatLng preLatLon, nextLatLon;
private Order currentOrder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//< Default Area Begin >
binding = ActivityCallBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
ImageView backImage = binding.registerBackButton;
backImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onBackPressed();
}
});
call = binding.callTaxiButton;
call.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (!activated)
if(currentOrder.getApptime()==null)
sendOrder(sendOrderURL);
else
sendOrder(appOrderURL);
else
cancelOrder(cancelOrderURL);
}
});
Button phoneButton = binding.phoneBtn;
phoneButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showPhone();
}
});
Button orderCancelButton = binding.canBtn;
orderCancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
cancelOrder();
}
});
//< Default Area End >
Intent intent = getIntent();
double slat = intent.getDoubleExtra("slat",0.0);
double slon = intent.getDoubleExtra("slon", 0.0);
double averMin = intent.getDoubleExtra("aver", 9999);
double averDis = intent.getDoubleExtra("dis", 9999);
int[] yuyue = intent.getIntArrayExtra("time");
String splace = intent.getStringExtra("splace");
String endPoiID = intent.getStringExtra("poiID");
String apptime = intent.getStringExtra("apptime");
if(yuyue!=null) {
TextView titleView = findViewById(R.id.reg_title);
titleView.setText("申请预约单");
}
TextView averTime = findViewById(R.id.estimateTime);
averTime.setText(averMin+"分钟");
LoggedInUser user = this.getLoggedUser();
currentOrder = new Order(user.getDisplayName());
currentOrder.setSlon(slon); currentOrder.setSlat(slat); currentOrder.setSplace(splace);
if(yuyue!=null) {
String str = yuyue[0]+"-";
if (yuyue[1]<10)
str += 0 + "" + yuyue[1];
else
str += yuyue[1];
str += "-";
if (yuyue[2]<10)
str += 0 + "" + yuyue[2];
else
str += yu
网约车项目-Ride-Hailing-Service.zip
需积分: 0 73 浏览量
更新于2023-11-06
收藏 26.06MB ZIP 举报
:网约车项目-Ride-Hailing-Service.zip
在这个名为“网约车项目-Ride-Hailing-Service”的压缩包中,我们可以预见到一个完整的网约车服务系统。这个系统可能涵盖了乘客端、司机端、后台管理以及相应的数据处理等多个核心模块,旨在为用户提供方便快捷的出行服务。
:“网约车项目-Ride-Hailing-Service”
描述简洁,暗示了这是一个实施或模拟网约车业务的软件项目。项目可能包括乘客应用、司机应用和后台管理系统等组件,用于匹配乘客和司机,处理订单,跟踪行程,计算费用,并提供支付和评价等功能。该项目可能采用了现代Web或移动开发技术,如React Native、Flutter或Swift for iOS,以及Java或Kotlin for Android来构建客户端应用。后台可能使用了Node.js、Python或Django等后端技术,搭配数据库如MySQL、PostgreSQL或MongoDB存储用户信息和交易记录。
:无
由于没有特定的标签,我们无法明确知道该项目关注的具体技术领域或特性。但根据常见的网约车服务,我们可以推测可能涉及的技术标签有:移动应用开发、地理定位、实时通信、地图API(如Google Maps或高德地图)、支付集成(如支付宝、微信支付)、用户认证与安全、大数据分析以及服务器端负载均衡等。
【压缩包子文件的文件名称列表】:Ride-Hailing-Service-main
这个"Ride-Hailing-Service-main"文件很可能代表了项目的主目录,包含项目的核心代码和资源。通常,主目录会包含以下组成部分:
1. **源代码**:分为前端(客户端)和后端(服务器端)。前端代码可能有多个子目录,对应不同的应用功能,如登录注册、叫车界面、地图显示、订单管理等。后端代码可能包含路由、业务逻辑、数据库操作和API接口。
2. **配置文件**:如数据库连接配置、环境变量设置、服务器部署配置等。
3. **测试代码**:为了确保系统的稳定性,通常会有单元测试、集成测试和端到端测试的代码。
4. **资源文件**:可能包含图片、图标、字体、JSON数据文件等,用于构建用户界面。
5. **README文件**:提供项目介绍、安装指南、开发环境搭建、运行方式等信息。
6. **LICENSE**:表明项目使用的开源许可协议。
7. **版本控制**:如果项目使用Git进行版本控制,那么可能会有.gitignore文件,忽略不必要的文件和目录。
这个网约车项目可能是一个综合性的软件工程,涉及到多个技术栈和复杂业务逻辑。开发者需要具备良好的前后端开发技能,理解地理位置服务,熟悉网络通信和数据库操作,还要关注用户体验和安全性。同时,项目可能还需要考虑合规性问题,比如遵循各地的网约车法规,以及数据隐私保护等。