修复【RoboTaxi司机端V2.8.0】【偶现】车辆下电重启后,多次重启pad,无定位数据,无感知,无地图
http://jira.zhidaohulian.com/browse/YHJSYHZNWL-1044
This commit is contained in:
donghongyu
2022-06-28 11:58:04 +08:00
parent 7eaa1ab7ed
commit 1c5bc09645
3 changed files with 81 additions and 77 deletions

View File

@@ -203,76 +203,80 @@ public class NSDNettyManager {
*
* @param context
*/
public void searchAndConnectServer(Context context, String uuid, NettyClientListener listener) {
// 这里暂时关闭原因是因为BUS上无法透穿虚拟机的网络限制
// if (mNsdClient == null) {
// mNsdClient = new NsdClient(context, SERVER_NAME, new NsdClient.IServerFound() {
// @Override
// public void onServerFound(NsdServiceInfo info, int port) {
// if (info != null) {
// String hostAddress = info.getHost().getHostAddress();
// Logger.d(TAG, "NSD查询到指定服务器信息ip为" + hostAddress + ",port为" + port);
// //获取到指定的地址进行Netty的连接
// connectNettyServer(hostAddress, port, uuid, listener);
//
// if (info.getServiceName().startsWith(SERVER_NAME)) {
// //扫描到以后停止
// mNsdClient.stopServiceDiscovery();
// }
// }
// }
//
// @Override
// public void onServerFail() {
// Logger.d(TAG, "NSD查询失败未找到");
// }
// });
// }
// mNsdClient.startNSDClient();
public void searchAndConnectServer(Context context, String uuid, boolean isTaxi, NettyClientListener listener) {
if (isTaxi) {
// 这里暂时关闭原因是因为BUS上无法透穿虚拟机的网络限制
if (mNsdClient == null) {
mNsdClient = new NsdClient(context, SERVER_NAME, new NsdClient.IServerFound() {
@Override
public void onServerFound(NsdServiceInfo info, int port) {
if (info != null) {
String hostAddress = info.getHost().getHostAddress();
Logger.d(TAG, "NSD查询到指定服务器信息ip为" + hostAddress + ",port为" + port);
//获取到指定的地址进行Netty的连接
connectNettyServer(hostAddress, port, uuid, listener);
// 启动发现司机屏幕任务
mDiscoveryTask = new DiscoveryDriverTask();
network_ip = NetInfo.getUnsignedLongFromIp("192.168.1.0");
int cidr = 24;
// Detected IP
int shift = (32 - cidr);
if (cidr < 31) {
network_start = (network_ip >> shift << shift) + 1;
network_end = (network_start | ((1 << shift) - 1)) - 1;
} else {
network_start = (network_ip >> shift << shift);
network_end = (network_start | ((1 << shift) - 1));
}
mDiscoveryTask.setNetwork(network_ip, network_start, network_end);
mDiscoveryTask.addDiscoveryDriverListener(new DiscoveryDriverListener() {
@Override
public void onSuccess(ArrayList<HostBean> hostList) {
// 这里返回数据代表了有司机端正在运行,这里遍历集合数据进行连接
if (hostList != null && hostList.size() > 0) {
String hostAddress = "";
for (HostBean hostBean : hostList) {
if (mNettyTcpClient != null && (mNettyTcpClient.isConnecting() || mNettyTcpClient.getConnectStatus())) {
Logger.d(TAG, "当前乘客屏幕已经连接到了ip" + hostAddress + ",port为" + 1088);
return;
if (info.getServiceName().startsWith(SERVER_NAME)) {
//扫描到以后停止
mNsdClient.stopServiceDiscovery();
}
}
hostAddress = hostBean.ipAddress;
Logger.d(TAG, "NSD查询到指定服务器信息ip为" + hostAddress + ",port为" + 1088);
//获取到指定的地址进行Netty的连接
connectNettyServer(hostAddress, 1088, uuid, listener);
}
} else {
Logger.d(TAG, "扫描完成,未找到可连接司机屏幕服务");
@Override
public void onServerFail() {
Logger.d(TAG, "NSD查询失败未找到");
}
});
}
mNsdClient.startNSDClient();
}
// BUS 由于采用的虚拟机,不在同一个局域网内,所以无法使用上面的方案
else {
// 启动发现司机屏幕任务
mDiscoveryTask = new DiscoveryDriverTask();
network_ip = NetInfo.getUnsignedLongFromIp("192.168.1.0");
int cidr = 24;
// Detected IP
int shift = (32 - cidr);
if (cidr < 31) {
network_start = (network_ip >> shift << shift) + 1;
network_end = (network_start | ((1 << shift) - 1)) - 1;
} else {
network_start = (network_ip >> shift << shift);
network_end = (network_start | ((1 << shift) - 1));
}
mDiscoveryTask.setNetwork(network_ip, network_start, network_end);
mDiscoveryTask.addDiscoveryDriverListener(new DiscoveryDriverListener() {
@Override
public void onSuccess(ArrayList<HostBean> hostList) {
// 这里返回数据代表了有司机端正在运行,这里遍历集合数据进行连接
if (hostList != null && hostList.size() > 0) {
String hostAddress = "";
for (HostBean hostBean : hostList) {
if (mNettyTcpClient != null && (mNettyTcpClient.isConnecting() || mNettyTcpClient.getConnectStatus())) {
Logger.d(TAG, "当前乘客屏幕已经连接到了ip" + hostAddress + ",port为" + 1088);
return;
}
hostAddress = hostBean.ipAddress;
Logger.d(TAG, "NSD查询到指定服务器信息ip为" + hostAddress + ",port为" + 1088);
//获取到指定的地址进行Netty的连接
connectNettyServer(hostAddress, 1088, uuid, listener);
}
} else {
Logger.d(TAG, "扫描完成,未找到可连接司机屏幕服务");
}
}
}
@Override
public void onCancel() {
@Override
public void onCancel() {
}
});
mDiscoveryTask.execute();
}
});
mDiscoveryTask.execute();
}
}