eagle 工控机提供车前引导线数据
This commit is contained in:
@@ -34,8 +34,11 @@ import com.mogo.eagle.core.data.map.MogoLatLng;
|
||||
import com.mogo.eagle.core.function.smp.utils.MapAssetStyleUtils;
|
||||
import com.mogo.eagle.core.function.smp.view.ISmallMapDirectionView;
|
||||
import com.mogo.eagle.core.widget.RoundLayout;
|
||||
import com.mogo.map.location.MogoLocation;
|
||||
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
|
||||
import com.mogo.module.common.MogoApisHandler;
|
||||
import com.mogo.module.common.utils.DrivingDirectionUtils;
|
||||
import com.mogo.module.common.utils.LocationUtils;
|
||||
import com.mogo.utils.logger.Logger;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -184,7 +187,7 @@ public class SmallMapDirectionView
|
||||
public void onCarLocationChanged2(Location latLng) {
|
||||
Logger.d(MODULE_NAME, "onCarLocationChanged2 latLng:" + latLng);
|
||||
LatLng currentLatLng = new LatLng(latLng.getLatitude(), latLng.getLongitude());
|
||||
|
||||
//更新车辆位置
|
||||
if (mCarMarker != null) {
|
||||
// mCarMarker.setRotateAngle(360 - latLng.getBearing());
|
||||
mCarMarker.setPosition(currentLatLng);
|
||||
@@ -193,11 +196,12 @@ public class SmallMapDirectionView
|
||||
|
||||
|
||||
if (mCoordinatesLatLng.size() > 1) {
|
||||
mCoordinatesLatLngCurrent.clear();
|
||||
for (LatLng lng : mCoordinatesLatLng) {
|
||||
MogoLatLng mogoLatLng = new MogoLatLng(lng.latitude, lng.longitude);
|
||||
mCoordinatesLatLngCurrent.add(mogoLatLng);
|
||||
}
|
||||
// mCoordinatesLatLngCurrent.clear();
|
||||
// for (LatLng lng : mCoordinatesLatLng) {
|
||||
// MogoLatLng mogoLatLng = new MogoLatLng(lng.latitude, lng.longitude);
|
||||
// mCoordinatesLatLngCurrent.add(mogoLatLng);
|
||||
// }
|
||||
removeLoction(latLng);
|
||||
|
||||
// 结束位置
|
||||
LatLng endLatLng = mCoordinatesLatLng.get(mCoordinatesLatLng.size() - 1);
|
||||
@@ -211,7 +215,7 @@ public class SmallMapDirectionView
|
||||
endLatLng.latitude, endLatLng.longitude,
|
||||
currentLatLng.latitude, currentLatLng.longitude
|
||||
);
|
||||
|
||||
|
||||
Log.d(MODULE_NAME, "calculateDistance=" + calculateDistance);
|
||||
if (calculateDistance <= 20) {
|
||||
clearPolyline();
|
||||
@@ -226,6 +230,34 @@ public class SmallMapDirectionView
|
||||
mAMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
|
||||
}
|
||||
|
||||
private void removeLoction(Location latLng) {
|
||||
for (LatLng l: mCoordinatesLatLng){
|
||||
if (!isPointOnCarFront(latLng,l)){
|
||||
mCoordinatesLatLng.remove(l);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isPointOnCarFront(Location carLocal, LatLng pointLocal) {
|
||||
double carLon = carLocal.getLongitude();
|
||||
double carLat = carLocal.getLatitude();
|
||||
double poiLon = pointLocal.longitude;
|
||||
double poiLat = pointLocal.latitude;
|
||||
float carAngle = carLocal.getBearing();
|
||||
|
||||
// 计算车辆与点之间的夹角
|
||||
int diffAngle = DrivingDirectionUtils.getDegreeOfCar2Poi(
|
||||
carLon, carLat, poiLon, poiLat, (int) carAngle);
|
||||
|
||||
if (diffAngle <= 90) {
|
||||
Log.i("lianglihui", "目标点在车辆--前方");
|
||||
return true;
|
||||
} else {
|
||||
Log.i("lianglihui", "目标点在车辆--后方");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCarLocationChanged(MogoLatLng latLng) {
|
||||
Logger.d(MODULE_NAME, "onCarLocationChanged latLng:" + latLng);
|
||||
|
||||
@@ -45,8 +45,9 @@ dependencies {
|
||||
// 现有的ADAS的通讯SDK,需要将里面的东西融合到我们项目中
|
||||
compileOnly rootProject.ext.dependencies.adasapi
|
||||
|
||||
api "com.zhidao.support.adas:high:1.2.0.2"
|
||||
api "com.zhidao.support.adas:high:1.2.0.8"
|
||||
implementation rootProject.ext.dependencies.mogoami
|
||||
// implementation "com.zhidao.support.adas:high:1.2.0.7"
|
||||
|
||||
annotationProcessor rootProject.ext.dependencies.aroutercompiler
|
||||
if (Boolean.valueOf(RELEASE)) {
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.mogo.module.adas;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.mogo.module.adas.entity.WarnMessageModel;
|
||||
import com.mogo.module.adas.model.AdasServiceModel;
|
||||
@@ -19,11 +21,14 @@ import com.zhidao.support.adas.high.bean.CarStateInfo;
|
||||
import com.zhidao.support.adas.high.bean.LightStatueInfo;
|
||||
import com.zhidao.support.adas.high.bean.ObstaclesInfo;
|
||||
import com.zhidao.support.adas.high.bean.RectInfo;
|
||||
import com.zhidao.support.adas.high.bean.TrajectoryInfo;
|
||||
import com.zhidao.support.adas.high.bean.WarnMessageInfo;
|
||||
import com.zhidao.support.adas.high.bean.guardian.AutopilotGuardianInfo;
|
||||
import com.zhidao.support.adas.high.common.MsgActionType;
|
||||
import com.zhidao.support.obu.ami.AmiClientManager;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import io.reactivex.Flowable;
|
||||
@@ -240,6 +245,18 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotTrajectory(List<TrajectoryInfo> trajectoryList) {
|
||||
// Log.e("lianglihui","adas onAutopilotTrajectory");
|
||||
if(trajectoryList != null && trajectoryList.size() >0){
|
||||
for (IAdasDataListener listener : iAdasEventListeners) {
|
||||
if (listener != null) {
|
||||
listener.onAutopilotTrajectory(trajectoryList);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotSNRequest() {
|
||||
if (providerBizListener != null) {
|
||||
@@ -249,6 +266,11 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotGuardian(AutopilotGuardianInfo guardianInfo) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWebSocketConnectSuccess() {
|
||||
Logger.d(TAG, "webSocket 连接成功");
|
||||
@@ -259,8 +281,8 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWebSocketConnectFailed() {
|
||||
Logger.d(TAG, "webSocket 连接失败");
|
||||
public void onWebSocketConnectFailed(String t) {
|
||||
Logger.d(TAG, "webSocket 连接失败:"+t);
|
||||
for (IAdasStatusListener listener : iAdasStatusListeners) {
|
||||
listener.onServiceDisconnected();
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.zhidao.autopilotservice.model.AdasAIDLOwnerCarStateModel;
|
||||
import com.zhidao.support.adas.high.bean.AutopilotRoute;
|
||||
import com.zhidao.support.adas.high.bean.AutopilotStatus;
|
||||
import com.zhidao.support.adas.high.bean.RectInfo;
|
||||
import com.zhidao.support.adas.high.bean.TrajectoryInfo;
|
||||
import com.zhidao.support.adas.high.bean.WarnMessageInfo;
|
||||
|
||||
import java.util.List;
|
||||
@@ -72,4 +73,13 @@ public interface IAdasDataListener {
|
||||
default void notifyAutopilotState(AutopilotStatus autopilotStatus) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 车前引导路径回调
|
||||
* @param trajectory
|
||||
*/
|
||||
|
||||
default void onAutopilotTrajectory(List<TrajectoryInfo> trajectory) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,14 +2,17 @@ package com.mogo.module.service.routeoverlay;
|
||||
|
||||
import android.content.Context;
|
||||
import android.location.Location;
|
||||
import android.util.Log;
|
||||
|
||||
import com.mogo.eagle.core.data.map.MogoLatLng;
|
||||
import com.mogo.map.location.MogoLocation;
|
||||
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
|
||||
import com.mogo.module.common.MogoApisHandler;
|
||||
import com.mogo.module.common.drawer.MarkerDrawer;
|
||||
import com.mogo.service.adas.IMogoAdasRouteCallBack;
|
||||
import com.mogo.service.adas.IMogoAdasTrajectoryDataCallBack;
|
||||
import com.mogo.service.adas.entity.ADASTrajectoryInfo;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class MogoRouteOverlayManager implements IMogoCarLocationChangedListener2 {
|
||||
@@ -32,7 +35,22 @@ public class MogoRouteOverlayManager implements IMogoCarLocationChangedListener2
|
||||
RouteOverlayDrawer.getInstance(mContext).putRouteList(routeList);
|
||||
}
|
||||
});
|
||||
MogoApisHandler.getInstance().getApis().getAdasControllerApi().addAdasTrajectoryDataCallBack(new IMogoAdasTrajectoryDataCallBack() {
|
||||
|
||||
@Override
|
||||
public void onAutopilotTrajectory(List<ADASTrajectoryInfo> trajectoryInfos) {
|
||||
// Log.e("lianglihui","onAutopilotTrajectory");
|
||||
if (trajectoryInfos == null || trajectoryInfos.size() == 0){
|
||||
return;
|
||||
}
|
||||
// Log.e("lianglihui","trajectoryInfos:"+trajectoryInfos.size());
|
||||
List<MogoLatLng> mogoLatLngs = new ArrayList<>();
|
||||
for (ADASTrajectoryInfo a:trajectoryInfos) {
|
||||
mogoLatLngs.add(new MogoLatLng(a.getLat(),a.getLon()));
|
||||
}
|
||||
RouteOverlayDrawer.getInstance(mContext).drawTrajectoryList(mogoLatLngs);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static MogoRouteOverlayManager getInstance(Context context) {
|
||||
@@ -49,7 +67,7 @@ public class MogoRouteOverlayManager implements IMogoCarLocationChangedListener2
|
||||
|
||||
@Override
|
||||
public void onCarLocationChanged2(Location latLng) {
|
||||
updateLocation(latLng);
|
||||
// updateLocation(latLng);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -124,4 +124,21 @@ public class RouteOverlayDrawer {
|
||||
public void putRouteList(List<MogoLatLng> routeList) {
|
||||
this.mRouteList = routeList;
|
||||
}
|
||||
|
||||
public void drawTrajectoryList(List<MogoLatLng> routeList) {
|
||||
clearMogoRouteOverlay();
|
||||
if (routeList != null) {
|
||||
for (MogoLatLng latLng : routeList) {
|
||||
mPolylinePointList.add(latLng);
|
||||
}
|
||||
mPolylineOptions.setGps(true);
|
||||
mPolylineColors.addAll(ColorUtils.getGradientAlpha("#002965ED", "#FF2965ED", "#002965ED", mPolylinePointList.size()));
|
||||
// 替换路径集合
|
||||
mPolylineOptions.points(mPolylinePointList);
|
||||
// 线条粗细,渐变,渐变色值
|
||||
mPolylineOptions.width(25).useGradient(true).colorValues(mPolylineColors);
|
||||
// 绘制线
|
||||
mMoGoPolyline = mogoOverlayManager.addPolyline(mPolylineOptions);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.alibaba.android.arouter.facade.template.IProvider;
|
||||
import com.mogo.eagle.core.data.autopilot.RemoteControlAutoPilotParameters;
|
||||
import com.mogo.map.uicontroller.EnumMapUI;
|
||||
import com.mogo.service.adas.entity.ADASRecognizedResult;
|
||||
import com.mogo.service.adas.entity.ADASTrajectoryInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -205,4 +206,15 @@ public interface IMogoADASController extends IProvider {
|
||||
|
||||
void mockAdasRecognized(List<ADASRecognizedResult> recognizedResults);
|
||||
|
||||
/**
|
||||
* 添加车前引导线回调
|
||||
* @param
|
||||
*/
|
||||
void addAdasTrajectoryDataCallBack(IMogoAdasTrajectoryDataCallBack callBack);
|
||||
/**
|
||||
* 移除车前引导线回调
|
||||
* @param
|
||||
*/
|
||||
void removeAdasTrajectoryDataCallBack(IMogoAdasTrajectoryDataCallBack callBack);
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.mogo.service.adas;
|
||||
|
||||
import com.mogo.service.adas.entity.ADASTrajectoryInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface IMogoAdasTrajectoryDataCallBack {
|
||||
void onAutopilotTrajectory(List<ADASTrajectoryInfo> trajectoryInfo);
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
package com.mogo.service.adas.entity;
|
||||
|
||||
|
||||
/**
|
||||
* @author song kenan
|
||||
* @des
|
||||
* @date 2021/10/21
|
||||
*/
|
||||
public class ADASTrajectoryInfo {
|
||||
//经度
|
||||
private Double lon;
|
||||
//纬度
|
||||
private Double lat;
|
||||
//高度
|
||||
private Double alt;
|
||||
//时间 秒s
|
||||
private Double time;
|
||||
//速度 m/s
|
||||
private Double velocity;
|
||||
//加速度
|
||||
private Double acceleration;
|
||||
//速度方向
|
||||
private Double theta;
|
||||
//曲率
|
||||
private Double kappa;
|
||||
//从起点到目前的总距离
|
||||
private Double accumulatedDis;
|
||||
|
||||
public void setLon(Double lon) {
|
||||
this.lon = lon;
|
||||
}
|
||||
|
||||
public void setLat(Double lat) {
|
||||
this.lat = lat;
|
||||
}
|
||||
|
||||
public void setAlt(Double alt) {
|
||||
this.alt = alt;
|
||||
}
|
||||
|
||||
public void setTime(Double time) {
|
||||
this.time = time;
|
||||
}
|
||||
|
||||
public void setVelocity(Double velocity) {
|
||||
this.velocity = velocity;
|
||||
}
|
||||
|
||||
public void setAcceleration(Double acceleration) {
|
||||
this.acceleration = acceleration;
|
||||
}
|
||||
|
||||
public void setTheta(Double theta) {
|
||||
this.theta = theta;
|
||||
}
|
||||
|
||||
public void setKappa(Double kappa) {
|
||||
this.kappa = kappa;
|
||||
}
|
||||
|
||||
public void setAccumulatedDis(Double accumulatedDis) {
|
||||
this.accumulatedDis = accumulatedDis;
|
||||
}
|
||||
|
||||
public Double getLon() {
|
||||
return lon;
|
||||
}
|
||||
|
||||
public Double getLat() {
|
||||
return lat;
|
||||
}
|
||||
|
||||
public Double getAlt() {
|
||||
return alt;
|
||||
}
|
||||
|
||||
public Double getTime() {
|
||||
return time;
|
||||
}
|
||||
|
||||
public Double getVelocity() {
|
||||
return velocity;
|
||||
}
|
||||
|
||||
public Double getAcceleration() {
|
||||
return acceleration;
|
||||
}
|
||||
|
||||
public Double getTheta() {
|
||||
return theta;
|
||||
}
|
||||
|
||||
public Double getKappa() {
|
||||
return kappa;
|
||||
}
|
||||
|
||||
public Double getAccumulatedDis() {
|
||||
return accumulatedDis;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "TrajectoryModels{" +
|
||||
"lon=" + lon +
|
||||
", lat=" + lat +
|
||||
", alt=" + alt +
|
||||
", time='" + time + '\'' +
|
||||
", velocity=" + velocity +
|
||||
", acceleration=" + acceleration +
|
||||
", theta=" + theta +
|
||||
", kappa=" + kappa +
|
||||
", accumulatedDis=" + accumulatedDis +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.os.SystemClock;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
@@ -26,10 +27,12 @@ import com.mogo.service.adas.IMogoAdasDataCallback;
|
||||
import com.mogo.service.adas.IMogoAdasOCHCallback;
|
||||
import com.mogo.service.adas.IMogoAdasRecognizedDataCallback;
|
||||
import com.mogo.service.adas.IMogoAdasRouteCallBack;
|
||||
import com.mogo.service.adas.IMogoAdasTrajectoryDataCallBack;
|
||||
import com.mogo.service.adas.IMogoAdasWarnMessageCallback;
|
||||
import com.mogo.eagle.core.data.autopilot.RemoteControlAutoPilotParameters;
|
||||
import com.mogo.service.adas.entity.ADASCarStateInfo;
|
||||
import com.mogo.service.adas.entity.ADASRecognizedResult;
|
||||
import com.mogo.service.adas.entity.ADASTrajectoryInfo;
|
||||
import com.mogo.service.adas.entity.ADASWarnMessage;
|
||||
import com.mogo.eagle.core.data.autopilot.AdasOCHData;
|
||||
import com.mogo.service.adas.entity.CarModelListResponse;
|
||||
@@ -53,6 +56,7 @@ import com.zhidao.autopilotservice.model.AdasAIDLOwnerCarRectModel;
|
||||
import com.zhidao.support.adas.high.bean.AutopilotRoute;
|
||||
import com.zhidao.support.adas.high.bean.AutopilotStatus;
|
||||
import com.zhidao.support.adas.high.bean.RectInfo;
|
||||
import com.zhidao.support.adas.high.bean.TrajectoryInfo;
|
||||
import com.zhidao.support.adas.high.bean.WarnMessageInfo;
|
||||
|
||||
import org.json.JSONObject;
|
||||
@@ -107,6 +111,11 @@ public class MogoADASController implements IMogoADASController {
|
||||
*/
|
||||
private final List<IMogoAdasRouteCallBack> mMogoAdasRouteCallBacks = new CopyOnWriteArrayList<>();
|
||||
|
||||
/**
|
||||
* 车前引导线回调
|
||||
*/
|
||||
private final List<IMogoAdasTrajectoryDataCallBack> mMogoAdasTrajectoryDataCallBacks = new CopyOnWriteArrayList<>();
|
||||
|
||||
private IAdasDataListener mAdasDataListener;
|
||||
|
||||
private IMogoAdasCarDataCallback mMogoAdasCarDataCallback;
|
||||
@@ -309,6 +318,7 @@ public class MogoADASController implements IMogoADASController {
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void selectCarModelUrl(String carStyleUrl) {
|
||||
Logger.d(TAG, "selectCarModelUrl: " + carStyleUrl);
|
||||
@@ -367,6 +377,36 @@ public class MogoADASController implements IMogoADASController {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotTrajectory(List<TrajectoryInfo> trajectorys) {
|
||||
if(trajectorys != null && trajectorys.size() > 0){
|
||||
List<ADASTrajectoryInfo> trajectoryInfoArrayList = new ArrayList<>();
|
||||
TrajectoryInfo t= trajectorys.get(0);
|
||||
Log.e("lianglihui","trajectorys:"+ t.getLat()+"-"+t.getLon()+"-"+System.currentTimeMillis());
|
||||
for (TrajectoryInfo trajectory : trajectorys){
|
||||
ADASTrajectoryInfo adasTrajectoryInfo = new ADASTrajectoryInfo();
|
||||
adasTrajectoryInfo.setLat(trajectory.getLat());
|
||||
adasTrajectoryInfo.setLon(trajectory.getLon());
|
||||
adasTrajectoryInfo.setAcceleration(trajectory.getAcceleration());
|
||||
adasTrajectoryInfo.setAccumulatedDis(trajectory.getAccumulatedDis());
|
||||
adasTrajectoryInfo.setTime(trajectory.getTime());
|
||||
adasTrajectoryInfo.setVelocity(trajectory.getVelocity());
|
||||
adasTrajectoryInfo.setAlt(trajectory.getAlt());
|
||||
adasTrajectoryInfo.setKappa(trajectory.getKappa());
|
||||
adasTrajectoryInfo.setTheta(trajectory.getTheta());
|
||||
trajectoryInfoArrayList.add(adasTrajectoryInfo);
|
||||
}
|
||||
|
||||
for (IMogoAdasTrajectoryDataCallBack callBack: mMogoAdasTrajectoryDataCallBacks){
|
||||
if (callBack != null){
|
||||
callBack.onAutopilotTrajectory(trajectoryInfoArrayList);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void autopilotRoute(AutopilotRoute autopilotRoute) {
|
||||
if (autopilotRoute.getModels() == null || autopilotRoute.getModels().size() == 0) {
|
||||
@@ -770,6 +810,22 @@ public class MogoADASController implements IMogoADASController {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addAdasTrajectoryDataCallBack(IMogoAdasTrajectoryDataCallBack callBack) {
|
||||
if (callBack == null) {
|
||||
return;
|
||||
}
|
||||
if (!mMogoAdasTrajectoryDataCallBacks.contains(callBack)) {
|
||||
mMogoAdasTrajectoryDataCallBacks.add(callBack);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAdasTrajectoryDataCallBack(IMogoAdasTrajectoryDataCallBack callBack) {
|
||||
if (callBack != null){
|
||||
mMogoAdasTrajectoryDataCallBacks.remove(callBack);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="com.mogo.test.crashreport.upgrade">
|
||||
|
||||
<application>
|
||||
@@ -6,6 +7,7 @@
|
||||
android:name="androidx.core.content.FileProvider"
|
||||
android:authorities="${applicationId}.fileProvider"
|
||||
android:exported="false"
|
||||
tools:replace="android:authorities"
|
||||
android:grantUriPermissions="true">
|
||||
<meta-data
|
||||
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||
|
||||
Reference in New Issue
Block a user