This commit is contained in:
unknown
2020-09-24 20:01:51 +08:00
57 changed files with 588 additions and 62 deletions

2
.idea/misc.xml generated
View File

@@ -4,7 +4,7 @@
<asm skipDebug="false" skipFrames="false" skipCode="false" expandFrames="false" />
<groovy codeStyle="LEGACY" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="JDK" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
</project>

View File

@@ -86,6 +86,9 @@ android {
// 是否作为 launcher 运行
buildConfigField 'boolean', 'IS_LAUNCHER', 'false'
buildConfigField 'String', 'SOCKET_APP_ID', '\"com.mogo.launcher\"'
// 是否支持目的地导航策略
buildConfigField 'boolean', 'IS_SUPPORT_SCHEDULE_CALCULATE_NOT_HOME_COMPANY_DISTANCE_FOR_PUSH', 'true'
}
// launcher app
launcher {
@@ -95,6 +98,8 @@ android {
// 是否作为 launcher 运行
buildConfigField 'boolean', 'IS_LAUNCHER', 'true'
buildConfigField 'String', 'SOCKET_APP_ID', '\"com.mogo.launcher\"'
// 是否支持目的地导航策略
buildConfigField 'boolean', 'IS_SUPPORT_SCHEDULE_CALCULATE_NOT_HOME_COMPANY_DISTANCE_FOR_PUSH', 'false'
}
// f系列-分体机全系列,未细分
f8xx {
@@ -113,6 +118,8 @@ android {
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true'
// 是否支持查询导航目的地车友
buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true'
// 是否支持桌面卡片刷新
buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'false'
}
// f系列-分体机
f80x {
@@ -131,6 +138,8 @@ android {
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true'
// 是否支持查询导航目的地车友
buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true'
// 是否支持桌面卡片刷新
buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'false'
}
// e系列采用Launcher方案
e8xx {
@@ -149,6 +158,8 @@ android {
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true'
// 是否支持查询导航目的地车友
buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true'
// 是否支持桌面卡片刷新
buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'false'
}
// 同上
em4 {
@@ -167,6 +178,8 @@ android {
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true'
// 是否支持查询导航目的地车友
buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true'
// 是否支持桌面卡片刷新
buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'false'
}
// e系列-2+32对标D系列2+32采用独立app的形式
em3 {
@@ -185,6 +198,8 @@ android {
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'false'
// 是否支持查询导航目的地车友
buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true'
// 是否支持桌面卡片刷新
buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'true'
}
// e系列-1+16对标D系列1+16采用独立app形式
em1 {
@@ -203,6 +218,8 @@ android {
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'false'
// 是否支持查询导航目的地车友
buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true'
// 是否支持桌面卡片刷新
buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'true'
}
// d系列
d8xx {
@@ -239,6 +256,8 @@ android {
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true'
// 是否支持查询导航目的地车友
buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true'
// 是否支持桌面卡片刷新
buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'true'
}
// d系列 1+16 版本
d82x {
@@ -257,6 +276,8 @@ android {
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'false'
// 是否支持查询导航目的地车友
buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true'
// 是否支持桌面卡片刷新
buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'true'
}
// 比亚迪
bydauto {
@@ -275,6 +296,8 @@ android {
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'false'
// 是否支持查询导航目的地车友
buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'false'
// 是否支持桌面卡片刷新
buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'false'
}
qa {
dimension "env"

View File

@@ -126,6 +126,8 @@ public class MogoApplication extends AbsMogoApplication {
DebugConfig.setRoadEventAnimated( BuildConfig.ROAD_EVENT_ANIMATED );
DebugConfig.setSkinSupported( BuildConfig.IS_SKIN_SUPPORTED );
DebugConfig.setSupportedSearchDestinationOnlineCarList( BuildConfig.IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST );
DebugConfig.setScheduleCalculateNotHomeCompanyDistanceForPush( BuildConfig.IS_SUPPORT_SCHEDULE_CALCULATE_NOT_HOME_COMPANY_DISTANCE_FOR_PUSH );
DebugConfig.setSupportLauncherCardRefreshStrategy( BuildConfig.IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY );
}
@Override

View File

@@ -133,7 +133,7 @@ targetSdkVersion : 22,
jetbrainsannotationsjava5 : "org.jetbrains:annotations-java5:15.0",
// 统一登录
accountsdk : "com.zhidao.accountservice:account-sdk:1.0.11",
accountsdk : "com.zhidao.accountservice:account-sdk:1.0.14",
// crash
crashSdk : "com.zhidaoauto.crash.log:library:1.0.5",
kotlinstdlibjdk7 : "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${kotlin_version}",

View File

@@ -10,6 +10,7 @@ import com.mogo.service.passport.IMogoPassportManager;
import com.mogo.service.passport.IMogoTicketCallback;
import com.mogo.utils.logger.Logger;
import com.zhidao.account.sdk.AccountClientManager;
import com.zhidao.account.sdk.BusinessType;
import com.zhidao.account.sdk.Environment;
import com.zhidao.account.sdk.callback.TicketInfoCallback;
import com.zhidao.account.sdk.network.NetEnvironManager;
@@ -70,16 +71,12 @@ class PassportManager implements IMogoPassportManager {
}
private static void getTicket( TicketInfoCallback callback ) {
if ( DebugConfig.isLauncher() ) {
AccountClientManager.getTicket( callback );
} else {
AccountClientManager.getAppTicket( callback );
}
AccountClientManager.getTicket( callback );
}
@Override
public void init( Context context ) {
AccountClientManager.init( context.getApplicationContext(), getNetEnvironment(), NetEnvironManager.OS_2C, "os2.0-launcher" );
AccountClientManager.init( context.getApplicationContext(), getNetEnvironment(), BusinessType.toc_login, "os2.0-launcher" );
}
private Environment getNetEnvironment() {

View File

@@ -279,4 +279,30 @@ public class DebugConfig {
public static boolean isSupportedSearchDestinationOnlineCarList() {
return isSupportedSearchDestinationOnlineCarList;
}
/**
* 是否支持目的地导航推送策略
*/
private static boolean isScheduleCalculateNotHomeCompanyDistanceForPush = false;
public static void setScheduleCalculateNotHomeCompanyDistanceForPush( boolean isScheduleCalculateNotHomeCompanyDistanceForPush ) {
DebugConfig.isScheduleCalculateNotHomeCompanyDistanceForPush = isScheduleCalculateNotHomeCompanyDistanceForPush;
}
public static boolean isIsScheduleCalculateNotHomeCompanyDistanceForPush() {
return isScheduleCalculateNotHomeCompanyDistanceForPush;
}
/**
* 是否支持刷新桌面卡片
*/
private static boolean isSupportLauncherCardRefreshStrategy = false;
public static void setSupportLauncherCardRefreshStrategy( boolean isSupportLauncherCardRefreshStrategy ) {
DebugConfig.isSupportLauncherCardRefreshStrategy = isSupportLauncherCardRefreshStrategy;
}
public static boolean isIsSupportLauncherCardRefreshStrategy() {
return isSupportLauncherCardRefreshStrategy;
}
}

View File

@@ -33,6 +33,7 @@ dependencies {
implementation rootProject.ext.dependencies.androidxrecyclerview
implementation rootProject.ext.dependencies.androidxconstraintlayout
implementation rootProject.ext.dependencies.arouter
implementation rootProject.ext.dependencies.carcallprovider
if (Boolean.valueOf(RELEASE)) {
api rootProject.ext.dependencies.mogomap
api rootProject.ext.dependencies.mogomapapi

View File

@@ -0,0 +1,78 @@
package com.mogo.module.common.api;
import android.content.Context;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.module.carchattingprovider.ICarsChattingProvider;
import com.mogo.module.common.entity.MarkerOnlineCar;
import com.mogo.utils.logger.Logger;
import com.zhidao.carchattingprovider.MogoDriverInfo;
public
/**
* @author congtaowang
* @since 2020/9/24
*
* 车聊聊接口
*/
class CallChatApi {
private static final String TAG = "CallChatApi";
private static volatile CallChatApi sInstance;
private CallChatApi() {
mApiProvider = ARouter.getInstance().navigation( ICarsChattingProvider.class );
}
public static CallChatApi getInstance() {
if ( sInstance == null ) {
synchronized ( CallChatApi.class ) {
if ( sInstance == null ) {
sInstance = new CallChatApi();
}
}
}
return sInstance;
}
public synchronized void release() {
mApiProvider = null;
sInstance = null;
}
private Object readResolve() {
// 阻止反序列化,必须实现 Serializable 接口
return sInstance;
}
private ICarsChattingProvider mApiProvider;
public void showUserWindow( Context context, MarkerOnlineCar onlineCar ) throws Exception {
if ( mApiProvider == null ) {
Logger.e( TAG, "no call chat api instance." );
return;
}
MogoDriverInfo driverInfo = new MogoDriverInfo();
driverInfo.setAge( onlineCar.getUserInfo().getAgeNumber() );
driverInfo.setCarTypeName( onlineCar.getCarInfo().getCarTypeName() );
driverInfo.setGender( onlineCar.getUserInfo().getGender() );
driverInfo.setLat( onlineCar.getLocation().getLat() );
driverInfo.setLon( onlineCar.getLocation().getLon() );
driverInfo.setLocationInfo( onlineCar.getLocation().getAddress() );
driverInfo.setSn( onlineCar.getUserInfo().getSn() );
driverInfo.setUserHead( onlineCar.getUserInfo().getUserHead() );
driverInfo.setUserName( onlineCar.getUserInfo().getUserName() );
mApiProvider.showUserWindow( TAG, driverInfo, context );
}
public void hideUserWindow( Context context ) {
if ( mApiProvider != null ) {
if ( mApiProvider == null ) {
Logger.e( TAG, "no call chat api instance." );
return;
}
}
mApiProvider.hideUserWindow( TAG, context, null );
}
}

View File

@@ -7,6 +7,7 @@ import android.text.TextUtils;
import android.util.Log;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
@@ -426,17 +427,21 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
*/
@Override
public void onMapChanged(MogoLatLng latLng, float zoom, float tilt, float bearing) {
}
private void showSlideMapVoiceGuide() {
long intervalTime = SharedPrefsMgr.getInstance(getContext()).getLong(KEY_SHARE_INNER_GUIDE_TIME, 0);
int shareItemSum = SharedPrefsMgr.getInstance(getContext()).getInt(KEY_SHARE_INNER_GUIDE, 0);
if (shareItemSum < VOICE_ALERT_COUNT) {
long time = System.currentTimeMillis();
Logger.d(TAG, " onMapChanged shareItemSum = " + shareItemSum + "---- intervalTime = " + intervalTime + "---time = " + time);
Logger.d(TAG, " showSlideMapVoiceGuide shareItemSum = " + shareItemSum + "---- intervalTime = " + intervalTime + "---time = " + time);
if (intervalTime == 0) {
SharedPrefsMgr.getInstance(getContext()).putLong(KEY_SHARE_INNER_GUIDE_TIME, time);
SharedPrefsMgr.getInstance(getContext()).putInt(KEY_SHARE_INNER_GUIDE, ++shareItemSum);
AIAssist.getInstance(getContext()).speakTTSVoice(mInnerGuideVoiceStrings[0]);
} else {
Logger.d(TAG, " onMapChanged else interval = " + (time - intervalTime));
Logger.d(TAG, " showSlideMapVoiceGuide else interval = " + (time - intervalTime));
if ((time - intervalTime) > ONE_DAY_TIME) {
SharedPrefsMgr.getInstance(getContext()).putLong(KEY_SHARE_INNER_GUIDE_TIME, time);
SharedPrefsMgr.getInstance(getContext()).putInt(KEY_SHARE_INNER_GUIDE, ++shareItemSum);
@@ -446,12 +451,30 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
AIAssist.getInstance(getContext()).speakTTSVoice(mInnerGuideVoiceStrings[2]);
}
} else {
Logger.e(TAG, " onMapChanged else < ONE_DAY_TIME ");
Logger.e(TAG, " showSlideMapVoiceGuide else < ONE_DAY_TIME ");
}
}
}
}
@Override
public void onTouch(MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_UP:
if (motionEvent.getX() > 200) {
showSlideMapVoiceGuide();
}
break;
case MotionEvent.ACTION_MOVE:
break;
}
}
/**
* 由于Launcher和Independent对于天气的表现形式不太一样所以通过此方法区分处理

View File

@@ -48,7 +48,6 @@
android:gravity="center_vertical"
android:text="@string/module_ext_destination_online_car_text"
android:visibility="gone"
android:layout_marginLeft="@dimen/module_common_shadow_width_pos"
android:textColor="@color/module_ext_color_voice_text"
android:textSize="@dimen/module_ext_north_textSize"
android:textStyle="bold"

View File

@@ -131,7 +131,7 @@
<dimen name="module_ext_common_corner">30px</dimen>
<dimen name="module_ext_button_width">120px</dimen>
<dimen name="module_ext_button_height">120px</dimen>
<dimen name="module_ext_camera_button_marginTop">30px</dimen>
<dimen name="module_ext_camera_button_marginTop">10px</dimen>
<dimen name="module_ext_display_overview_textSize">22px</dimen>
<dimen name="module_ext_display_overview_textSize_large">28px</dimen>
<dimen name="module_ext_north_textSize">28px</dimen>

View File

@@ -131,7 +131,7 @@
<dimen name="module_ext_common_corner">30px</dimen>
<dimen name="module_ext_button_width">120px</dimen>
<dimen name="module_ext_button_height">120px</dimen>
<dimen name="module_ext_camera_button_marginTop">30px</dimen>
<dimen name="module_ext_camera_button_marginTop">10px</dimen>
<dimen name="module_ext_display_overview_textSize">22px</dimen>
<dimen name="module_ext_display_overview_textSize_large">28px</dimen>
<dimen name="module_ext_north_textSize">28px</dimen>

View File

@@ -137,7 +137,7 @@
<dimen name="module_ext_north_goneMarginTop">142px</dimen>
<dimen name="module_ext_button_width">66px</dimen>
<dimen name="module_ext_button_height">66px</dimen>
<dimen name="module_ext_camera_button_marginTop">16px</dimen>
<dimen name="module_ext_camera_button_marginTop">10px</dimen>
<dimen name="module_ext_display_overview_textSize">12px</dimen>
<dimen name="module_ext_display_overview_textSize_large">14px</dimen>
<dimen name="module_ext_north_textSize">14px</dimen>

View File

@@ -357,5 +357,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
AIAssist.getInstance( this ).release();
mServiceApis.getOnlineCarPanelApi().clear();
ContextHolderUtil.releaseContext();
MogoModulesManager.getInstance().onDestroy();
}
}

View File

@@ -77,4 +77,9 @@ public interface MogoModulesHandler {
* @param containerId
*/
void loadSplashModule(int containerId);
/**
* 释放各个模块资源
*/
void onDestroy();
}

View File

@@ -5,6 +5,7 @@ import android.content.Context;
import androidx.fragment.app.Fragment;
import com.alibaba.android.arouter.launcher.ARouter;
import com.alibaba.idst.nls.internal.utils.L;
import com.mogo.module.common.MogoModule;
import com.mogo.module.common.MogoModulePaths;
import com.mogo.module.extensions.ExtensionsModuleConst;
@@ -16,6 +17,7 @@ import com.mogo.utils.ResourcesHelper;
import com.mogo.utils.logger.Logger;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -131,25 +133,25 @@ public class MogoModulesManager implements MogoModulesHandler {
}
@Override
public void loadEventPanelModule(int containerId) {
public void loadEventPanelModule( int containerId ) {
IMogoModuleProvider provider = ( IMogoModuleProvider ) ARouter.getInstance()
.build(MogoServicePaths.PATH_EVENT_PANEL)
.build( MogoServicePaths.PATH_EVENT_PANEL )
.navigation( getContext() );
addFragment( provider, containerId );
}
@Override
public void loadLeftPanelModule(int containerId) {
public void loadLeftPanelModule( int containerId ) {
IMogoModuleProvider provider = ( IMogoModuleProvider ) ARouter.getInstance()
.build(MogoServicePaths.PATH_LEFT_PANEL)
.build( MogoServicePaths.PATH_LEFT_PANEL )
.navigation( getContext() );
addFragment( provider, containerId );
}
@Override
public void loadSplashModule(int containerId) {
public void loadSplashModule( int containerId ) {
IMogoModuleProvider provider = ( IMogoModuleProvider ) ARouter.getInstance()
.build(MogoServicePaths.PATH_SPLASH)
.build( MogoServicePaths.PATH_SPLASH )
.navigation( getContext() );
addFragment( provider, containerId );
}
@@ -188,4 +190,25 @@ public class MogoModulesManager implements MogoModulesHandler {
.replace( containerId, fragment, provider.getModuleName() )
.commitAllowingStateLoss();
}
@Override
public void onDestroy() {
if ( mModuleNameProviders != null ) {
Collection< IMogoModuleProvider > modules = mModuleNameProviders.values();
if ( modules != null ) {
for ( IMogoModuleProvider module : modules ) {
try {
Logger.d( TAG, "destroy module: " + module.getModuleName() );
module.onDestroy();
} catch ( Exception e ) {
Logger.e( TAG, e, "onDestroy" );
}
}
}
mModuleNameProviders.clear();
}
if ( mModuleProviders != null ) {
mModuleProviders.clear();
}
}
}

View File

@@ -47,6 +47,8 @@ dependencies {
implementation "com.mogo.tencent.wecarflow:mogo-wecarflow:+@aar"
implementation "com.mogo.kwmusic:mogo-kwmusic:+"
implementation rootProject.ext.dependencies.carcallprovider
if (Boolean.valueOf(RELEASE)) {
implementation rootProject.ext.dependencies.mogomap
implementation rootProject.ext.dependencies.mogoutils

View File

@@ -20,7 +20,7 @@ import com.mogo.service.module.ModuleType;
public class MediaCardViewProvider implements IMogoModuleProvider {
private static final String TAG = "MediaCardViewProvider";
private MediaWindow2 mediaWindow2;
@Override
public Fragment createFragment( Context context, Bundle data ) {
@@ -33,7 +33,7 @@ public class MediaCardViewProvider implements IMogoModuleProvider {
@Override
public void init( Context context ) {
ServiceMediaHandler.init( context );
MediaWindow2 mediaWindow2 = new MediaWindow2();
mediaWindow2 = new MediaWindow2();
mediaWindow2.initMedia(context);
}
@@ -88,4 +88,12 @@ public class MediaCardViewProvider implements IMogoModuleProvider {
public String getAppName() {
return "";
}
@Override
public void onDestroy() {
if ( mediaWindow2 != null ) {
mediaWindow2.onDestroy();
}
mediaWindow2 = null;
}
}

View File

@@ -11,6 +11,7 @@ import com.mogo.map.navi.IMogoNavi;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant;
import com.mogo.module.authorize.authprovider.module.IMogoAuthorizeModuleManager;
import com.mogo.module.carchattingprovider.ICarsChattingProvider;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.adas.IMogoADASController;
import com.mogo.service.analytics.IMogoAnalytics;
@@ -53,6 +54,8 @@ public class ServiceMediaHandler {
private static IMogoAuthorizeModuleManager mMogoAuthorizeModuleManager;
private static IMogoMarkerService sMarkerService;
private static ICarsChattingProvider sCarsChattingProvider;
public static void init(Context context) {
mApis = (MogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context);
mMapService = mApis.getMapServiceApi();
@@ -73,6 +76,8 @@ public class ServiceMediaHandler {
mMogoADASController = mApis.getAdasControllerApi();
mMogoAuthorizeModuleManager = (IMogoAuthorizeModuleManager) ARouter.getInstance().build(AuthorizeConstant.PROVIDER_MODULE).navigation(context);
sMarkerService = mApis.getMarkerService();
sCarsChattingProvider = ARouter.getInstance().navigation( ICarsChattingProvider.class );
}
public static IMogoADASController getMogoADASController(){
@@ -157,6 +162,10 @@ public class ServiceMediaHandler {
return mMogoDataManager;
}
public static MogoServiceApis getApis() {
return mApis;
}
/**
* 这个注册的第一个参数是模块名称,目的是只给当前显示的卡片分发事件
* @return
@@ -183,6 +192,11 @@ public class ServiceMediaHandler {
return sMarkerService;
}
public static ICarsChattingProvider getCarsChattingApis() {
isApisNull( sCarsChattingProvider );
return sCarsChattingProvider;
}
public static void isApisNull( Object object){
if (isObjStaticNull(object)){
init(AbsMogoApplication.getApp());

View File

@@ -0,0 +1,106 @@
package com.mogo.module.media.listener;
import com.mogo.module.carchattingprovider.ICallProviderResponse;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public
/**
* @author congtaowang
* @since 2020/9/24
* <p>
* 描述
*/
abstract class CallProviderResponseAdapter implements ICallProviderResponse {
@Override
public void addFriend( boolean b ) {
}
@Override
public void callInvokeError( @NotNull String s ) {
}
@Override
public void callStatus( int i ) {
}
@Override
public void canCall( boolean b ) {
}
@Override
public void hideUserWindowError( @NotNull String s ) {
}
@Override
public void invisibleUser( boolean b ) {
}
@Override
public void isFriend( boolean b ) {
}
@Override
public void isOnLine( boolean b, @Nullable String s ) {
}
@Override
public void userInfoCallBack( @Nullable String s, @Nullable String s1 ) {
}
@Override
public void userWindowStatus( boolean b ) {
}
@Override
public void call( @NotNull String s ) {
}
@Override
public void cancelMatch( boolean b ) {
}
@Override
public void error( @NotNull String s ) {
}
@Override
public void hangUp( boolean b ) {
}
@Override
public void invokeCallData( @NotNull String s ) {
}
@Override
public void match( @NotNull String s ) {
}
@Override
public void matchInvokeResult( boolean b, @NotNull String s ) {
}
@Override
public void mute( boolean b ) {
}
}

View File

@@ -12,11 +12,13 @@ import android.widget.TextView;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.commons.voice.AIAssist;
import com.mogo.commons.voice.IMogoVoiceCmdCallBack;
import com.mogo.module.carchattingprovider.ICallProviderResponse;
import com.mogo.module.common.glide.SkinAbleBitmapTarget;
import com.mogo.module.media.MediaConstants;
import com.mogo.module.media.R;
import com.mogo.module.media.ServiceMediaHandler;
import com.mogo.module.media.constants.MusicConstant;
import com.mogo.module.media.listener.CallProviderResponseAdapter;
import com.mogo.module.media.listener.NoDoubleClickListener;
import com.mogo.module.media.model.MediaInfoData;
import com.mogo.module.media.presenter.BaseMediaPresenter;
@@ -25,6 +27,7 @@ import com.mogo.module.media.presenter.PresenterFactory;
import com.mogo.module.media.utils.Utils;
import com.mogo.module.media.view.IMusicView;
import com.mogo.module.media.widget.AnimCircleImageView;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.StatusDescriptor;
import com.mogo.utils.WindowUtils;
import com.mogo.utils.glide.GlideApp;
@@ -38,7 +41,7 @@ import com.tencent.wecarflow.flowoutside.sdk.FlowPlayControl;
*
* @author tongchenfei
*/
public class MediaWindow2 implements IMusicView {
public class MediaWindow2 implements IMusicView , IMogoStatusChangedListener {
public static final String TAG = MediaWindow2.class.getName();
private Context mContext;
@@ -58,6 +61,9 @@ public class MediaWindow2 implements IMusicView {
private boolean mHasAddWindow = false;
private boolean mTwoChange = false;
private boolean isFirstPlay = false;
private boolean mIsCallChatWindowVisible;
private ICallProviderResponse mCallProviderResponse;
public void initMedia(Context context) {
mContext = context;
@@ -76,14 +82,34 @@ public class MediaWindow2 implements IMusicView {
});
}
ServiceMediaHandler.getIMogoStatusManager().registerStatusChangedListener(MediaConstants.MODULE_TYPE, StatusDescriptor.ACC_STATUS, (descriptor, isTrue) -> {
if (descriptor == StatusDescriptor.ACC_STATUS&&!isTrue) {
ServiceMediaHandler.getMogoWindowManager().removeView(mWindowView);
mHasAddWindow = false;
}
});
ServiceMediaHandler.getIMogoStatusManager().registerStatusChangedListener(MediaConstants.MODULE_TYPE, StatusDescriptor.ACC_STATUS, this);
isFirstPlay = true;
// 车聊聊才是王
mCallProviderResponse = new CallProviderResponseAdapter(){
@Override
public void callWindowStatus( boolean b ) {
Logger.d( TAG, "callWindowStatus: "+ b);
mIsCallChatWindowVisible = b;
if ( !mHasAddWindow || mWindowView == null ) {
return;
}
if ( mIsCallChatWindowVisible ) {
mWindowView.setVisibility(View.GONE );
} else {
mWindowView.setVisibility(View.VISIBLE);
}
}
};
ServiceMediaHandler.getCarsChattingApis().registerCallWindowStatusListener( MediaConstants.MODULE_TYPE, mContext, mCallProviderResponse);
isFirstPlay = true;
}
@Override
public void onStatusChanged( StatusDescriptor descriptor, boolean isTrue ) {
if (descriptor == StatusDescriptor.ACC_STATUS&&!isTrue) {
ServiceMediaHandler.getMogoWindowManager().removeView(mWindowView);
mHasAddWindow = false;
}
}
private void addWindowView() {
@@ -93,16 +119,10 @@ public class MediaWindow2 implements IMusicView {
return;
}
if(!ServiceMediaHandler.getIMogoStatusManager().isMainPageOnResume()){
Log.d(TAG, "not in front");
return;
}
if (!mHasAddWindow) {
mHasAddWindow = true;
mWindowView =
LayoutInflater.from(mContext).inflate(R.layout.module_media_music_window_alert_layout, null);
mWindowView.setVisibility(View.VISIBLE);
mCircleImg = mWindowView.findViewById(R.id.window_circle_img);
mScrollText = mWindowView.findViewById(R.id.window_scroll_txt);
mWindowPlayPause = mWindowView.findViewById(R.id.window_play_pause);
@@ -158,6 +178,12 @@ public class MediaWindow2 implements IMusicView {
}
}
});
if ( mIsCallChatWindowVisible ) {
mWindowView.setVisibility(View.GONE);
} else {
mWindowView.setVisibility(View.VISIBLE);
}
}
}
@@ -305,4 +331,10 @@ public class MediaWindow2 implements IMusicView {
mWindowView.setVisibility(View.GONE);
}
}
public void onDestroy(){
Logger.d(TAG, "onDestroy");
ServiceMediaHandler.getCarsChattingApis().unRegisterCallWindowStatusListener( MediaConstants.MODULE_TYPE, mContext);
ServiceMediaHandler.getIMogoStatusManager().unregisterStatusChangedListener(MediaConstants.MODULE_TYPE, StatusDescriptor.ACC_STATUS,this);
}
}

View File

@@ -100,4 +100,9 @@ public class MogoServiceProvider implements IMogoModuleProvider {
MogoServices.getInstance().init( AbsMogoApplication.getApp() );
}, 5_000L );
}
@Override
public void onDestroy() {
MogoServices.getInstance().destroy();
}
}

View File

@@ -20,6 +20,7 @@ import com.mogo.commons.network.SubscribeImpl;
import com.mogo.commons.storage.SpStorage;
import com.mogo.commons.voice.AIAssist;
import com.mogo.commons.voice.IMogoVoiceCmdCallBack;
import com.mogo.map.IDestroyable;
import com.mogo.map.MogoLatLng;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.location.IMogoLocationListener;
@@ -95,7 +96,8 @@ public class MogoServices implements IMogoMapListener,
IMogoAimlessModeListener,
IMogoVoiceCmdCallBack,
FragmentStackTransactionListener,
IMogoCarLocationChangedListener2 {
IMogoCarLocationChangedListener2,
IDestroyable {
private boolean mInternalUnWakeupRegisterStatus = false;
@@ -201,7 +203,7 @@ public class MogoServices implements IMogoMapListener,
}
break;
case ServiceConst.MSG_SCHEDULE_CALCULATE_NOT_HOME_COMPANY_DISTANCE_FOR_PUSH:
handleCalculationNotHomeCompanyDistanceForPush();
handleCalculationNotHomeCompanyDistanceForPush( msg.arg1 );
break;
}
}
@@ -944,8 +946,12 @@ public class MogoServices implements IMogoMapListener,
@Override
public void onStartNavi() {
Logger.d( TAG, "onStartNavi: scheduleCalculationNotHomeCompanyDistanceForPush" );
scheduleCalculationNotHomeCompanyDistanceForPush();
if ( DebugConfig.isIsScheduleCalculateNotHomeCompanyDistanceForPush() ) {
Logger.d( TAG, "onStartNavi: scheduleCalculationNotHomeCompanyDistanceForPush" );
scheduleCalculationNotHomeCompanyDistanceForPush( 1, ServiceConst.INTERVAL_SCHEDULE_CALCULATE_NOT_HOME_COMPANY_DISTANCE_FOR_PUSH );
} else {
Logger.d( TAG, "onStartNavi: scheduleCalculationNotHomeCompanyDistanceForPush un support" );
}
}
@Override
@@ -957,14 +963,22 @@ public class MogoServices implements IMogoMapListener,
/**
* 延时一分钟发起计算导航目的地推送策略
*/
private void scheduleCalculationNotHomeCompanyDistanceForPush() {
mHandler.sendEmptyMessageDelayed( ServiceConst.MSG_SCHEDULE_CALCULATE_NOT_HOME_COMPANY_DISTANCE_FOR_PUSH, ServiceConst.INTERVAL_SCHEDULE_CALCULATE_NOT_HOME_COMPANY_DISTANCE_FOR_PUSH );
private void scheduleCalculationNotHomeCompanyDistanceForPush( int time, long delay ) {
Message msg = Message.obtain();
msg.what = ServiceConst.MSG_SCHEDULE_CALCULATE_NOT_HOME_COMPANY_DISTANCE_FOR_PUSH;
msg.arg1 = time;
mHandler.sendMessageDelayed( msg, delay );
}
/**
* 发起计算导航目的地推送策略
*
* @param time 第x次重试
*/
private void handleCalculationNotHomeCompanyDistanceForPush() {
private void handleCalculationNotHomeCompanyDistanceForPush( final int time ) {
if ( time > 3 ) {
return;
}
String json = SpStorage.getNavigationTarget();
if ( !TextUtils.isEmpty( json ) ) {
try {
@@ -993,6 +1007,9 @@ public class MogoServices implements IMogoMapListener,
@Override
public void onError( Throwable e ) {
super.onError( e );
Logger.d( TAG, "re scheduleCalculationNotHomeCompanyDistanceForPush after 30s" );
// 延时30s重试
scheduleCalculationNotHomeCompanyDistanceForPush( time + 1, 30_000L );
}
@Override
@@ -1006,4 +1023,9 @@ public class MogoServices implements IMogoMapListener,
}
}
@Override
public void destroy() {
Logger.d( TAG, "MogoServices do nothings." );
}
}

View File

@@ -3,7 +3,10 @@ package com.mogo.module.service.intent;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.text.TextUtils;
import com.mogo.commons.storage.SpStorage;
import com.mogo.commons.voice.AIAssist;
import com.mogo.module.service.MarkerServiceHandler;
public
@@ -17,6 +20,12 @@ class OnlineCarPanelIntentHandler implements IntentHandler {
@Override
public void handle( Context context, Intent intent ) {
String json = SpStorage.getNavigationTarget();
if ( TextUtils.isEmpty( json ) ) {
AIAssist.getInstance( context ).speakTTSVoice( "没有导航目的地" );
return;
}
AIAssist.getInstance( context ).speakTTSVoice( "正在查询" );
if ( MarkerServiceHandler.getMogoStatusManager().isMainPageOnResume() ) {
MarkerServiceHandler.getApis().getOnlineCarPanelApi().showPanel();
} else {

View File

@@ -76,6 +76,11 @@ class LauncherCardRefresher {
*/
private int mDefaultConfigCounter = 0;
/**
* 事件/车友播报次数
*/
private int mMsgExplorerWayOrOnlineCarDataCounter = 0;
/**
* 因为缓存ticket失效导致失败的情况需要重新请求ticket然后再次获取数据这里重试3次
*/
@@ -151,18 +156,18 @@ class LauncherCardRefresher {
private ZhidaoRefreshModel mZhidaoRefreshModel;
private LauncherCardRefreshStrategy mExplorerWayOrOnlineCarDataStrategy = new LauncherCardRefreshStrategy(
40 * ONE_MINUTE,null, MSG_EXPLORER_WAY_OR_ONLINE_CAR_DATA
40 * ONE_MINUTE, null, MSG_EXPLORER_WAY_OR_ONLINE_CAR_DATA
);
private LauncherCardRefreshStrategy mInduceStrategy = new LauncherCardRefreshStrategy(
3 * ONE_MINUTE,mExplorerWayOrOnlineCarDataStrategy, MSG_INDUCE
3 * ONE_MINUTE, mExplorerWayOrOnlineCarDataStrategy, MSG_INDUCE
);
private LauncherCardRefreshStrategy mLauncherCardConfigStrategy = new LauncherCardRefreshStrategy(
2 * ONE_MINUTE,mInduceStrategy, MSG_REFRESH_DEFAULT_CARD
2 * ONE_MINUTE, mInduceStrategy, MSG_REFRESH_DEFAULT_CARD
);
private LauncherCardRefreshStrategy mRefreshStrategy = mLauncherCardConfigStrategy;
public void start() {
if ( DebugConfig.isLauncher() || DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_BYD ) {
if ( !DebugConfig.isIsSupportLauncherCardRefreshStrategy() ) {
return;
}
if ( mStart ) {
@@ -172,6 +177,7 @@ class LauncherCardRefresher {
mLaunchTTSText = mContext.getString( R.string.module_service_open_app_tip );
mDefaultConfigCounter = 0;
mRefreshTicketCounter = 0;
mMsgExplorerWayOrOnlineCarDataCounter = 0;
mRefreshStrategy = mLauncherCardConfigStrategy;
// 延时加载数据已保证accOn之后网络恢复正常
long delay = ONE_MINUTE;
@@ -238,6 +244,10 @@ class LauncherCardRefresher {
restart();
return;
}
mMsgExplorerWayOrOnlineCarDataCounter++;
if ( mMsgExplorerWayOrOnlineCarDataCounter > 2 ) {
return;
}
MogoLatLng latLng = new MogoLatLng( location.getLatitude(), location.getLongitude() );
handleRefreshExplorerWayOrOnlineCarData( latLng, mRefreshStrategy.getType() );
}

View File

@@ -3,6 +3,7 @@ package com.mogo.module.service.marker;
import android.content.Context;
import android.graphics.Rect;
import android.text.TextUtils;
import android.util.Log;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.LinearInterpolator;
@@ -16,6 +17,7 @@ import com.mogo.map.marker.MogoMarkerOptions;
import com.mogo.map.marker.anim.OnMarkerAnimationListener;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.module.common.ModuleNames;
import com.mogo.module.common.api.CallChatApi;
import com.mogo.module.common.entity.MarkerCarPois;
import com.mogo.module.common.entity.MarkerCardResult;
import com.mogo.module.common.entity.MarkerExploreWay;
@@ -190,6 +192,12 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
mogoMarker.setInfoWindowAdapter( UserDataMarkerInfoWindowAdapter.getInstance( mContext ) );
mogoMarker.showInfoWindow();
Logger.d( TAG, "打开info window" );
// try {
// MarkerOnlineCar onlineCar = ( MarkerOnlineCar ) ( ( MarkerShowEntity ) mogoMarker.getObject() ).getBindObj();
// CallChatApi.getInstance().showUserWindow( mContext, onlineCar );
// } catch ( Exception e ) {
// Logger.e( TAG, e, "openMarker" );
// }
}
} else {
Object object = mogoMarker.getObject();
@@ -792,7 +800,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
}
Logger.d( TAG, "内部 - 请求开始" );
mRefreshModel.queryOnLineCarWithRoute( latLng, onlyFocus, onlySameCity, radius, limit,false, new RefreshCallback() {
mRefreshModel.queryOnLineCarWithRoute( latLng, onlyFocus, onlySameCity, radius, limit, false, new RefreshCallback() {
@Override
public void onSuccess( Object o ) {
MarkerResponse data = ( MarkerResponse ) o;
@@ -977,7 +985,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
return;
}
if ( mLastDataResult != null ) {
runOnTargetThread( ()->{
runOnTargetThread( () -> {
MarkerServiceHandler.getMarkerManager().removeMarkers( ModuleNames.CARD_TYPE_ROAD_CONDITION );
drawMarkerByCurrentType( mLastDataResult );
mLastCheckMarker = null;

View File

@@ -198,6 +198,14 @@ public class RefreshModel {
}
}
@Override
public void onError( Throwable e ) {
super.onError( e );
if ( callback != null ) {
callback.onFail();
}
}
@Override
public void onError( String message, int code ) {
super.onError( message, code );

View File

@@ -12,6 +12,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.request.RequestOptions;
import com.mogo.map.location.MogoLocation;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.api.CallChatApi;
import com.mogo.module.common.entity.MarkerLocation;
import com.mogo.module.common.entity.MarkerOnlineCar;
import com.mogo.module.common.glide.SkinAbleBitmapTarget;
@@ -21,6 +22,7 @@ import com.mogo.module.service.Utils;
import com.mogo.utils.ResourcesHelper;
import com.mogo.utils.WindowUtils;
import com.mogo.utils.glide.GlideApp;
import com.mogo.utils.logger.Logger;
import java.util.List;
@@ -32,6 +34,8 @@ import java.util.List;
*/
class OnlineCarPanelAdapter extends RecyclerView.Adapter< OnlineCarPanelAdapter.VH > {
private static final String TAG = "OnlineCarPanelAdapter";
private List< MarkerOnlineCar > mDatums;
private double mToLon;
private double mToLat;
@@ -89,6 +93,11 @@ class OnlineCarPanelAdapter extends RecyclerView.Adapter< OnlineCarPanelAdapter.
distance.setText( content );
detail.setOnClickListener( view -> {
MogoApisHandler.getInstance().getApis().getAnalyticsApi().track( "Mogoer_List_click", null );
try {
CallChatApi.getInstance().showUserWindow( itemView.getContext(), car );
} catch ( Exception e ) {
Logger.e( TAG, e, "detail.OnClick" );
}
} );
}

View File

@@ -113,6 +113,7 @@ public class OnlineCarPanelFragment extends MvpFragment< IOnlineCarPanelView, On
mRefreshPanel.setVisibility( View.VISIBLE );
mLoading.setVisibility( View.GONE );
AIAssist.getInstance( getContext() ).speakTTSVoice( "未找到车友" );
if ( strategy == null ) {
m20KMStrategy.setVisibility( View.GONE );
m40KMStrategy.setVisibility( View.GONE );

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 583 B

After

Width:  |  Height:  |  Size: 587 B

View File

@@ -2,7 +2,7 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient android:angle="0" android:endColor="#676982" android:startColor="#8384A9" />
<gradient android:angle="0" android:endColor="#66676982" android:startColor="#668384A9" />
<corners android:radius="@dimen/module_services_panel_item_detail_bkg_corner" />
</shape>
</item>

View File

@@ -17,7 +17,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/module_services_online_car_panel_close_margin_top"
android:text="目的地车友"
android:textStyle="bold"
android:text="@string/module_services_online_car_panel_title"
android:textColor="@color/module_services_online_car_panel_title_textColor"
android:textSize="@dimen/module_services_online_car_panel_title_text_size" />
@@ -35,10 +36,10 @@
android:layout_height="43dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:indeterminateTint="#256BFF"
app:layout_constraintEnd_toEndOf="parent"
android:layout_gravity="center"
android:indeterminateTint="#256BFF"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
@@ -57,6 +58,7 @@
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
tools:visibility="visible"
android:visibility="gone">
<ImageView
@@ -123,8 +125,9 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="加载失败,请点击重试"
android:textColor="#FFFFFF" />
android:text="@string/module_services_error_text"
android:textColor="@color/module_services_error_textColor"
android:textSize="@dimen/module_services_empty_tip_textSize" />
</LinearLayout>
</FrameLayout>

View File

@@ -8,4 +8,5 @@
<color name="module_services_panel_item_detail_textColor">#FFFFFF</color>
<color name="module_services_id_panel_item_avatar_border_color">#3081A4DC</color>
<color name="module_services_empty_tip_textColor">#B2FFFFFF</color>
<color name="module_services_error_textColor">#FFFFFF</color>
</resources>

View File

@@ -9,4 +9,6 @@
<string name="module_services_panel_item_distance_tag_text">距离导航目的地</string>
<string name="module_services_panel_item_detail_text">查看车友信息</string>
<string name="module_services_online_car_panel_empty_tmpl">很抱歉,目的地%dKM内未找到车友</string>
<string name="module_services_online_car_panel_title">目的地车友</string>
<string name="module_services_error_text">加载失败,请点击重试</string>
</resources>

View File

@@ -1,15 +1,19 @@
package com.mogo.module.v2x.adapter.holder;
import android.content.Intent;
import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.voice.AIAssist;
import com.mogo.map.MogoLatLng;
import com.mogo.map.navi.IMogoNaviListener;
import com.mogo.map.navi.MogoNaviInfo;
import com.mogo.map.navi.MogoTraffic;
import com.mogo.module.carchattingprovider.ICarsChattingProvider;
import com.mogo.module.common.entity.MarkerExploreWay;
import com.mogo.module.common.entity.MarkerLocation;
import com.mogo.module.v2x.V2XConst;
@@ -20,6 +24,10 @@ import com.mogo.module.v2x.utils.TrackUtils;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.utils.TipToast;
import com.mogo.utils.logger.Logger;
import com.zhidao.carchattingprovider.CallChattingProviderConstant;
import com.zhidao.carchattingprovider.MogoDriverInfo;
import java.util.HashMap;
import static com.mogo.module.v2x.V2XConst.MODULE_NAME;
@@ -32,6 +40,9 @@ public abstract class V2XBaseViewHolder<T>
extends RecyclerView.ViewHolder
implements IMogoNaviListener {
private static final String TAG = "V2XBaseViewHolder";
private ICarsChattingProvider mCarsChattingProvider;
public V2XBaseViewHolder(@NonNull View itemView) {
super(itemView);
}
@@ -72,6 +83,28 @@ public abstract class V2XBaseViewHolder<T>
delayedCloseWindow();
}
public void triggerIVReportHead(MarkerExploreWay noveltyInfo) {
Log.d(TAG,"点击头像"+mCarsChattingProvider);
try {
mCarsChattingProvider = (ICarsChattingProvider) ARouter.getInstance().build(CallChattingProviderConstant.CAR_CALL_PROVIDER).navigation();
MogoDriverInfo mogoDriverInfo = new MogoDriverInfo();
int ageNumber = noveltyInfo.getUserInfo().getAgeNumber();
mogoDriverInfo.setAge(ageNumber);
String gender = noveltyInfo.getUserInfo().getGender();
mogoDriverInfo.setGender(gender != null ? gender:null);
String sn = noveltyInfo.getUserInfo().getSn();
mogoDriverInfo.setSn(sn != null ? sn:"");
String name = noveltyInfo.getUserInfo().getUserName();
mogoDriverInfo.setUserName(name != null ? name:"");
mogoDriverInfo.setUserHead(noveltyInfo.getUserInfo().getUserHead());
mCarsChattingProvider.showUserWindow(MODULE_NAME, mogoDriverInfo, this.itemView.getContext());
} catch (Exception e) {
Log.d(TAG,"点击头像发生错误--triggerIVReportHead"+e);
e.printStackTrace();
}
}
/**
* 打电话
*/
@@ -160,6 +193,7 @@ public abstract class V2XBaseViewHolder<T>
delayedCloseWindow();
}
/**
* 显示自定义 Toast
*

View File

@@ -54,7 +54,6 @@ public class V2XOtherSeekHelpVH extends V2XBaseViewHolder<V2XEventShowEntity> {
// 上传事件的用户信息
private MarkerUserInfo mUserInfo = new MarkerUserInfo();
// 语音控制导航
private V2XVoiceCallbackListener mNaviCb = (command, intent) -> triggerStartNavi(mNoveltyInfo);
// 语音控制拨打电话
@@ -66,6 +65,8 @@ public class V2XOtherSeekHelpVH extends V2XBaseViewHolder<V2XEventShowEntity> {
e.printStackTrace();
}
};
// 查看车辆信息
private V2XVoiceCallbackListener mVoiceOpenCarInfoLis = ((command, intent) -> triggerIVReportHead(mNoveltyInfo));
public V2XOtherSeekHelpVH(ViewGroup viewGroup) {
super(LayoutInflater.from(viewGroup.getContext())
@@ -95,7 +96,9 @@ public class V2XOtherSeekHelpVH extends V2XBaseViewHolder<V2XEventShowEntity> {
.registerWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CALL_CHATTING,
mCallChartingCb)
.registerUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_TO_CHAT_MORE_UN_WAKEUP,
mCallChartingCb);
mCallChartingCb)
.registerUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_OPEN_CAR_INFO_UN_WAKEUP,
mVoiceOpenCarInfoLis);
}
@Override
@@ -106,7 +109,8 @@ public class V2XOtherSeekHelpVH extends V2XBaseViewHolder<V2XEventShowEntity> {
.unRegisterWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_NAVI)
.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_TO_NAVI_UN_WAKEUP)
.unRegisterWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CALL_CHATTING)
.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_TO_CHAT_MORE_UN_WAKEUP);
.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_TO_CHAT_MORE_UN_WAKEUP)
.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_OPEN_CAR_INFO_UN_WAKEUP);
}
});
}
@@ -130,6 +134,12 @@ public class V2XOtherSeekHelpVH extends V2XBaseViewHolder<V2XEventShowEntity> {
} catch (Exception e) {
e.printStackTrace();
}
ivHead.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
triggerIVReportHead(mNoveltyInfo);
}
});
// 只有自研车机才会 有车聊聊通话
if (DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE) {

View File

@@ -48,6 +48,7 @@ import static com.mogo.module.v2x.V2XConst.MODULE_NAME;
* date : 2020/3/11 4:35 PM
* desc : 道路事件详情
* version: 1.0
*
* @author donghongyu
*/
public class V2XRoadEventVH extends V2XBaseViewHolder<V2XEventShowEntity> {
@@ -109,6 +110,13 @@ public class V2XRoadEventVH extends V2XBaseViewHolder<V2XEventShowEntity> {
showLiveCar(mV2XEventShowEntity);
}
};
// 查看车辆信息
private V2XVoiceCallbackListener v2xVoiceOpenCarInfoListener = new V2XVoiceCallbackListener() {
@Override
public void onCallback(String command, Intent intent) {
triggerIVReportHead(mNoveltyInfo);
}
};
private void init(View itemView) {
ivEventImg = itemView.findViewById(R.id.ivEventImg);
@@ -146,7 +154,9 @@ public class V2XRoadEventVH extends V2XBaseViewHolder<V2XEventShowEntity> {
.registerUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_TO_FEEDBACK_TRUE,
v2XVoiceCallbackReportTrueListener)
.registerUnWakeVoice(V2XVoiceConstants.COMMAND_V2X_TO_FEEDBACK_ERROR,
v2XVoiceCallbackReportErrorListener);
v2XVoiceCallbackReportErrorListener)
.registerUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_OPEN_CAR_INFO_UN_WAKEUP,
v2xVoiceOpenCarInfoListener);
}
@Override
@@ -239,6 +249,10 @@ public class V2XRoadEventVH extends V2XBaseViewHolder<V2XEventShowEntity> {
ivEventZan.setOnClickListener(v -> {
triggerZan(mNoveltyInfo);
});
ivReportHead.setOnClickListener(v -> {
triggerIVReportHead(mNoveltyInfo);
});
}
} catch (Exception e) {
e.printStackTrace();

View File

@@ -225,6 +225,12 @@ public class V2XVoiceConstants {
public static final String COMMAND_ZHIDAO_V2X_OPEN_SHEAR_EVENT_UN_WAKEUP = "COMMAND_ZHIDAO_V2X_OPEN_SHEAR_EVENT_UN_WAKEUP";
public static final String[] COMMAND_ZHIDAO_V2X_OPEN_SHEAR_EVENT_UN_WAKEUP_WORDS = {"我的分享"};
/*
* 查看车辆信息
* */
public static final String COMMAND_ZHIDAO_V2X_OPEN_CAR_INFO_UN_WAKEUP = "COMMAND_ZHIDAO_V2X_OPEN_CAR_INFO_UN_WAKEUP";
public static final String[] COMMAND_ZHIDAO_V2X_OPEN_CAR_INFO_UN_WAKEUP_UN_WAKEUP_WORDS = {"查看车辆信息"};
static {
// 免唤醒 默认
sVoiceCmds.put(COMMAND_V2X_TO_CHAT_MORE_UN_WAKEUP, COMMAND_V2X_TO_CHAT_MORE_UN_WAKEUP_WORDS);
@@ -251,6 +257,7 @@ public class V2XVoiceConstants {
sVoiceCmds.put(COMMAND_ZHIDAO_V2X_OPEN_HISTORY_EVENT_UN_WAKEUP, COMMAND_ZHIDAO_V2X_OPEN_HISTORY_EVENT_UN_WAKEUP_WORDS);
sVoiceCmds.put(COMMAND_ZHIDAO_V2X_OPEN_SURROUNDING_EVENT_UN_WAKEUP, COMMAND_ZHIDAO_V2X_OPEN_SURROUNDING_EVENT_UN_WAKEUP_WORDS);
sVoiceCmds.put(COMMAND_ZHIDAO_V2X_OPEN_SHEAR_EVENT_UN_WAKEUP, COMMAND_ZHIDAO_V2X_OPEN_SHEAR_EVENT_UN_WAKEUP_WORDS);
sVoiceCmds.put(COMMAND_ZHIDAO_V2X_OPEN_CAR_INFO_UN_WAKEUP, COMMAND_ZHIDAO_V2X_OPEN_CAR_INFO_UN_WAKEUP_UN_WAKEUP_WORDS);
//默认

View File

@@ -83,7 +83,6 @@ class MogoWidgetManger implements IMogoNaviListener2, IMogoIntentListener, IMogo
@Override
public void onStopNavi() {
SpStorage.setNavigationTarget( "" );
AutoNaviIntentHandler.getInstance().closeEntrance();
}

View File

@@ -2,6 +2,7 @@ package com.mogo.service.module;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
@@ -13,6 +14,8 @@ import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.navi.IMogoNaviListener;
import java.util.logging.Logger;
/**
* @author congtaowang
* @since 2019-12-24
@@ -128,4 +131,8 @@ public interface IMogoModuleProvider extends IProvider {
default String getAppName() {
return "";
}
default void onDestroy(){
Log.d( "IMogoModuleProvider", "onDestroy" );
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@@ -2,7 +2,7 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient android:centerX="0.5" android:angle="0" android:endColor="#11ffffff" android:startColor="#ffffff" android:type="linear" />
<gradient android:centerX="0.5" android:centerY="0.5" android:angle="0" android:endColor="#00ffffff" android:startColor="#ffffff" android:type="linear" />
</shape>
</item>
</selector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 444 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 444 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<solid android:color="#DDDDDD"/>
<corners android:radius="@dimen/module_services_panel_item_corner"/>
</shape>
</item>
</selector>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient android:angle="0" android:endColor="#D4D4D4" android:startColor="#C4C4C4" />
<corners android:radius="@dimen/module_services_panel_item_detail_bkg_corner" />
</shape>
</item>
</selector>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient android:angle="0" android:endColor="#E6E6E6" android:startColor="#DDDDDD" />
<corners android:radius="@dimen/module_services_panel_strategy_button_bkg_corner" />
</shape>
</item>
</selector>

View File

@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="module_service_info_window_content_textColor_light">#333333</color>
<color name="module_services_online_car_panel_title_textColor_light">#FF333333</color>
<color name="module_services_empty_tip_textColor_light">#B2333333</color>
<color name="module_services_error_textColor_light">#FF333333</color>
<color name="module_services_load_strategy_textColor_light">#333333</color>
<color name="module_services_panel_item_nickname_textColor_light">#333333</color>
<color name="module_services_panel_item_detail_textColor_light">#333333</color>
<color name="module_services_panel_item_distance_textColor_light">#666666</color>
<color name="module_services_id_panel_item_avatar_border_color_light">#81A4DC</color>
</resources>