修改故障求助marker显示实现方式

修改自车图标设置实现
This commit is contained in:
tongchenfei
2020-11-17 17:48:52 +08:00
parent f19c407b82
commit 491c947759
12 changed files with 254 additions and 62 deletions

View File

@@ -6,8 +6,11 @@ package com.mogo.module.common.entity;
* @author tongchenfei
*/
public class OwnCarModelEntity {
private boolean isLocked;
private String ownCarLocationUrl;
private String adasCarModelUrl;
/**
* 图片锁定 1-是 0-否
*/
private int isLock;
private String imageUrl;
private String imageName;
private int level;
}

View File

@@ -31,12 +31,14 @@ import com.mogo.service.MogoServicePaths;
import com.mogo.service.network.IMogoNetwork;
import com.mogo.service.statusmanager.IMogoMsgCenter;
import com.mogo.service.statusmanager.IMogoMsgCenterListener;
import com.mogo.utils.DeviceIdUtils;
import com.mogo.utils.digest.DigestUtils;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.RequestOptions;
import com.mogo.utils.network.utils.GsonUtil;
import com.mogo.utils.storage.SharedPrefsMgr;
import java.util.HashMap;
import java.util.Map;
import io.reactivex.SingleObserver;
@@ -240,14 +242,17 @@ public class EntrancePresenter extends Presenter<EntranceView> implements Weathe
}
private void requestCarModelList() {
Map<String, String> params = new HashMap<>(8);
params.put("sn", Utils.getSn());
mNetWork.create(UserInfoNetApiServices.class, DztHttpConstant.getBaseUrl()).
requestCarModelList().
requestCarModelList(params).
subscribeOn(Schedulers.io()).
observeOn(Schedulers.io()).
subscribe(new SubscribeImpl<CarModelListResponse>(RequestOptions.create(context)) {
@Override
public void onSuccess(CarModelListResponse o) {
super.onSuccess(o);
Logger.d(TAG, "请求车模列表成功: " + o);
// todo 保存到sp中
SharedPrefsMgr.getInstance(context).putString("CAR_MODEL_LIST",
GsonUtil.jsonFromObject(o.getResult()));
@@ -265,6 +270,7 @@ public class EntrancePresenter extends Presenter<EntranceView> implements Weathe
Logger.e(TAG, "请求自车模型失败: " + message);
}
});
}
}

View File

@@ -25,5 +25,5 @@ public interface UserInfoNetApiServices {
Single<UserInfoResponse> requestUserInfo(@QueryMap Map<String, String> params);
@GET("carlife/carMachine/getAccountInfo")
Observable<CarModelListResponse> requestCarModelList();
Observable<CarModelListResponse> requestCarModelList(@QueryMap Map<String, String> params);
}

View File

@@ -0,0 +1,38 @@
package com.mogo.module.extensions.userinfo;
import com.mogo.module.common.entity.OwnCarModelEntity;
import java.util.List;
public class CarModelListInfo {
private String sn;
/**
* 热心指数 eg: 1 1.5 2 2.5
*/
private float enthusiasmIndex;
private List<OwnCarModelEntity> imageData;
public String getSn() {
return sn;
}
public void setSn(String sn) {
this.sn = sn;
}
public float getEnthusiasmIndex() {
return enthusiasmIndex;
}
public void setEnthusiasmIndex(float enthusiasmIndex) {
this.enthusiasmIndex = enthusiasmIndex;
}
public List<OwnCarModelEntity> getImageData() {
return imageData;
}
public void setImageData(List<OwnCarModelEntity> imageData) {
this.imageData = imageData;
}
}

View File

