This commit is contained in:
zhongchao
2021-02-23 12:15:17 +08:00
6 changed files with 346 additions and 221 deletions

View File

@@ -66,6 +66,8 @@ dependencies {
implementation rootProject.ext.dependencies.arouter
kapt rootProject.ext.dependencies.aroutercompiler
implementation rootProject.ext.dependencies.uploadroadinfo
if (Boolean.valueOf(RELEASE)) {
implementation rootProject.ext.dependencies.mogocommons

View File

@@ -3,13 +3,19 @@ package com.zhidao.roadcondition.service
import android.text.TextUtils
import android.util.Log
import com.hw.videoprocessor.VideoProcessor
import com.mogo.cloud.network.BaseData
import com.mogo.cloud.tanlu.api.ITanluUploadCallback
import com.mogo.cloud.tanlu.api.MogoUploadManager
import com.mogo.cloud.tanlu.bean.UploadInfo
import com.mogo.cloud.tanlu.bean.UploadResult
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.debug.DebugConfig
import com.mogo.commons.network.Utils
import com.mogo.utils.NetworkUtils
import com.zhidao.auto.carcorder.callback.TakePhotoCallback
import com.zhidao.auto.carcorder.callback.TakeVideoCallback
import com.zhidao.auto.carcorder.controller.ZdCarCoderController
import com.zhidao.roadcondition.constant.*
import com.zhidao.roadcondition.constant.STRATEGY_UPLOAD_TYPE_ARRAY
import com.zhidao.roadcondition.event.GetImageSuccessEvent
import com.zhidao.roadcondition.event.LatLngStickyEventBus
import com.zhidao.roadcondition.model.proxy.INFO_TYPE_IMG
@@ -127,17 +133,19 @@ object CarCorderController : TakePhotoCallback, TakeVideoCallback {
videoAndThumbMap["video"] = ""
videoAndThumbMap["thumb"] = ""
CosStatusController().sendInformationDirectly(
INFO_TYPE_VIDEO,
videoAndThumbMap,
mType,
entity,
mainInfoId,
mLongitude,
mLatitude,
mSpeed,
mFromType
)
// CosStatusController().sendInformationDirectly(
// INFO_TYPE_VIDEO,
// videoAndThumbMap,
// mType,
// entity,
// mainInfoId,
// mLongitude,
// mLatitude,
// mSpeed,
// mFromType
// )
getInfo("", "", mLongitude, mLatitude, mType, 1.0f, "", "", 1, mFromType, CarCorderController.mainInfoId)?.let { uploadRoadInfo(it) }
//地图上打点
taskAsync(3_000) {
@@ -168,17 +176,20 @@ object CarCorderController : TakePhotoCallback, TakeVideoCallback {
Log.e(TAG, "onTakePhotoFail -----mType = $mType --- isCustom = $isCustom")
//获取图片失败也上报,图片不打点
if (isCustom) {
CosStatusController().sendInformationDirectly(
INFO_TYPE_IMG,
mutableMapOf("pic" to ""),
mType,
entity,
mainInfoId,
mLongitude,
mLatitude,
mSpeed,
mFromType
)
// CosStatusController().sendInformationDirectly(
// INFO_TYPE_IMG,
// mutableMapOf("pic" to ""),
// mType,
// entity,
// mainInfoId,
// mLongitude,
// mLatitude,
// mSpeed,
// mFromType
// )
getInfo("", "", mLongitude, mLatitude, mType, 1.0f, "", "", 0, mFromType, mainInfoId)?.let { uploadRoadInfo(it) }
}
}
@@ -219,8 +230,13 @@ object CarCorderController : TakePhotoCallback, TakeVideoCallback {
if (!TextUtils.isEmpty(mType)) {
Log.d(TAG, "onTakePhotoSuccess mType != null")
CosStatusController().uploadFile(mutableListOf(photoPath as String), entity, mType, mainInfoId, mFromType, mLongitude,
mLatitude, mSpeed)
// CosStatusController().uploadFile(mutableListOf(photoPath as String), entity, mType, mainInfoId, mFromType, mLongitude,
// mLatitude, mSpeed)
if (photoPath != null) {
getInfo(photoPath, "", mLongitude, mLatitude, mType, 1.0f, "", "", 0, mFromType, mainInfoId)?.let { uploadRoadInfo(it) }
}
} else {
Log.d(TAG, "onTakePhotoSuccess mType == null")
Log.d(
@@ -230,32 +246,41 @@ object CarCorderController : TakePhotoCallback, TakeVideoCallback {
if (maxSpeedPic == -1) {
if (speed >= (abs(minSpeedPic) / 3.6f)) {
Log.d(TAG, "onTakePhotoSuccess abs =" + (abs(minSpeedPic) / 3.6f))
CosStatusController().uploadFile(
mutableListOf(photoPath as String),
entity,
mType,
mainInfoId,
mFromType,
mLongitude,
mLatitude,
mSpeed
)
// CosStatusController().uploadFile(
// mutableListOf(photoPath as String),
// entity,
// mType,
// mainInfoId,
// mFromType,
// mLongitude,
// mLatitude,
// mSpeed
// )
if (photoPath != null) {
getInfo(photoPath, "", mLongitude, mLatitude, mType, 1.0f, "", "", 0, mFromType, mainInfoId)?.let { uploadRoadInfo(it) }
}
}
}
if (minSpeedPic > 0 && maxSpeedPic > 0) {
Log.d(TAG, "onTakePhotoSuccess minSpeedPic > 0 -- speed = $speed")
if ((speed >= (minSpeedPic / 3.6f)) && speed <= (maxSpeedPic / 3.6f)) {
CosStatusController().uploadFile(
mutableListOf(photoPath as String),
entity,
mType,
mainInfoId,
mFromType,
mLongitude,
mLatitude,
mSpeed
)
// CosStatusController().uploadFile(
// mutableListOf(photoPath as String),
// entity,
// mType,
// mainInfoId,
// mFromType,
// mLongitude,
// mLatitude,
// mSpeed
// )
if (photoPath != null) {
getInfo(photoPath, "", mLongitude, mLatitude, mType, 1.0f, "", "", 0, mFromType, mainInfoId)?.let { uploadRoadInfo(it) }
}
}
}
}
@@ -293,10 +318,14 @@ object CarCorderController : TakePhotoCallback, TakeVideoCallback {
entity?.let {
if (it.isCustom) {
compressVideo(videoPath, thumbnailPath, it)
// compressVideo(videoPath, thumbnailPath, it)
getInfo(videoPath, "", mLongitude, mLatitude, mType, 1.0f, "", "", 1, mFromType, mainInfoId)?.let { uploadRoadInfo(it) }
} else if (entity.fromType in STRATEGY_UPLOAD_TYPE_ARRAY) {
// 属于策略上报
compressVideo(videoPath, thumbnailPath, it)
// compressVideo(videoPath, thumbnailPath, it)
getInfo(videoPath, "", mLongitude, mLatitude, mType, 1.0f, "", "", 1, mFromType, mainInfoId)?.let { uploadRoadInfo(it) }
} else {
Log.d(
TAG,
@@ -306,15 +335,19 @@ object CarCorderController : TakePhotoCallback, TakeVideoCallback {
Log.d(TAG, "onTakeVideoSuccess 111 abs =" + (abs(minSpeedVideo) / 3.6f))
if (speed >= (abs(minSpeedVideo) / 3.6f)) {
//获取视频以及缩略图成功,开始上报
compressVideo(videoPath, thumbnailPath, it)
// compressVideo(videoPath, thumbnailPath, it)
getInfo(videoPath, "", mLongitude, mLatitude, mType, 1.0f, "", "", 1, mFromType, mainInfoId)?.let { uploadRoadInfo(it) }
}
}
if (minSpeedVideo > 0 && maxSpeedVideo > 0) {
Log.d(TAG, "onTakeVideoSuccess minSpeedVideo > 0 -- speed = $speed")
if ((speed >= (minSpeedVideo / 3.6f)) && speed <= (maxSpeedVideo / 3.6f)) {
compressVideo(videoPath, thumbnailPath, it)
// compressVideo(videoPath, thumbnailPath, it)
getInfo(videoPath, "", mLongitude, mLatitude, mType, 1.0f, "", "", 1, mFromType, mainInfoId)?.let { uploadRoadInfo(it) }
} else {
}
} else {
}
}
}
@@ -327,34 +360,36 @@ object CarCorderController : TakePhotoCallback, TakeVideoCallback {
//获取视频失败
override fun onTakeVideoFail(camera: Int) {
trackGetVideo(3)
Log.e(TAG, "getVideo onTakeVideoFail")
getVideoFailed?.invoke()
val entity = CustomStatusHandler.pollVideoStatus()
entity?.let {
InformationUploadController.release(it.id)
Log.e(TAG, "getVideo onTakeVideoFail entity?.isCustom =" + it.isCustom)
// if (it.isCustom) {
// sendGetInfoFailedReceiver(mType)
// }
}
// trackGetVideo(3)
// Log.e(TAG, "getVideo onTakeVideoFail")
// getVideoFailed?.invoke()
// val entity = CustomStatusHandler.pollVideoStatus()
//
// entity?.let {
// InformationUploadController.release(it.id)
// Log.e(TAG, "getVideo onTakeVideoFail entity?.isCustom =" + it.isCustom)
//// if (it.isCustom) {
//// sendGetInfoFailedReceiver(mType)
//// }
// }
//失败了,传空地址,发起请求
videoAndThumbMap["video"] = ""
videoAndThumbMap["thumb"] = ""
// videoAndThumbMap["video"] = ""
// videoAndThumbMap["thumb"] = ""
CosStatusController().sendInformationDirectly(
INFO_TYPE_VIDEO,
videoAndThumbMap,
mType,
entity,
mainInfoId,
mLongitude,
mLatitude,
mSpeed,
mFromType
)
// CosStatusController().sendInformationDirectly(
// INFO_TYPE_VIDEO,
// videoAndThumbMap,
// mType,
// entity,
// mainInfoId,
// mLongitude,
// mLatitude,
// mSpeed,
// mFromType
// )
getInfo("", "", mLongitude, mLatitude, mType, 1.0f, "", "", 1, mFromType, mainInfoId)?.let { uploadRoadInfo(it) }
//地图上打点
taskAsync(3_000) {
@@ -369,43 +404,83 @@ object CarCorderController : TakePhotoCallback, TakeVideoCallback {
/**
* 压缩视频并且上传
*/
private fun compressVideo(videoPath: String, thumbnailPath: String, entity: TakeEntity) {
Log.d(
TAG,
"outputVideoPath = " + outputVideoPath + ">> videoPath=" + videoPath + " isCustom = ${entity.isCustom}"
)
val startTime = System.currentTimeMillis()
Thread(Runnable {
try {
VideoProcessor.processor(AbsMogoApplication.getApp().applicationContext)
.input(videoPath)
.output(outputVideoPath)
.removeAudio(true)
.outWidth(1920)
.outHeight(1080)
.bitrate(2000 * 1024)
.frameRate(25)
.process()
Log.d(TAG, "compress cost time =" + (System.currentTimeMillis() - startTime))
CosStatusController().uploadFile(
mutableListOf(outputVideoPath, thumbnailPath),
entity,
mType,
mainInfoId,
mFromType,
mLongitude,
mLatitude,
mSpeed
)
//删除压缩前的视频
deletePicFile(videoPath)
} catch (e: Exception) {
Log.e(TAG, "compressVideo e = $e")
//删除压缩前的视频
deletePicFile(videoPath)
e.printStackTrace()
// private fun compressVideo(videoPath: String, thumbnailPath: String, entity: TakeEntity) {
// Log.d(
// TAG,
// "outputVideoPath = " + outputVideoPath + ">> videoPath=" + videoPath + " isCustom = ${entity.isCustom}"
// )
// val startTime = System.currentTimeMillis()
// Thread(Runnable {
// try {
// VideoProcessor.processor(AbsMogoApplication.getApp().applicationContext)
// .input(videoPath)
// .output(outputVideoPath)
// .removeAudio(true)
// .outWidth(1920)
// .outHeight(1080)
// .bitrate(2000 * 1024)
// .frameRate(25)
// .process()
// Log.d(TAG, "compress cost time =" + (System.currentTimeMillis() - startTime))
// CosStatusController().uploadFile(
// mutableListOf(outputVideoPath, thumbnailPath),
// entity,
// mType,
// mainInfoId,
// mFromType,
// mLongitude,
// mLatitude,
// mSpeed
// )
//
// //删除压缩前的视频
// deletePicFile(videoPath)
// } catch (e: Exception) {
// Log.e(TAG, "compressVideo e = $e")
// //删除压缩前的视频
// deletePicFile(videoPath)
// e.printStackTrace()
// }
// }).start()
// }
/**
* 上报路况的视频和图片
*/
fun uploadRoadInfo(info: UploadInfo) {
MogoUploadManager.getInstance(AbsMogoApplication.getApp().applicationContext).uploadInfo(info, object : ITanluUploadCallback {
override fun onSuccess(result: BaseData<UploadResult>) {
}
}).start()
override fun onFailure(code: Int) {
}
override fun onError(e: Throwable) {
}
})
}
private fun getInfo(filePath: String, addr: String, lon: Double, lat: Double, poiType: String,
direction: Float, areaCode: String, cityCode: String, type: Int, fromType: String
, mainInfoId: Long): UploadInfo? {
val info = UploadInfo()
info.filePath = filePath
info.addr = addr
info.longitude = lon
info.latitude = lat
info.poiType = poiType
info.direction = direction
info.areaCode = areaCode
info.cityCode = cityCode
info.sn = Utils.getSn()
info.type = type //0为图片 1为视频
info.fromType = fromType
info.mainInfoId = mainInfoId
return info
}
override fun onTakePhotoCancel(photoType: Int, camera: Int) {
@@ -419,17 +494,20 @@ object CarCorderController : TakePhotoCallback, TakeVideoCallback {
videoAndThumbMap["video"] = ""
videoAndThumbMap["thumb"] = ""
CosStatusController().sendInformationDirectly(
INFO_TYPE_VIDEO,
videoAndThumbMap,
mType,
entity,
mainInfoId,
mLongitude,
mLatitude,
mSpeed,
mFromType
)
// CosStatusController().sendInformationDirectly(
// INFO_TYPE_VIDEO,
// videoAndThumbMap,
// mType,
// entity,
// mainInfoId,
// mLongitude,
// mLatitude,
// mSpeed,
// mFromType
// )
getInfo("", "", mLongitude, mLatitude, mType, 1.0f, "", "", 1, mFromType, mainInfoId)?.let { uploadRoadInfo(it) }
}
//获取图片

View File

@@ -46,6 +46,7 @@ dependencies {
kapt rootProject.ext.dependencies.aroutercompiler
implementation rootProject.ext.dependencies.rxjava
implementation rootProject.ext.dependencies.rxandroid
implementation rootProject.ext.dependencies.uploadroadinfo
if (Boolean.valueOf(RELEASE)) {
implementation rootProject.ext.dependencies.mogoutils

View File

@@ -287,7 +287,7 @@ public class TanluManager implements IMogoMarkerClickListener,
}
if (voiceData != null) {
mTanluModelData.queryRodeInfo(voiceData, new RoadInfoCallback() {
mTanluModelData.queryRodeInfo(mContext, mKeywords, voiceData, new RoadInfoCallback() {
@Override
public void onQueryRoadInfoSuccess(@NotNull List<? extends MarkerExploreWay> roadInfoList) {
if (roadInfoList == null || (roadInfoList != null && roadInfoList.size() <= 0)) {

View File

@@ -1,6 +1,7 @@
package com.mogo.module.share.callback
import com.mogo.module.common.entity.MarkerExploreWay
import com.mogo.cloud.tanlu.bean.MarkerExploreWay
interface RoadInfoCallback {
fun onLocatSuccess(lat: Double, lon: Double)

View File

@@ -1,7 +1,12 @@
package com.mogo.module.share.net;
import android.content.Context;
import com.alibaba.android.arouter.launcher.ARouter;
import com.google.gson.Gson;
import com.mogo.cloud.network.BaseData;
import com.mogo.cloud.tanlu.api.IRoadInfoSearchCallback;
import com.mogo.cloud.tanlu.api.MogoRoadSearchManager;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.commons.network.ParamsProvider;
import com.mogo.commons.network.SubscribeImpl;
@@ -27,6 +32,7 @@ import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.RequestOptions;
import com.mogo.utils.network.utils.GsonUtil;
import java.util.ArrayList;
import java.util.Map;
import io.reactivex.Observable;
@@ -73,111 +79,148 @@ public class TanluModelData {
*
* @param voiceCmdData 语音提供的语义封装
*/
public void queryRodeInfo(final VoiceCmdData voiceCmdData, final RoadInfoCallback callback) {
public void queryRodeInfo(Context context, String key, final VoiceCmdData voiceCmdData, final RoadInfoCallback callback) {
Logger.d(TAG, "queryRodeInfo: " + voiceCmdData);
if (voiceCmdData.isHere()) {
// 搜索附近路况,只需要拿到当前位置信息,就可以请求服务端
MogoLocation l = TanluServiceManager.getServiceApis().getMapServiceApi().getSingletonLocationClient(mContext).getLastKnowLocation();
Location location = new Location(l.getLatitude(), l.getLongitude());
callback.onLocatSuccess(l.getLatitude(), l.getLongitude());
RoadInfoRequest request;
if (voiceCmdData.getObj().equals(TYPE_NAME_BLOCK)) {
// 拥堵和路况同时查
request = new RoadInfoRequest(location, new String[]{TANLU_ROAD_CONGESTION_COMPAT, TANLU_ROAD_CURRENT}, false, false);
}else{
request = new RoadInfoRequest(location, new String[]{voiceCmdData.getType()}, false, false);
ArrayList list = new ArrayList();
list.add(voiceCmdData.getType());
//北京市朝阳区小黄庄北街2号 经纬度和地理位置必须有一个
MogoLocation mogoLocation = TanluServiceManager.getServiceApis().getMapServiceApi().getSingletonLocationClient(mContext).getLastKnowLocation();
com.mogo.cloud.tanlu.bean.location.Location location = new com.mogo.cloud.tanlu.bean.location.Location();
location.setLatitude(mogoLocation.getLatitude());
location.setLongitude(mogoLocation.getLongitude());
com.mogo.cloud.tanlu.bean.RoadInfoRequest request = new com.mogo.cloud.tanlu.bean.RoadInfoRequest(location, key, list, false, false);
MogoRoadSearchManager.getInstance(context).init();
MogoRoadSearchManager.getInstance(context).queryRoadInfo(request, new IRoadInfoSearchCallback() {
@Override
public void onSuccess(BaseData<com.mogo.cloud.tanlu.bean.RoadInfos> result) {
if (result != null) {
if (result.getResult() != null) {
Logger.d(TAG, "搜索附近路况信息成功: " + result.getResult());
callback.onQueryRoadInfoSuccess(result.getResult().getData());
} else {
callback.onQueryRoadInfoFail(result.getMsg(), result.getCode());
}
}
}
Map<String, Object> params = new ParamsProvider.Builder(mContext)
.append("sn", Utils.getSn())
.append("data", GsonUtil.jsonFromObject(request))
.build();
@Override
public void onFailure(int code) {
callback.onQueryRoadInfoFail("", code);
}
mShareApiService.queryRoadInfos(params)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseDataCompat<RoadInfos>>(RequestOptions.create(mContext)) {
@Override
public void onError(Throwable e) {
super.onError(e);
}
@Override
public void onError(Throwable e) {
@Override
public void onSuccess(BaseDataCompat<RoadInfos> o) {
super.onSuccess(o);
Logger.d(TAG, "搜索附近路况信息成功: " + o);
callback.onQueryRoadInfoSuccess(o.getResult().getData());
Logger.d(TAG, "搜索附近路况信息成功2: " + o);
}
}
});
@Override
public void onError(String message, int code) {
super.onError(message, code);
callback.onQueryRoadInfoFail(message, code);
}
});
} else {
// 查询的不是附近的信息,所以需要查询一下目标地址的经纬度,然后再请求服务端
Observable.create(new ObservableOnSubscribe<MogoPoiResult>() {
@Override
public void subscribe(ObservableEmitter<MogoPoiResult> emitter) throws Exception {
// 根据传入的地址,转成经纬度
IMogoMapService mapService = TanluServiceManager.getServiceApis().getMapServiceApi();
String cityCode = mapService.getSingletonLocationClient(mContext).getLastKnowLocation().getCityCode();
MogoPoiSearchQuery poiSearchQuery = new MogoPoiSearchQuery(voiceCmdData.getLocation(), "", cityCode);
IMogoPoiSearch poiSearch = mapService.getPoiSearch(mContext, poiSearchQuery);
MogoPoiResult result = poiSearch.searchPOI();
if (result != null && result.getPois() != null && result.getPois().size() > 0) {
emitter.onNext(result);
} else {
emitter.onError(new IllegalArgumentException("没有根据地址查询到对应的经纬度"));
}
}
}).subscribeOn(Schedulers.io()).observeOn(Schedulers.io())
.flatMap(new Function<MogoPoiResult, Observable<BaseDataCompat<RoadInfos>>>() {
@Override
public Observable<BaseDataCompat<RoadInfos>> apply(MogoPoiResult mogoPoiResult) throws Exception {
// 转成经纬度后,整理参数,进行接口请求
Logger.d(TAG, "查询目标地址经纬度成功===" + Thread.currentThread().getName());
MogoPoiItem poiItem = mogoPoiResult.getPois().get(0);
Location location = new Location(poiItem.getPoint().lat, poiItem.getPoint().lon);
callback.onLocatSuccess(location.getLat(), location.getLon());
RoadInfoRequest request;
if (voiceCmdData.getObj().equals(TYPE_NAME_BLOCK)) {
// 拥堵和路况同时查
request = new RoadInfoRequest(location, new String[]{TANLU_ROAD_CONGESTION_COMPAT, TANLU_ROAD_CURRENT}, false, false);
}else{
request = new RoadInfoRequest(location, new String[]{voiceCmdData.getType()}, false, false);
}
Map<String, Object> params = new ParamsProvider.Builder(mContext)
.append("sn", Utils.getSn())
.append("data", GsonUtil.jsonFromObject(request))
.build();
return mShareApiService.queryRoadInfos(params);
}
}).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseDataCompat<RoadInfos>>(RequestOptions.create(mContext)) {
@Override
public void onError(Throwable e) {
super.onError(e);
callback.onQueryRoadInfoFail(e.getMessage(), -1);
}
@Override
public void onSuccess(BaseDataCompat<RoadInfos> o) {
super.onSuccess(o);
Logger.d(TAG, "当前线程为"+Thread.currentThread().getName()+" 搜索目标地址路况信息成功: " + o);
callback.onQueryRoadInfoSuccess(o.getResult().getData());
}
@Override
public void onError(String message, int code) {
super.onError(message, code);
callback.onQueryRoadInfoFail(message, code);
}
});
}
// if (voiceCmdData.isHere()) {
// // 搜索附近路况,只需要拿到当前位置信息,就可以请求服务端
// MogoLocation l = TanluServiceManager.getServiceApis().getMapServiceApi().getSingletonLocationClient(mContext).getLastKnowLocation();
// Location location = new Location(l.getLatitude(), l.getLongitude());
// callback.onLocatSuccess(l.getLatitude(), l.getLongitude());
// RoadInfoRequest request;
// if (voiceCmdData.getObj().equals(TYPE_NAME_BLOCK)) {
// // 拥堵和路况同时查
// request = new RoadInfoRequest(location, new String[]{TANLU_ROAD_CONGESTION_COMPAT, TANLU_ROAD_CURRENT}, false, false);
// }else{
// request = new RoadInfoRequest(location, new String[]{voiceCmdData.getType()}, false, false);
// }
//
// Map<String, Object> params = new ParamsProvider.Builder(mContext)
// .append("sn", Utils.getSn())
// .append("data", GsonUtil.jsonFromObject(request))
// .build();
//
// mShareApiService.queryRoadInfos(params)
// .subscribeOn(Schedulers.io())
// .observeOn(AndroidSchedulers.mainThread())
// .subscribe(new SubscribeImpl<BaseDataCompat<RoadInfos>>(RequestOptions.create(mContext)) {
// @Override
// public void onError(Throwable e) {
// super.onError(e);
// }
//
// @Override
// public void onSuccess(BaseDataCompat<RoadInfos> o) {
// super.onSuccess(o);
// Logger.d(TAG, "搜索附近路况信息成功: " + o);
// callback.onQueryRoadInfoSuccess(o.getResult().getData());
// Logger.d(TAG, "搜索附近路况信息成功2: " + o);
// }
//
// @Override
// public void onError(String message, int code) {
// super.onError(message, code);
// callback.onQueryRoadInfoFail(message, code);
// }
// });
// } else {
// // 查询的不是附近的信息,所以需要查询一下目标地址的经纬度,然后再请求服务端
// Observable.create(new ObservableOnSubscribe<MogoPoiResult>() {
// @Override
// public void subscribe(ObservableEmitter<MogoPoiResult> emitter) throws Exception {
// // 根据传入的地址,转成经纬度
// IMogoMapService mapService = TanluServiceManager.getServiceApis().getMapServiceApi();
// String cityCode = mapService.getSingletonLocationClient(mContext).getLastKnowLocation().getCityCode();
// MogoPoiSearchQuery poiSearchQuery = new MogoPoiSearchQuery(voiceCmdData.getLocation(), "", cityCode);
// IMogoPoiSearch poiSearch = mapService.getPoiSearch(mContext, poiSearchQuery);
// MogoPoiResult result = poiSearch.searchPOI();
// if (result != null && result.getPois() != null && result.getPois().size() > 0) {
// emitter.onNext(result);
// } else {
// emitter.onError(new IllegalArgumentException("没有根据地址查询到对应的经纬度"));
// }
// }
// }).subscribeOn(Schedulers.io()).observeOn(Schedulers.io())
// .flatMap(new Function<MogoPoiResult, Observable<BaseDataCompat<RoadInfos>>>() {
// @Override
// public Observable<BaseDataCompat<RoadInfos>> apply(MogoPoiResult mogoPoiResult) throws Exception {
// // 转成经纬度后,整理参数,进行接口请求
// Logger.d(TAG, "查询目标地址经纬度成功===" + Thread.currentThread().getName());
// MogoPoiItem poiItem = mogoPoiResult.getPois().get(0);
// Location location = new Location(poiItem.getPoint().lat, poiItem.getPoint().lon);
// callback.onLocatSuccess(location.getLat(), location.getLon());
// RoadInfoRequest request;
// if (voiceCmdData.getObj().equals(TYPE_NAME_BLOCK)) {
// // 拥堵和路况同时查
// request = new RoadInfoRequest(location, new String[]{TANLU_ROAD_CONGESTION_COMPAT, TANLU_ROAD_CURRENT}, false, false);
// }else{
// request = new RoadInfoRequest(location, new String[]{voiceCmdData.getType()}, false, false);
// }
//
// Map<String, Object> params = new ParamsProvider.Builder(mContext)
// .append("sn", Utils.getSn())
// .append("data", GsonUtil.jsonFromObject(request))
// .build();
// return mShareApiService.queryRoadInfos(params);
// }
// }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
// .subscribe(new SubscribeImpl<BaseDataCompat<RoadInfos>>(RequestOptions.create(mContext)) {
// @Override
// public void onError(Throwable e) {
// super.onError(e);
// callback.onQueryRoadInfoFail(e.getMessage(), -1);
// }
//
// @Override
// public void onSuccess(BaseDataCompat<RoadInfos> o) {
// super.onSuccess(o);
// Logger.d(TAG, "当前线程为"+Thread.currentThread().getName()+" 搜索目标地址路况信息成功: " + o);
// callback.onQueryRoadInfoSuccess(o.getResult().getData());
// }
//
// @Override
// public void onError(String message, int code) {
// super.onError(message, code);
// callback.onQueryRoadInfoFail(message, code);
// }
// });
// }
}
}