@@ -11,13 +11,13 @@ import java.util.List;
* @author tongchenfei
*/
public class CarModelListResponse extends BaseData {
private List<OwnCarModelEntity> result;
private CarModelListInfo result;
public List<OwnCarModelEntity> getResult() {
public CarModelListInfo getResult() {
return result;
}
public void setResult(List<OwnCarModelEntity> result) {
public void setResult(CarModelListInfo result) {
this.result = result;
}
}

View File

@@ -54,17 +54,19 @@ class ADASStatusIntentHandler implements IntentHandler {
}
int status = intent.getIntExtra( MogoReceiver.PARAM_ADAS_STATUS, 0 );
MarkerServiceHandler.getMogoStatusManager().setADASUIShow( ServiceConst.TYPE, status == 1 );
} else {
String msg = intent.getStringExtra( "adasMsg" );
if ( TextUtils.isEmpty( msg ) ) {
return;
}
CarStateInfo stateInfo = GsonUtil.objectFromJson( msg, CarStateInfo.class );
if ( stateInfo != null ) {
changeCarHeadstockDirection( context, stateInfo.getValues().getHeading() );
// changeMyLocation( stateInfo.getValues() );
}
}
// 由于adas可能调高此处的调用频率存在anr风险且此处没有作用所以暂时注释掉
// else {
// String msg = intent.getStringExtra( "adasMsg" );
// if ( TextUtils.isEmpty( msg ) ) {
// return;
// }
// CarStateInfo stateInfo = GsonUtil.objectFromJson( msg, CarStateInfo.class );
// if ( stateInfo != null ) {
// changeCarHeadstockDirection( context, stateInfo.getValues().getHeading() );
// // changeMyLocation( stateInfo.getValues() );
// }
// }
}
private void changeCarHeadstockDirection( final Context context, final double degree ) {

View File

@@ -104,16 +104,17 @@ public class CarIconDisplayStrategy {
private static volatile CarIconDisplayStrategy sInstance;
private IMogoMarker mSeekHelpingMarker;
private ArrayList< Bitmap > mBitmapFrames = new ArrayList<>();
private ArrayList<Bitmap> mBitmapFrames = new ArrayList<>();
private CarIconDisplayStrategy() {
mOption = new CarCursorOption.Builder().carCursorRes( R.drawable.module_service_ic_seek_helping ).build();
mOption =
new CarCursorOption.Builder().carCursorRes(R.drawable.module_service_ic_seek_helping).build();
}
public static CarIconDisplayStrategy getInstance() {
if ( sInstance == null ) {
synchronized ( CarIconDisplayStrategy.class ) {
if ( sInstance == null ) {
if (sInstance == null) {
synchronized (CarIconDisplayStrategy.class) {
if (sInstance == null) {
sInstance = new CarIconDisplayStrategy();
}
}
@@ -127,19 +128,41 @@ public class CarIconDisplayStrategy {
private Handler mSeekHelpingHandler;
private CarCursorOption mOption;
private MogoMarkerOptions seekHelpMarkerOptions;
// private IMogoMarker seekHelpMarker;
public void changeCarIconStatus( boolean seekHelpingStatus ) {
if ( CarSeries.isF8xxSeries() ) {
if ( seekHelpingStatus ) {
public void changeCarIconStatus(boolean seekHelpingStatus) {
if (CarSeries.isF8xxSeries()) {
if (seekHelpingStatus) {
playSeekHelpingAnim();
} else {
stopSeekHelpingAnim();
}
} else {
if ( seekHelpingStatus ) {
MarkerServiceHandler.getMapUIController().setCarCursorOption( mOption );
if (seekHelpingStatus) {
MarkerServiceHandler.getMapUIController().showMyLocation(false);
mSeekHelpingMarker = MarkerServiceHandler.getMarkerManager().addMarker(
TAG,
new MogoMarkerOptions()
.icon(BitmapFactory.decodeResource(AbsMogoApplication.getApp().getResources(), R.drawable.module_service_ic_seek_helping))
.period(1)
.zIndex(1000)
.autoManager(false)
.anchor(0.5f, 0.5f)
.position(MarkerServiceHandler.getMapService().getNavi(AbsMogoApplication.getApp()).getCarLocation2()));
// MarkerServiceHandler.getMapUIController().setCarCursorOption( mOption );
} else {
MarkerServiceHandler.getMapUIController().setCarCursorOption( null );
MarkerServiceHandler.getMapUIController().showMyLocation(true);
try {
if (mSeekHelpingMarker != null) {
mSeekHelpingMarker.destroy();
mSeekHelpingMarker = null;
}
} catch (Exception e) {
e.printStackTrace();
}
// MarkerServiceHandler.getMapUIController().setCarCursorOption(null);
}
}
}
@@ -148,29 +171,29 @@ public class CarIconDisplayStrategy {
initHandler();
Message msg = Message.obtain();
msg.what = MSG_SEEK_HELPING_ANIM;
mSeekHelpingHandler.sendMessageDelayed( msg, 0 );
mSeekHelpingHandler.sendMessageDelayed(msg, 0);
}
private void initHandler() {
if ( mSeekHelpingHandler != null ) {
if (mSeekHelpingHandler != null) {
return;
}
mSeekHelpingHandler = new Handler( WorkThreadHandler.getInstance().getLooper() ) {
mSeekHelpingHandler = new Handler(WorkThreadHandler.getInstance().getLooper()) {
@Override
public void handleMessage( Message msg ) {
super.handleMessage( msg );
switch ( msg.what ) {
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case MSG_SEEK_HELPING_ANIM:
try {
playAnim();
} catch ( Exception e ) {
} catch (Exception e) {
e.printStackTrace();
}
break;
case MSG_STOP_SEEK_HELPING_ANIM:
try {
stopAnim();
} catch ( Exception e ) {
} catch (Exception e) {
e.printStackTrace();
}
break;
@@ -183,48 +206,59 @@ public class CarIconDisplayStrategy {
initHandler();
Message msg = Message.obtain();
msg.what = MSG_STOP_SEEK_HELPING_ANIM;
mSeekHelpingHandler.sendMessageDelayed( msg, 0 );
mSeekHelpingHandler.sendMessageDelayed(msg, 0);
}
private void playAnim() {
try {
for ( int i : sFrame ) {
mBitmapFrames.add( BitmapFactory.decodeResource( AbsMogoApplication.getApp().getResources(), i ) );
for (int i : sFrame) {
mBitmapFrames.add(BitmapFactory.decodeResource(AbsMogoApplication.getApp().getResources(), i));
}
mSeekHelpingMarker = MarkerServiceHandler.getMarkerManager().addMarker( TAG, new MogoMarkerOptions()
.icons( mBitmapFrames )
.period( 1 )
.zIndex( 1000 )
.autoManager( false )
.anchor( 0.5f, 0.5f )
.position( MarkerServiceHandler.getMapService().getNavi( AbsMogoApplication.getApp() ).getCarLocation2() ) );
} catch ( Exception e ) {
MarkerServiceHandler.getMapUIController().setCarCursorOption( new CarCursorOption.Builder().carCursorRes( R.drawable.module_service_ic_seek_helping_00036 ).build() );
mSeekHelpingMarker = MarkerServiceHandler.getMarkerManager().addMarker(TAG,
new MogoMarkerOptions()
.icons(mBitmapFrames)
.period(1)
.zIndex(1000)
.autoManager(false)
.anchor(0.5f, 0.5f)
.position(MarkerServiceHandler.getMapService().getNavi(AbsMogoApplication.getApp()).getCarLocation2()));
} catch (Exception e) {
e.printStackTrace();
mSeekHelpingMarker = MarkerServiceHandler.getMarkerManager().addMarker(
TAG,
new MogoMarkerOptions()
.icon(BitmapFactory.decodeResource(AbsMogoApplication.getApp().getResources(), R.drawable.module_service_ic_seek_helping))
.period(1)
.zIndex(1000)
.autoManager(false)
.anchor(0.5f, 0.5f)
.position(MarkerServiceHandler.getMapService().getNavi(AbsMogoApplication.getApp()).getCarLocation2()));
// MarkerServiceHandler.getMapUIController().setCarCursorOption(new CarCursorOption.Builder().carCursorRes(R.drawable.module_service_ic_seek_helping_00036).build());
}
MarkerServiceHandler.getMapUIController().showMyLocation( false );
MarkerServiceHandler.getMapUIController().showMyLocation(false);
}
private void stopAnim() {
try {
if ( mSeekHelpingMarker != null ) {
if (mSeekHelpingMarker != null) {
mSeekHelpingMarker.destroy();
mSeekHelpingMarker = null;
}
} catch ( Exception e ) {
} catch (Exception e) {
}
try {
if ( !mBitmapFrames.isEmpty() ) {
for ( Bitmap bitmapFrame : mBitmapFrames ) {
if ( bitmapFrame != null && !bitmapFrame.isRecycled() ) {
if (!mBitmapFrames.isEmpty()) {
for (Bitmap bitmapFrame : mBitmapFrames) {
if (bitmapFrame != null && !bitmapFrame.isRecycled()) {
bitmapFrame.recycle();
}
}
mBitmapFrames.clear();
}
} catch ( Exception e ) {
} catch (Exception e) {
}
MarkerServiceHandler.getMapUIController().showMyLocation( true );
MarkerServiceHandler.getMapUIController().showMyLocation(true);
}
}