diff --git a/app/build.gradle b/app/build.gradle
index 220945510b..99c5b45516 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -79,7 +79,17 @@ android {
dimension "product"
sourceSets {
main {
- manifest.srcFile 'src/main/AndroidManifest.xml'
+ manifest.srcFile 'src/zhidao/AndroidManifest.xml'
+ }
+ }
+ applicationId rootProject.ext.android.applicationId
+ }
+ // 通用 APP
+ catholic {
+ dimension "product"
+ sourceSets {
+ main {
+ manifest.srcFile 'src/catholic/AndroidManifest.xml'
}
}
applicationId rootProject.ext.android.applicationId
diff --git a/app/src/catholic/AndroidManifest.xml b/app/src/catholic/AndroidManifest.xml
new file mode 100644
index 0000000000..7440c2cfe2
--- /dev/null
+++ b/app/src/catholic/AndroidManifest.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/d80x/AndroidManifest.xml b/app/src/d80x/AndroidManifest.xml
index 53ab924776..1096abd079 100644
--- a/app/src/d80x/AndroidManifest.xml
+++ b/app/src/d80x/AndroidManifest.xml
@@ -18,6 +18,44 @@
tools:replace="android:value"
android:name="com.amap.api.v2.apikey"
android:value="40e2e7e773c7562b1f2b13699a93992c" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 087e4769a3..31f31689d3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -14,6 +14,42 @@
android:supportsRtl="true"
android:theme="@style/AppTheme.App"
tools:replace="android:label">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/config.gradle b/config.gradle
index 291ffe3d5b..d9f8af0fd0 100644
--- a/config.gradle
+++ b/config.gradle
@@ -143,5 +143,8 @@ ext {
gpssimulatornoop : "com.mogo.module:module-gps-simulator-noop:${MOGO_MODULE_GPS_SIMULATOR_NOOP_VERSION}",
adasapi : "com.zhidao.autopilot.support:adas:1.0.0-SNAPSHOT",
+
+ // 个人中心的SDK
+ personalsdk : "com.zhidaoauto.person.info:data:1.0.1",
]
}
\ No newline at end of file
diff --git a/modules/mogo-module-main/src/main/AndroidManifest.xml b/modules/mogo-module-main/src/main/AndroidManifest.xml
index d7dee65541..e490d96a29 100644
--- a/modules/mogo-module-main/src/main/AndroidManifest.xml
+++ b/modules/mogo-module-main/src/main/AndroidManifest.xml
@@ -2,36 +2,6 @@
package="com.mogo.module.main">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/modules/mogo-module-search/src/main/AndroidManifest.xml b/modules/mogo-module-search/src/main/AndroidManifest.xml
index 99b0239918..46c4accfc6 100644
--- a/modules/mogo-module-search/src/main/AndroidManifest.xml
+++ b/modules/mogo-module-search/src/main/AndroidManifest.xml
@@ -6,11 +6,7 @@
-
+
\ No newline at end of file
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/bean/EntityConvertUtils.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/bean/EntityConvertUtils.java
index 2c5cfff544..90797bbebb 100644
--- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/bean/EntityConvertUtils.java
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/bean/EntityConvertUtils.java
@@ -4,6 +4,8 @@ import com.amap.api.maps.model.CameraPosition;
import com.amap.api.services.geocoder.RegeocodeAddress;
import com.mogo.map.MogoLatLng;
import com.mogo.map.search.inputtips.MogoTip;
+import com.mogo.module.navi.constants.DataConstants;
+
import java.util.ArrayList;
import java.util.List;
@@ -15,7 +17,34 @@ import java.util.List;
*/
public class EntityConvertUtils {
- public static List pois2MogoTips( List< SearchPoi > datums ) {
+ public static ZDPoi mogo2ZD( SearchPoi poi ) {
+ if ( poi == null ) {
+ return null;
+ }
+ ZDPoi zdPoi = new ZDPoi();
+ zdPoi.setAddress( poi.getAddress() );
+ zdPoi.setName( poi.getName() );
+ zdPoi.setLat( poi.getLat() );
+ zdPoi.setLng( poi.getLng() );
+ return zdPoi;
+ }
+
+ public static SearchPoi zd2Mogo( ZDPoi poi, int type ) {
+ if ( poi == null ) {
+ return null;
+ }
+
+ String poiId = type == DataConstants.TYPE_COMPANY_ADDRESS ? DataConstants.POI_ID_COMPANY : DataConstants.POI_ID_HOME;
+ SearchPoi searchPoi = new SearchPoi( poiId,
+ poi.getName(),
+ poi.getAddress(),
+ poi.getLat(),
+ poi.getLng(), "", "", "" );
+ searchPoi.setType( type );
+ return searchPoi;
+ }
+
+ public static List< MogoTip > pois2MogoTips( List< SearchPoi > datums ) {
final List< MogoTip > output = new ArrayList<>();
if ( datums == null || datums.isEmpty() ) {
return output;
@@ -65,7 +94,6 @@ public class EntityConvertUtils {
}
-
//public static SearchPoi aMapLocation2Poi( AMapLocation location ) {
// if ( location == null || location.getErrorCode() != AMapLocation.LOCATION_SUCCESS ) {
// return null;
@@ -95,16 +123,16 @@ public class EntityConvertUtils {
}
- public static SearchPoi geoToPoi(double latitude,double longitude,int type) {
- SearchPoi searchPoi = new SearchPoi(System.currentTimeMillis() + "",
- null,
- null,
- latitude,
- longitude,
- null,
- null,
- "");
- searchPoi.setType(type);
+ public static SearchPoi geoToPoi( double latitude, double longitude, int type ) {
+ SearchPoi searchPoi = new SearchPoi( System.currentTimeMillis() + "",
+ null,
+ null,
+ latitude,
+ longitude,
+ null,
+ null,
+ "" );
+ searchPoi.setType( type );
return searchPoi;
}
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/bean/SearchPoi.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/bean/SearchPoi.java
index 7226cbcc11..7ea011c9e3 100644
--- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/bean/SearchPoi.java
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/bean/SearchPoi.java
@@ -233,4 +233,22 @@ public class SearchPoi implements Parcelable {
return new SearchPoi[size];
}
};
+
+ @Override
+ public String toString() {
+ return "SearchPoi{" +
+ "pId='" + pId + '\'' +
+ ", name='" + name + '\'' +
+ ", address='" + address + '\'' +
+ ", lat=" + lat +
+ ", lng=" + lng +
+ ", district='" + district + '\'' +
+ ", adCode='" + adCode + '\'' +
+ ", typeCode='" + typeCode + '\'' +
+ ", province='" + province + '\'' +
+ ", city='" + city + '\'' +
+ ", type=" + type +
+ ", time=" + time +
+ '}';
+ }
}
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/bean/ZDPoi.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/bean/ZDPoi.java
new file mode 100644
index 0000000000..ee1a2f62c9
--- /dev/null
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/bean/ZDPoi.java
@@ -0,0 +1,58 @@
+package com.mogo.module.navi.bean;
+
+public class ZDPoi {
+ String name;
+ String address;
+ double lng;
+ double lat;
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address;
+ }
+
+ public void setLng(double lng) {
+ this.lng = lng;
+ }
+
+ public void setLat(double lat) {
+ this.lat = lat;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public double getLng() {
+ return lng;
+ }
+
+ public double getLat() {
+ return lat;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public ZDPoi() {
+
+ }
+
+ /**
+ *
+ * @param name
+ * @param lat
+ * @param lng
+ */
+ public ZDPoi(String name,String address, double lat, double lng) {
+ this.name = name;
+ this.address = address;
+ this.lat = lat;
+ this.lng = lng;
+ }
+
+}
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/SearchApisHolder.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/SearchApisHolder.java
index 7d280506c8..26fabf1bac 100644
--- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/SearchApisHolder.java
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/SearchApisHolder.java
@@ -5,10 +5,10 @@ import com.mogo.commons.AbsMogoApplication;
import com.mogo.map.location.IMogoLocationClient;
import com.mogo.map.marker.IMogoMarkerManager;
import com.mogo.map.navi.IMogoNavi;
-import com.mogo.map.search.geo.IMogoGeoSearch;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.module.gps.simulator.IMogoGpsSimulatorManager;
import com.mogo.module.guideshow.provider.IGuideShowProvider;
+import com.mogo.module.navi.cp.PersonalInfoManagerImpl;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.analytics.IMogoAnalytics;
import com.mogo.service.fragmentmanager.IMogoFragmentManager;
@@ -18,6 +18,7 @@ import com.mogo.service.module.IMogoRegisterCenter;
import com.mogo.service.module.IMogoSearchManager;
import com.mogo.service.module.IMogoSettingManager;
import com.mogo.service.statusmanager.IMogoStatusManager;
+import com.mogo.utils.logger.Logger;
/**
* @author congtaowang
@@ -27,6 +28,8 @@ import com.mogo.service.statusmanager.IMogoStatusManager;
*/
public class SearchApisHolder {
+ private static final String TAG = "SearchApisHolder";
+
private static IMogoServiceApis sApis;
private static IMogoMapService sMapServiceApis;
private static IMogoMapUIController sUiControllerApis;
@@ -43,7 +46,10 @@ public class SearchApisHolder {
private static IMogoGpsSimulatorManager sGpsSimulatorManager;
private static IMogoSearchManager sSearchManager;
+ private static PersonalInfoManagerImpl mPersonalInfoManager;
+
static {
+ Logger.d( TAG, "static block init." );
sApis = ARouter.getInstance().navigation( IMogoServiceApis.class );
sMapServiceApis = sApis.getMapServiceApi();
sUiControllerApis = sMapServiceApis.getMapUIController();
@@ -57,7 +63,7 @@ public class SearchApisHolder {
sIntentManager = sApis.getIntentManagerApi();
sSettingManager = sApis.getSettingManagerApi();
sSearchManager = sApis.getSearchManagerApi();
- sGpsSimulatorManager = ARouter.getInstance().navigation( IMogoGpsSimulatorManager.class);
+ sGpsSimulatorManager = ARouter.getInstance().navigation( IMogoGpsSimulatorManager.class );
sGuideShowApis = ARouter.getInstance().navigation( IGuideShowProvider.class );
}
@@ -120,4 +126,12 @@ public class SearchApisHolder {
public static IMogoSearchManager getSearchManager() {
return sSearchManager;
}
+
+ public static PersonalInfoManagerImpl getPersonalInfoManager() {
+ Logger.d( TAG, "getPersonalInfoManager invoked." );
+ if ( mPersonalInfoManager == null ) {
+ mPersonalInfoManager = new PersonalInfoManagerImpl( AbsMogoApplication.getApp() );
+ }
+ return mPersonalInfoManager;
+ }
}
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/cp/AddressContentProvider.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/cp/AddressContentProvider.java
index 4f49273f2c..1d467d9f91 100644
--- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/cp/AddressContentProvider.java
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/cp/AddressContentProvider.java
@@ -6,13 +6,15 @@ import android.content.UriMatcher;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.net.Uri;
-import android.util.Log;
+
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+
import com.mogo.module.navi.bean.SearchPoi;
import com.mogo.module.navi.constants.DataConstants;
import com.mogo.module.navi.database.AppDataBase;
-import com.mogo.module.navi.manager.AddressManager;
+import com.mogo.utils.logger.Logger;
+
import java.util.List;
/**
@@ -41,23 +43,18 @@ public class AddressContentProvider extends ContentProvider {
@Nullable
@Override
public Cursor query( @NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable
- String sortOrder ) {
+ String sortOrder ) {
final int code = mMatcher.match( uri );
- Log.d( TAG, "query code: " + code );
final SearchPoi poi = getPoi( code );
- MatrixCursor
- cursor = new MatrixCursor( new String[]{DataConstants.HOME_ADDRESS_NAME,DataConstants.HOME_ADDRESS, DataConstants.HOME_ADDRESS_LATITUDE, DataConstants.HOME_ADDRESS_LONGITUDE} );
+ Logger.d( TAG, "query : %s", poi );
+ MatrixCursor cursor = new MatrixCursor( new String[]{DataConstants.HOME_ADDRESS_NAME, DataConstants.HOME_ADDRESS, DataConstants.HOME_ADDRESS_LATITUDE, DataConstants.HOME_ADDRESS_LONGITUDE} );
if ( code == DataConstants.HOME_ADDRESS_CODE ) {
- cursor = new MatrixCursor( new String[]{DataConstants.HOME_ADDRESS_NAME,DataConstants.HOME_ADDRESS, DataConstants.HOME_ADDRESS_LATITUDE, DataConstants.HOME_ADDRESS_LONGITUDE} );
+ cursor = new MatrixCursor( new String[]{DataConstants.HOME_ADDRESS_NAME, DataConstants.HOME_ADDRESS, DataConstants.HOME_ADDRESS_LATITUDE, DataConstants.HOME_ADDRESS_LONGITUDE} );
} else if ( code == DataConstants.COMPANY_ADDRESS_CODE ) {
- cursor = new MatrixCursor( new String[]{DataConstants.COMPANY_ADDRESS_NAME,DataConstants.COMPANY_ADDRESS, DataConstants.COMPANY_ADDRESS_LATITUDE, DataConstants.COMPANY_ADDRESS_LONGITUDE} );
+ cursor = new MatrixCursor( new String[]{DataConstants.COMPANY_ADDRESS_NAME, DataConstants.COMPANY_ADDRESS, DataConstants.COMPANY_ADDRESS_LATITUDE, DataConstants.COMPANY_ADDRESS_LONGITUDE} );
}
- if ( cursor != null ) {
- if ( poi == null ) {
- cursor.addRow( new Object[]{"","", 0, 0} );
- } else {
- cursor.addRow( new Object[]{poi.getName(),poi.getAddress(), poi.getLat(), poi.getLng()} );
- }
+ if ( cursor != null && poi != null ) {
+ cursor.addRow( new Object[]{poi.getName(), poi.getAddress(), poi.getLat(), poi.getLng()} );
}
return cursor;
}
@@ -69,7 +66,7 @@ public class AddressContentProvider extends ContentProvider {
return homeAddressPoi.get( 0 );
}
} else if ( type == DataConstants.COMPANY_ADDRESS_CODE ) {
- List< SearchPoi > homeAddressPoi = AppDataBase.getDatabase( getContext()).poiDao().getCompanyAddress().blockingGet();
+ List< SearchPoi > homeAddressPoi = AppDataBase.getDatabase( getContext() ).poiDao().getCompanyAddress().blockingGet();
if ( homeAddressPoi != null && homeAddressPoi.size() > 0 ) {
return homeAddressPoi.get( 0 );
}
@@ -87,7 +84,7 @@ public class AddressContentProvider extends ContentProvider {
@Override
public Uri insert( @NonNull Uri uri, @Nullable ContentValues values ) {
final int code = mMatcher.match( uri );
- Log.d( TAG, "insert code: " + code );
+ Logger.d( TAG, "insert code: " + code );
if ( values.size() == 0 ) {
return uri;
}
@@ -109,6 +106,7 @@ public class AddressContentProvider extends ContentProvider {
}
if ( validateLocation( lat, lng ) ) {
sp = new SearchPoi( DataConstants.POI_ID_HOME, poiName, poiAddress, lat, lng, "", "", "" );
+ sp.setType( code );
}
} else if ( code == DataConstants.COMPANY_ADDRESS_CODE ) {
poiName = values.getAsString( DataConstants.COMPANY_ADDRESS_NAME );
@@ -123,7 +121,7 @@ public class AddressContentProvider extends ContentProvider {
}
if ( validateLocation( lat, lng ) ) {
sp = new SearchPoi( DataConstants.POI_ID_COMPANY, poiName, poiAddress, lat, lng, "", "", "" );
- sp.setType(code);
+ sp.setType( code );
}
}
try {
@@ -136,7 +134,7 @@ public class AddressContentProvider extends ContentProvider {
private boolean validateLocation( double lat, double lng ) {
if ( ( lat ) == 0D || ( lng ) == 0D ) {
- Log.e( TAG, "error location" );
+ Logger.e( TAG, "error location" );
return false;
}
return true;
@@ -146,14 +144,9 @@ public class AddressContentProvider extends ContentProvider {
if ( poi == null ) {
return;
}
- List result = AppDataBase.getDatabase( getContext() ).poiDao().insert( poi );
- if ( result.get( 0 ).intValue() == -1 ) {
- Log.e( TAG, "insert error. " );
- }else {
- Log.e( TAG, "insert success. " );
-
- }
- AddressManager.INSTANCE.insert(poi);
+ Logger.d( TAG, "insert entity: %s", poi );
+ AppDataBase.getDatabase( getContext() ).poiDao().insert( poi );
+ AddressHelper.notifyAddressChanged( poi.getType() );
}
@Override
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/cp/AddressHelper.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/cp/AddressHelper.java
index 6ebef4cce2..02c159ef2f 100644
--- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/cp/AddressHelper.java
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/cp/AddressHelper.java
@@ -1,12 +1,7 @@
package com.mogo.module.navi.cp;
-import android.content.Context;
import com.mogo.commons.AbsMogoApplication;
-import com.mogo.module.navi.bean.SearchPoi;
import com.mogo.module.navi.constants.DataConstants;
-import com.mogo.utils.logger.Logger;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
/**
* @author congtaowang
@@ -17,20 +12,19 @@ import org.jetbrains.annotations.Nullable;
public class AddressHelper {
private static final String TAG = "AddressHelper";
- public static void notifyHomeAddressChanged( ) {
+
+ public static void notifyHomeAddressChanged() {
AbsMogoApplication.getApp().getContentResolver().notifyChange( DataConstants.CONTENT_HOME_ADDRESS_URI, null );
}
- public static void notifyCompanyAddressChanged( ) {
-
+ public static void notifyCompanyAddressChanged() {
AbsMogoApplication.getApp().getContentResolver().notifyChange( DataConstants.CONTENT_COMPANY_ADDRESS_URI, null );
}
- public static void notifyAddressChanged(
- int type) {
- if (type== DataConstants.TYPE_HOME_ADDRESS) {
+ public static void notifyAddressChanged( int type ) {
+ if ( type == DataConstants.TYPE_HOME_ADDRESS ) {
notifyHomeAddressChanged();
- }else {
+ } else if ( type == DataConstants.TYPE_COMPANY_ADDRESS ) {
notifyCompanyAddressChanged();
}
}
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/cp/PersonalInfoManager.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/cp/PersonalInfoManager.java
new file mode 100644
index 0000000000..fa8c1d600e
--- /dev/null
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/cp/PersonalInfoManager.java
@@ -0,0 +1,158 @@
+package com.mogo.module.navi.cp;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+
+import com.mogo.module.navi.bean.ZDPoi;
+
+
+/**
+ * 个人信息相关封装
+ * Created by zhangxuri on 2018/10/17.
+ */
+
+public abstract class PersonalInfoManager {
+
+ protected final static Object lock = new Object();
+
+ private static final Uri uri = Uri.parse("content://com.zhidao.guide.lock.product.bindstatus/status");
+
+ protected static PersonalInfoManager INSTANCE;
+
+ /**
+ * 实例化对象
+ * @param context 上下文
+ * @return
+ */
+ public static PersonalInfoManager getInstance(Context context) {
+ PersonalInfoManager client = INSTANCE;
+ if(client == null) {
+ synchronized (lock) {
+ client = INSTANCE;
+ if(client == null) {
+ client = new PersonalInfoManagerImpl(context);
+ INSTANCE = client;
+ }
+ }
+ }
+ return client;
+ }
+
+ public PersonalInfoManager() {
+ }
+
+ /**
+ * 请求获取用户信息
+ * @return
+ *//*
+ public UserInfo getUserInfo() {
+ ContentResolver resolver = mContext.getContentResolver();
+ if (resolver != null){
+ UserInfo userInfo = new UserInfo();
+ Cursor cursor = resolver.query(personlUri, null, null, null, null);
+ if((cursor != null) && cursor.moveToFirst()) {
+ userInfo.setUserId(cursor.getString(cursor.getColumnIndex(USER_ID)));
+ userInfo.setPhone(cursor.getString(cursor.getColumnIndex(PHONE)));
+ userInfo.setDisplayName(cursor.getString(cursor.getColumnIndex(DISPLAY_NAME)));
+ String score = cursor.getString(cursor.getColumnIndex(SCORE));
+ try {
+ userInfo.setScore(Integer.parseInt(score));
+ } catch (NumberFormatException ex) {
+ Log.e("PersonalInfoClient", "getUserInfo: NumberFormatException");
+ }
+ }
+ if(cursor != null){
+ cursor.close();
+ }
+ return userInfo;
+ } else {
+ Log.e("PersonalInfoClient", "resolver == null");
+ }
+
+ return null;
+ }
+*/
+ /**
+ * 获取当前车机绑定状态
+ * @return
+ */
+ public static boolean isRegister(Context context) {
+ Cursor cursor = null;
+ try {
+ ContentResolver resolver = context.getContentResolver();
+ if (resolver != null) {
+ cursor = resolver.query(uri, null, null, null, null);
+ if ((cursor != null) && cursor.moveToFirst()) {
+ int status = cursor.getInt(cursor.getColumnIndex("lock_status"));
+ return (status == 1);
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ if (cursor != null) {
+ cursor.close();
+ }
+ }
+ return false;
+ }
+
+ /**
+ * 释放资源
+ */
+ public abstract void release();
+
+ /**
+ * 设置家的地址
+ */
+ public abstract void setHome( ZDPoi homePoi);
+
+ /**
+ * 设置公司地址
+ */
+ public abstract void setCompany(ZDPoi companyPoi);
+
+ /**
+ * 获取家的地址
+ *
+ * @return
+ */
+ public abstract ZDPoi getHome();
+
+ public abstract ZDPoi getCompany();
+
+ /**
+ * 添加信息变化监听
+ *
+ * @param listener 监听器
+ */
+ public abstract void addListener(InfoListener listener);
+
+ /**
+ * 删除信息变化监听
+ *
+ * @param listener 监听器
+ */
+ public abstract void removeListener(InfoListener listener);
+
+ /**
+ * 常用地址变化监听器
+ */
+ public interface InfoListener {
+
+ /**
+ * 家地址变化
+ * @param home
+ */
+ void onHomeChanged( ZDPoi home );
+
+ /**
+ * 公司地址变化
+ * @param company
+ */
+ void onCompanyChanged( ZDPoi company );
+ }
+
+}
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/cp/PersonalInfoManagerImpl.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/cp/PersonalInfoManagerImpl.java
new file mode 100644
index 0000000000..a770c75f1f
--- /dev/null
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/cp/PersonalInfoManagerImpl.java
@@ -0,0 +1,308 @@
+package com.mogo.module.navi.cp;
+
+
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.ContentObserver;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.Looper;
+import android.util.Log;
+
+import com.mogo.module.navi.bean.ZDPoi;
+import com.mogo.utils.ThreadPoolService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 个人信息管理
+ */
+public class PersonalInfoManagerImpl extends PersonalInfoManager {
+
+ private final String TAG = "PersonalInfoManager";
+
+ private static final Uri personlUri = Uri.parse( "content://com.zhidao.auto.personal.provider/info" );
+
+ private static final Uri COMPANY_ADDRESS_URI = Uri.parse( "content://com.zhidao.auto.personal.provider/companyAddress" );//旧的公司地址
+
+ private static final Uri CONTENT_COMPANY_ADDRESS_URI = Uri.parse( "content://com.zhidao.launcher.provider.personal.info/companyAddress" );//新的公司地址
+
+ private static final Uri HOME_ADDRESS_URI = Uri.parse( "content://com.zhidao.auto.personal.provider/homeAddress" );//旧的家地址
+
+ private static final Uri CONTENT_HOME_ADDRESS_URI = Uri.parse( "content://com.zhidao.launcher.provider.personal.info/homeAddress" );//新的家地址
+
+ //公司地址
+ private static final String COMPANY_ADDRESS = "companyAddress";
+ private static final String COMPANY_ADDRESS_NAME = "companyAddressName";
+ private static final String COMPANY_ADDRESS_LATITUDE = "companyAddressLatitude";
+ private static final String COMPANY_ADDRESS_LONGITUDE = "companyAddressLongitude";
+
+ //家庭地址
+ private static final String HOME_ADDRESS = "homeAddress";
+ private static final String HOME_ADDRESS_NAME = "homeAddressName";
+ private static final String HOME_ADDRESS_LATITUDE = "homeAddressLatitude";
+ private static final String HOME_ADDRESS_LONGITUDE = "homeAddressLongitude";
+
+ private List< InfoListener > mListenerList = new ArrayList<>();
+ private boolean mIsRegister = false;
+ private Handler mHandler = new Handler( Looper.getMainLooper() );
+ private Context mContext;
+
+ public PersonalInfoManagerImpl( Context context ) {
+ this.mContext = context.getApplicationContext();
+ }
+
+ @Override
+ public void addListener( InfoListener listener ) {
+ synchronized ( mListenerList ) {
+ if ( listener != null ) {
+ mListenerList.add( listener );
+ }
+ if ( !mIsRegister ) {
+ registerObserver();
+ }
+ }
+ }
+
+ @Override
+ public void removeListener( InfoListener listener ) {
+ synchronized ( mListenerList ) {
+ if ( listener != null ) {
+ mListenerList.remove( listener );
+ }
+ if ( mListenerList.isEmpty() && mIsRegister ) {
+ unregisterObserver();
+ }
+ }
+ }
+
+ private void unregisterObserver() {
+ ContentResolver resolver = mContext.getContentResolver();
+ if ( resolver == null ) return;
+ if ( mIsRegister ) {
+ resolver.unregisterContentObserver( mContentObserver );
+ mIsRegister = false;
+ }
+ }
+
+ private void registerObserver() {
+ ContentResolver resolver = mContext.getContentResolver();
+ if ( resolver != null ) {
+ resolver.registerContentObserver( COMPANY_ADDRESS_URI, true, mContentObserver );
+ resolver.registerContentObserver( CONTENT_COMPANY_ADDRESS_URI, true, mContentObserver );
+ resolver.registerContentObserver( HOME_ADDRESS_URI, true, mContentObserver );
+ resolver.registerContentObserver( CONTENT_HOME_ADDRESS_URI, true, mContentObserver );
+ mIsRegister = true;
+ }
+ }
+
+ @Override
+ public void setCompany( ZDPoi companyPoi ) {
+ ContentResolver resolver = mContext.getContentResolver();
+ if ( resolver == null ) {
+ return;
+ }
+ ContentValues values = new ContentValues();
+ values.put( COMPANY_ADDRESS, companyPoi.getAddress() );
+ values.put( COMPANY_ADDRESS_NAME, companyPoi.getName() );
+ values.put( COMPANY_ADDRESS_LATITUDE, companyPoi.getLat() );
+ values.put( COMPANY_ADDRESS_LONGITUDE, companyPoi.getLng() );
+ try {
+ resolver.insert( CONTENT_COMPANY_ADDRESS_URI, values );
+ } catch ( IllegalArgumentException ex ) {
+ Log.e( TAG, "setCompany: new url not exits" );
+ try {
+ resolver.insert( COMPANY_ADDRESS_URI, values );
+ } catch ( IllegalArgumentException exception ) {
+ Log.e( TAG, "setCompany: ERROR" );
+ }
+ ex.printStackTrace();
+ }
+ }
+
+ @Override
+ public void setHome( ZDPoi homePoi ) {
+ ContentResolver resolver = mContext.getContentResolver();
+ if ( resolver == null ) {
+ return;
+ }
+ ContentValues values = new ContentValues();
+ values.put( HOME_ADDRESS, homePoi.getAddress() );
+ values.put( HOME_ADDRESS_NAME, homePoi.getName() );
+ values.put( HOME_ADDRESS_LATITUDE, homePoi.getLat() );
+ values.put( HOME_ADDRESS_LONGITUDE, homePoi.getLng() );
+ try {
+ resolver.insert( CONTENT_HOME_ADDRESS_URI, values );
+ } catch ( IllegalArgumentException ex ) {
+ try {
+ resolver.insert( HOME_ADDRESS_URI, values );
+ } catch ( IllegalArgumentException exception ) {
+ Log.e( TAG, "setHome: ERROR" );
+ }
+ ex.printStackTrace();
+ }
+ }
+
+ @Override
+ public ZDPoi getCompany() {
+ ContentResolver resolver = mContext.getContentResolver();
+ if ( resolver == null ) {
+ return null;
+ }
+ Cursor cursor = null;
+ try {
+ cursor = resolver.query( CONTENT_COMPANY_ADDRESS_URI, null, null, null, null );
+ if ( cursor == null ) { //桌面url不存在
+ cursor = resolver.query( COMPANY_ADDRESS_URI, null, null, null, null );
+ }
+
+ if ( cursor == null ) {
+ return null;
+ }
+ ZDPoi poi = new ZDPoi();
+ if ( cursor.moveToFirst() ) {
+ String companyAddress = cursor.getString( cursor.getColumnIndex( COMPANY_ADDRESS ) );
+ String companyAddressName = cursor.getString( cursor.getColumnIndex( COMPANY_ADDRESS_NAME ) );
+ double companyLat = cursor.getDouble( cursor.getColumnIndex( COMPANY_ADDRESS_LATITUDE ) );
+ double companyLng = cursor.getDouble( cursor.getColumnIndex( COMPANY_ADDRESS_LONGITUDE ) );
+ poi.setAddress( companyAddress );
+ poi.setName( companyAddressName );
+ poi.setLat( companyLat );
+ poi.setLng( companyLng );
+ return poi;
+ }
+ } catch ( Exception ex ) {
+ ex.printStackTrace();
+ } finally {
+ if ( cursor != null ) {
+ cursor.close();
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public ZDPoi getHome() {
+ ContentResolver resolver = mContext.getContentResolver();
+ if ( resolver == null ) {
+ return null;
+ }
+ Cursor cursor = null;
+ try {
+ cursor = resolver.query( CONTENT_HOME_ADDRESS_URI, null, null, null, null );
+ if ( cursor == null ) { //桌面url不存在
+ cursor = resolver.query( HOME_ADDRESS_URI, null, null, null, null );
+ }
+
+ if ( cursor == null ) {
+ return null;
+ }
+ ZDPoi poi = new ZDPoi();
+ if ( cursor.moveToFirst() ) {
+ String homeAddress = cursor.getString( cursor.getColumnIndex( HOME_ADDRESS ) );
+ String homeAddressName = cursor.getString( cursor.getColumnIndex( HOME_ADDRESS_NAME ) );
+ double homeAddressLat = cursor.getDouble( cursor.getColumnIndex( HOME_ADDRESS_LATITUDE ) );
+ double homeAddressLng = cursor.getDouble( cursor.getColumnIndex( HOME_ADDRESS_LONGITUDE ) );
+ poi.setAddress( homeAddress );
+ poi.setName( homeAddressName );
+ poi.setLat( homeAddressLat );
+ poi.setLng( homeAddressLng );
+ return poi;
+ }
+ } catch ( Exception ex ) {
+ ex.printStackTrace();
+ } finally {
+ if ( cursor != null ) {
+ cursor.close();
+ }
+ }
+ return null;
+ }
+
+ private void dispatchPoiEvent( int state, ZDPoi poi ) {
+ synchronized ( mListenerList ) {
+ for ( InfoListener listener : mListenerList ) {
+ if ( state == 0 ) {
+ listener.onHomeChanged( poi );
+ } else {
+ listener.onCompanyChanged( poi );
+ }
+ }
+ }
+ }
+
+ private ContentObserver mContentObserver = new ContentObserver( mHandler ) {
+ @Override
+ public void onChange( boolean selfChange, Uri uri ) {
+ super.onChange( selfChange, uri );
+ int state;
+ if ( uri.equals( HOME_ADDRESS_URI ) || uri.equals( CONTENT_HOME_ADDRESS_URI ) ) {
+ state = 0;
+ } else {
+ state = 1;
+ }
+ ThreadPoolService.execute( () -> {
+ final ZDPoi poi = queryFromDataSource( uri );
+ mHandler.post( () -> {
+ if ( poi != null ) {
+ dispatchPoiEvent( state, poi );
+ }
+ } );
+ } );
+
+ }
+ };
+
+ private ZDPoi queryFromDataSource( Uri uri ) {
+ Log.i( TAG, "onChange: uri = " + uri.toString() );
+ Cursor cursor = null;
+ String address;
+ String addressName;
+ double lat;
+ double lng;
+ ZDPoi poi = null;
+ try {
+ cursor = mContext.getContentResolver().query( uri, null, null, null, null );
+ if ( cursor != null && cursor.moveToNext() ) {
+ if ( uri.equals( HOME_ADDRESS_URI ) || uri.equals( CONTENT_HOME_ADDRESS_URI ) ) {
+ address = cursor.getString( cursor.getColumnIndex( HOME_ADDRESS ) );
+ addressName = cursor.getString( cursor.getColumnIndex( HOME_ADDRESS_NAME ) );
+ lat = cursor.getDouble( cursor.getColumnIndex( HOME_ADDRESS_LATITUDE ) );
+ lng = cursor.getDouble( cursor.getColumnIndex( HOME_ADDRESS_LONGITUDE ) );
+ } else {
+ address = cursor.getString( cursor.getColumnIndex( COMPANY_ADDRESS ) );
+ addressName = cursor.getString( cursor.getColumnIndex( COMPANY_ADDRESS_NAME ) );
+ lat = cursor.getDouble( cursor.getColumnIndex( COMPANY_ADDRESS_LATITUDE ) );
+ lng = cursor.getDouble( cursor.getColumnIndex( COMPANY_ADDRESS_LONGITUDE ) );
+ }
+ Log.i( TAG, "onChange: address = " + address + "addressName = " + addressName );
+ Log.i( TAG, "onChange: lat = " + lat + "lng = " + lng );
+ poi = new ZDPoi();
+ poi.setAddress( address );
+ poi.setName( addressName );
+ poi.setLat( lat );
+ poi.setLng( lng );
+ }
+ } catch ( Exception e ) {
+ Log.e( TAG, "onChange: Exception = " + e.getMessage() );
+ } finally {
+ if ( cursor != null ) {
+ cursor.close();
+ }
+ }
+ return poi;
+ }
+
+
+ @Override
+ public void release() {
+ synchronized ( lock ) {
+ this.mListenerList.clear();
+ unregisterObserver();
+ INSTANCE = null;
+ }
+ }
+}
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/AddressManager.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/AddressManager.kt
index 85ec044c4a..3713ed1c1d 100644
--- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/AddressManager.kt
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/AddressManager.kt
@@ -2,27 +2,20 @@ package com.mogo.module.navi.manager
import android.annotation.SuppressLint
import android.content.Context
-import androidx.fragment.app.Fragment
-import com.mogo.map.MogoLatLng
-import com.mogo.module.common.map.MapCenterPointStrategy
-import com.mogo.module.common.map.Scene
+import android.util.Log
import com.mogo.module.navi.bean.EntityConvertUtils
import com.mogo.module.navi.bean.SearchPoi
-import com.mogo.module.navi.constants.AMapConstants
+import com.mogo.module.navi.bean.ZDPoi
import com.mogo.module.navi.constants.DataConstants
import com.mogo.module.navi.constants.SearchApisHolder
import com.mogo.module.navi.cp.AddressHelper
+import com.mogo.module.navi.cp.PersonalInfoManager
import com.mogo.module.navi.dao.SearchPoiDao
import com.mogo.module.navi.database.AppDataBase
-import com.mogo.module.navi.ui.search.CategorySearchFragment
-import com.mogo.module.navi.ui.search.ChoosePathFragment
-import com.mogo.module.navi.ui.search.SearchFragment
-import com.mogo.module.navi.ui.setting.NaviSettingFragment
-import com.mogo.module.navi.ui.setting.SettingAddressFragment
-import com.mogo.service.fragmentmanager.FragmentDescriptor
+import com.mogo.utils.WorkThreadHandler
+import com.mogo.utils.logger.Logger
import io.reactivex.Observable
import io.reactivex.ObservableOnSubscribe
-import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import org.greenrobot.eventbus.EventBus
@@ -47,39 +40,47 @@ object AddressManager {
return companyAddress != null
}
- private lateinit var context: Context
@SuppressLint("CheckResult")
fun init(context: Context) {
- this.context = context
poiDao = AppDataBase.getDatabase(context).poiDao()
- poiDao.companyAddress
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe { t1, _ ->
- if (t1.size > 0) {
- companyAddress = t1[0]
- }
- }
+ WorkThreadHandler.getInstance().post {
+ try {
+ var zdCompany = SearchApisHolder.getPersonalInfoManager().company
+ companyAddress = EntityConvertUtils.zd2Mogo(zdCompany, DataConstants.TYPE_COMPANY_ADDRESS)
+ var zdHome = SearchApisHolder.getPersonalInfoManager().home
+ homeAddress = EntityConvertUtils.zd2Mogo(zdHome, DataConstants.TYPE_HOME_ADDRESS)
+ } catch (e: Exception) {
+ Logger.d(TAG, Log.getStackTraceString(e))
+ }
+ }
- poiDao.homeAddress
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe { t1, _ ->
- if (t1.size > 0) {
- homeAddress = t1[0]
- }
- }
+ SearchApisHolder.getPersonalInfoManager().addListener(object : PersonalInfoManager.InfoListener {
+ override fun onCompanyChanged(company: ZDPoi?) {
+ Logger.d(TAG, "company data changed.")
+ companyAddress = EntityConvertUtils.zd2Mogo(company, DataConstants.TYPE_COMPANY_ADDRESS)
+ EventBus.getDefault().post(companyAddress)
+ }
+
+ override fun onHomeChanged(home: ZDPoi?) {
+ Logger.d(TAG, "home data changed.")
+ homeAddress = EntityConvertUtils.zd2Mogo(home, DataConstants.TYPE_HOME_ADDRESS)
+ EventBus.getDefault().post(homeAddress)
+ }
+ })
}
fun insert(searchPoi: SearchPoi) {
-
- EventBus.getDefault().post(searchPoi)
- if (searchPoi.type == DataConstants.TYPE_COMPANY_ADDRESS) {
- companyAddress = searchPoi
- } else {
- homeAddress = searchPoi
- }
+ Observable.create(
+ ObservableOnSubscribe {
+ if (searchPoi.type == DataConstants.TYPE_COMPANY_ADDRESS) {
+ SearchApisHolder.getPersonalInfoManager().company = EntityConvertUtils.mogo2ZD(searchPoi)
+ } else {
+ SearchApisHolder.getPersonalInfoManager().home = EntityConvertUtils.mogo2ZD(searchPoi)
+ }
+ })
+ .subscribeOn(Schedulers.io())
+ .subscribe()
}
fun deleteHome() {
@@ -88,109 +89,20 @@ object AddressManager {
poiDao.delete(homeAddress)
homeAddress?.name = ""
AddressHelper.notifyAddressChanged(1)
-
homeAddress = null
})
.subscribeOn(Schedulers.io())
.subscribe()
-
-
}
fun deleteCompany() {
Observable.create(
ObservableOnSubscribe {
poiDao.delete(companyAddress)
- companyAddress?.name = ""
AddressHelper.notifyAddressChanged(0)
-
companyAddress = null
})
.subscribeOn(Schedulers.io())
.subscribe()
}
-
- /**
- * 回家
- */
- fun goHome() {
- if (homeAddress == null) {
- choosePoint(DataConstants.TYPE_HOME_ADDRESS)
- } else {
- calculatePath(EntityConvertUtils.poi2MogoTip(homeAddress).point)
- }
- }
-
- private fun choosePoint(type: Int) {
- beforePushFragment()
- MapCenterPointStrategy.setMapCenterPointByScene(SearchApisHolder.getUiControllerApis(), Scene.CHOOSE_POINT)
- pushFragment(SettingAddressFragment.newInstance(type), AMapConstants.PATH_FRAGMENT_SETTING_HOME, true)
- }
-
- /**
- * 去公司
- */
- fun goCompany() {
- if (companyAddress == null) {
- choosePoint(DataConstants.TYPE_COMPANY_ADDRESS)
- } else {
- calculatePath(EntityConvertUtils.poi2MogoTip(companyAddress).point)
- }
- }
-
- /**
- * 搜索
- */
- fun goSearch() {
- beforePushFragment()
- pushFragment(SearchFragment(), AMapConstants.PATH_FRAGMENT_SEARCH, true)
- }
-
- /**
- * 路径规划
- */
- fun calculatePath(destination: MogoLatLng?) {
- destination?.let {
- beforePushFragment()
- MapCenterPointStrategy.setMapCenterPointByScene(SearchApisHolder.getUiControllerApis(), Scene.CALCULATE_PATH)
- pushFragment(ChoosePathFragment.newInstance(destination), AMapConstants.PATH_FRAGMENT_CHOOSE_PATH, true)
- }
- }
-
- fun categorySearch(category: String) {
- beforePushFragment()
- pushFragment(CategorySearchFragment.newInstance(category), AMapConstants.PATH_FRAGMENT_SEARCH_CATEGORY, true)
- }
-
- fun goSettings() {
- beforePushFragment()
- pushFragment(NaviSettingFragment(), AMapConstants.PATH_FRAGMENT_NAVI_SETTING, true)
- }
-
- private fun beforePushFragment() {
- closeADAS()
- if (!SearchApisHolder.getStatusManager().isSearchUIShow) {
- SearchApisHolder.getStatusManager().setSearchUIShow(TAG, true)
- }
- }
-
- private fun pushFragment(fragment: Fragment, tag: String, notifyMain: Boolean) {
- SearchApisHolder.getFragmentManager().push(
- FragmentDescriptor.Builder()
- .fragment(fragment)
- .tag(tag)
- .notifyMainModule(notifyMain)
- .build()
- )
- }
-
-
- private fun closeADAS() {
- try {
- SearchApisHolder.getApis().adasControllerApi.closeADAS()
- } catch (e: Exception) {
- e.printStackTrace()
- }
-
- }
}
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoSearchManager.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoSearchManager.java
index db988b10af..35713da421 100644
--- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoSearchManager.java
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoSearchManager.java
@@ -16,12 +16,12 @@ import com.mogo.service.module.IMogoSearchManager;
public class MogoSearchManager implements IMogoSearchManager {
@Override
public void goHome() {
- AddressManager.INSTANCE.goHome();
+ MogoSearchManagerImpl.INSTANCE.goHome();
}
@Override
public void goCompany() {
- AddressManager.INSTANCE.goCompany();
+ MogoSearchManagerImpl.INSTANCE.goCompany();
}
@Override
@@ -29,22 +29,22 @@ public class MogoSearchManager implements IMogoSearchManager {
if ( SearchApisHolder.getNaviApis().isNaviing() ) {
return;
}
- AddressManager.INSTANCE.goSearch();
+ MogoSearchManagerImpl.INSTANCE.goSearch();
}
@Override
public void categorySearch( String keyword ) {
- AddressManager.INSTANCE.categorySearch( keyword );
+ MogoSearchManagerImpl.INSTANCE.categorySearch( keyword );
}
@Override
public void calculatePath( MogoLatLng destination ) {
- AddressManager.INSTANCE.calculatePath( destination );
+ MogoSearchManagerImpl.INSTANCE.calculatePath( destination );
}
@Override
public void goSettings() {
- AddressManager.INSTANCE.goSettings();
+ MogoSearchManagerImpl.INSTANCE.goSettings();
}
@Override
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoSearchManagerImpl.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoSearchManagerImpl.kt
new file mode 100644
index 0000000000..91c9c01bc1
--- /dev/null
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoSearchManagerImpl.kt
@@ -0,0 +1,111 @@
+package com.mogo.module.navi.manager
+
+import androidx.fragment.app.Fragment
+import com.mogo.map.MogoLatLng
+import com.mogo.module.common.map.MapCenterPointStrategy
+import com.mogo.module.common.map.Scene
+import com.mogo.module.navi.bean.EntityConvertUtils
+import com.mogo.module.navi.constants.AMapConstants
+import com.mogo.module.navi.constants.DataConstants
+import com.mogo.module.navi.constants.SearchApisHolder
+import com.mogo.module.navi.ui.search.CategorySearchFragment
+import com.mogo.module.navi.ui.search.ChoosePathFragment
+import com.mogo.module.navi.ui.search.SearchFragment
+import com.mogo.module.navi.ui.setting.NaviSettingFragment
+import com.mogo.module.navi.ui.setting.SettingAddressFragment
+import com.mogo.service.fragmentmanager.FragmentDescriptor
+
+/**
+ * @author congtaowang
+ * @since 2020-05-25
+ *
+ * 描述
+ */
+object MogoSearchManagerImpl {
+
+ val TAG: String = "MogoSearchManagerImpl.kt"
+
+ /**
+ * 回家
+ */
+ fun goHome() {
+ if (!AddressManager.hasHome()) {
+ choosePoint(DataConstants.TYPE_HOME_ADDRESS)
+ } else {
+ calculatePath(EntityConvertUtils.poi2MogoTip(AddressManager.homeAddress).point)
+ }
+ }
+
+ private fun choosePoint(type: Int) {
+ beforePushFragment()
+ MapCenterPointStrategy.setMapCenterPointByScene(SearchApisHolder.getUiControllerApis(), Scene.CHOOSE_POINT)
+ pushFragment(SettingAddressFragment.newInstance(type), AMapConstants.PATH_FRAGMENT_SETTING_HOME, true)
+ }
+
+ /**
+ * 去公司
+ */
+ fun goCompany() {
+ if (!AddressManager.hasCompany()) {
+ choosePoint(DataConstants.TYPE_COMPANY_ADDRESS)
+ } else {
+ calculatePath(EntityConvertUtils.poi2MogoTip(AddressManager.companyAddress).point)
+ }
+ }
+
+ /**
+ * 搜索
+ */
+ fun goSearch() {
+ beforePushFragment()
+ pushFragment(SearchFragment(), AMapConstants.PATH_FRAGMENT_SEARCH, true)
+ }
+
+ /**
+ * 路径规划
+ */
+ fun calculatePath(destination: MogoLatLng?) {
+ destination?.let {
+ beforePushFragment()
+ MapCenterPointStrategy.setMapCenterPointByScene(SearchApisHolder.getUiControllerApis(), Scene.CALCULATE_PATH)
+ pushFragment(ChoosePathFragment.newInstance(destination), AMapConstants.PATH_FRAGMENT_CHOOSE_PATH, true)
+ }
+ }
+
+ fun categorySearch(category: String) {
+ beforePushFragment()
+ pushFragment(CategorySearchFragment.newInstance(category), AMapConstants.PATH_FRAGMENT_SEARCH_CATEGORY, true)
+ }
+
+ fun goSettings() {
+ beforePushFragment()
+ pushFragment(NaviSettingFragment(), AMapConstants.PATH_FRAGMENT_NAVI_SETTING, true)
+ }
+
+ private fun beforePushFragment() {
+ closeADAS()
+ if (!SearchApisHolder.getStatusManager().isSearchUIShow) {
+ SearchApisHolder.getStatusManager().setSearchUIShow(TAG, true)
+ }
+ }
+
+ private fun pushFragment(fragment: Fragment, tag: String, notifyMain: Boolean) {
+ SearchApisHolder.getFragmentManager().push(
+ FragmentDescriptor.Builder()
+ .fragment(fragment)
+ .tag(tag)
+ .notifyMainModule(notifyMain)
+ .build()
+ )
+ }
+
+
+ private fun closeADAS() {
+ try {
+ SearchApisHolder.getApis().adasControllerApi.closeADAS()
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt
index b109fef994..c25914c4aa 100644
--- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt
@@ -178,7 +178,7 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa
private fun goPath() {
mAdapter.currentItem?.let {
- AddressManager.calculatePath(mAdapter.currentItem.point)
+ SearchApisHolder.getSearchManager().calculatePath(mAdapter.currentItem.point)
}
}
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java
index 6e2d965b2f..3fdf6f4bbf 100644
--- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java
@@ -150,14 +150,14 @@ public class SearchFragment extends BaseSearchFragment
findViewById( R.id.tv_navi_company ).setOnClickListener( new View.OnClickListener() {
@Override
public void onClick( View v ) {
- AddressManager.INSTANCE.goCompany();
+ SearchApisHolder.getSearchManager().goCompany();
}
} );
findViewById( R.id.tv_navi_home ).setOnClickListener( new View.OnClickListener() {
@Override
public void onClick( View v ) {
- AddressManager.INSTANCE.goHome();
+ SearchApisHolder.getSearchManager().goHome();
}
} );
@@ -184,18 +184,18 @@ public class SearchFragment extends BaseSearchFragment
goCategory( tag.getName() );
} else {
mSearchPresenter.insert( searchPoi );
- AddressManager.INSTANCE.calculatePath( tag.getPoint() );
+ SearchApisHolder.getSearchManager().calculatePath( tag.getPoint() );
}
}
private void goSetting() {
SearchApisHolder.getAnalyticsApis().track( "Navigation_button_setting", new HashMap< String, Object >() );
- AddressManager.INSTANCE.goSettings();
+ SearchApisHolder.getSearchManager().goSettings();
}
private void goHistory( SearchPoi item ) {
MogoTip mogoTip = EntityConvertUtils.poi2MogoTip( item );
- AddressManager.INSTANCE.calculatePath( mogoTip.getPoint() );
+ SearchApisHolder.getSearchManager().calculatePath( mogoTip.getPoint() );
}
private static final String GO_HOME_CMD = "goHome";
@@ -341,7 +341,7 @@ public class SearchFragment extends BaseSearchFragment
}
private void goCategory( String text ) {
- AddressManager.INSTANCE.categorySearch( text );
+ SearchApisHolder.getSearchManager().categorySearch( text );
}
@Override
@@ -414,42 +414,30 @@ public class SearchFragment extends BaseSearchFragment
.speakQAndACmd( getString( R.string.notice_clean_history ),
new String[]{"确定", "立即清空"}, new String[]{"取消"}, this );
break;
-
-
case GAS_CMD:
-
goCategory( getString( R.string.navi_gas ) );
-
break;
case GO_COMPANY_CMD:
- AddressManager.INSTANCE.goCompany();
-
+ SearchApisHolder.getSearchManager().goCompany();
break;
case GO_HOME_CMD:
- AddressManager.INSTANCE.goHome();
+ SearchApisHolder.getSearchManager().goHome();
break;
case NAVI_SETTING_CMD:
goSetting();
break;
-
case PARK_CMD:
goCategory( getString( R.string.navi_park ) );
-
break;
case RESTAURANT_CMD:
goCategory( getString( R.string.navi_restrant ) );
-
break;
-
case TOILET_CMD:
goCategory( getString( R.string.navi_toilet ) );
break;
-
case WASH_CMD:
goCategory( getString( R.string.navi_wash ) );
-
break;
-
default:
break;
}
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt
index b6eb204bd9..d94525451e 100644
--- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt
@@ -22,15 +22,10 @@ import com.mogo.module.navi.bean.SearchPoi
import com.mogo.module.navi.constants.AMapConstants
import com.mogo.module.navi.constants.DataConstants
import com.mogo.module.navi.constants.SearchApisHolder
-import com.mogo.module.navi.cp.AddressHelper
-import com.mogo.module.navi.database.AppDataBase
import com.mogo.module.navi.manager.AddressManager
import com.mogo.module.navi.ui.base.BaseFragment
import com.mogo.utils.TipToast
import com.mogo.utils.UiThreadHandler
-import io.reactivex.Observable
-import io.reactivex.ObservableOnSubscribe
-import io.reactivex.schedulers.Schedulers
import kotlinx.android.synthetic.main.fragment_setting_address.*
/**
@@ -58,7 +53,7 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener {
}
private val TAG: String = "SettingAddressFragment"
- private var style: Int = DataConstants.TYPE_HOME_ADDRESS
+ private var type: Int = DataConstants.TYPE_HOME_ADDRESS
var addMarker: IMogoMarker? = null
private lateinit var mGeoSearch: IMogoGeoSearch
@@ -71,7 +66,7 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener {
tilt: Float,
bearing: Float) {
super.onMapChanged(latLng, zoom, tilt, bearing)
- selectPoi = EntityConvertUtils.geoToPoi(latLng?.lat ?: 0.0, latLng?.lng ?: 0.0, style)
+ selectPoi = EntityConvertUtils.geoToPoi(latLng?.lat ?: 0.0, latLng?.lng ?: 0.0, type)
var mogoRegeocodeQuery = MogoRegeocodeQuery()
mogoRegeocodeQuery.point = latLng
mGeoSearch.getFromLocationAsyn(mogoRegeocodeQuery)
@@ -91,7 +86,8 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- style = arguments?.getInt(AMapConstants.KEY_SET_HOME_COMPONY) ?: DataConstants.TYPE_HOME_ADDRESS
+ type = arguments?.getInt(AMapConstants.KEY_SET_HOME_COMPONY)
+ ?: DataConstants.TYPE_HOME_ADDRESS
SearchApisHolder.getRegisterCenterApis().registerMogoMapListener(AMapConstants.PATH_FRAGMENT_SETTING_HOME, mapListener)
SearchApisHolder.getUiControllerApis().showMyLocation(false)
SearchApisHolder.getMarkerManager().removeMarkers()
@@ -105,11 +101,7 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener {
}
fun isHome(): Boolean {
- return style == DataConstants.TYPE_HOME_ADDRESS
- }
-
- fun isCompony(): Boolean {
- return style == DataConstants.TYPE_COMPANY_ADDRESS
+ return type == DataConstants.TYPE_HOME_ADDRESS
}
override fun onViewCreated(
@@ -159,17 +151,7 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener {
}
fun insert(searchPoi: SearchPoi) {
-
AddressManager.insert(searchPoi)
- Observable.create(
- ObservableOnSubscribe {
- AppDataBase.getDatabase(activity)
- .poiDao()
- .insert(searchPoi)
- AddressHelper.notifyAddressChanged(searchPoi.type)
- })
- .subscribeOn(Schedulers.io())
- .subscribe()
}
override fun onDestroyView() {
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerBaseView.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerBaseView.java
index e46baeee29..c790f05e65 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerBaseView.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerBaseView.java
@@ -41,7 +41,6 @@ public abstract class MapMarkerBaseView extends LinearLayout implements IMarkerV
protected MogoImageView ivUserHead;
protected ImageView ivIcon;
protected ImageView ivCar;
- protected ConstraintLayout clMarkerTopView;
protected IMogoMarker mMarker;
public MapMarkerBaseView(Context context) {
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java
index 6479b123ab..95e95c4a07 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java
@@ -3,23 +3,17 @@ package com.mogo.module.service.marker;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
-import android.view.View;
import android.widget.ImageView;
import androidx.annotation.Nullable;
import com.mogo.map.marker.MogoMarkerOptions;
import com.mogo.module.common.entity.MarkerExploreWay;
-import com.mogo.module.common.entity.MarkerNoveltyInfo;
-import com.mogo.module.common.entity.MarkerOnlineCar;
import com.mogo.module.common.entity.MarkerPoiTypeEnum;
-import com.mogo.module.common.entity.MarkerShareMusic;
import com.mogo.module.common.entity.MarkerShowEntity;
import com.mogo.module.service.R;
import com.mogo.module.service.ServiceConst;
-import java.util.Random;
-
/**
* author : donghongyu
* e-mail : 1358506549@qq.com
@@ -52,40 +46,17 @@ public class MapMarkerView extends MapMarkerBaseView {
protected void initView( Context context ) {
LayoutInflater.from( context ).inflate( R.layout.view_map_marker, this );
- ivUserHead = findViewById( R.id.ivUserHead );
ivIcon = findViewById( R.id.ivIcon );
ivCar = findViewById( R.id.ivCar );
ivBg = findViewById( R.id.ivBg );
- clMarkerTopView = findViewById( R.id.clMarkerTopView );
}
public void updateView( MarkerShowEntity markerShowEntity ) {
try {
Object bindObj = markerShowEntity.getBindObj();
- ivBg.setImageResource( R.drawable.bg_map_marker_dark );
switch ( markerShowEntity.getMarkerType() ) {
- case ServiceConst.CARD_TYPE_CARS_CHATTING:
- case ServiceConst.CARD_TYPE_USER_DATA:
- ivUserHead.setVisibility( View.VISIBLE );
- ivIcon.setVisibility( View.INVISIBLE );
- loadImageWithMarker( markerShowEntity );
- ivCar.setImageResource( R.drawable.icon_map_marker_car_gray );
- ivCar.setRotation( ( float ) markerShowEntity.getMarkerLocation().getAngle() );
-// ivCar.setRotation(new Random().nextInt(360));
- clMarkerTopView.setVisibility( View.GONE );
- if ( bindObj instanceof MarkerOnlineCar ) {
- if ( ( ( MarkerOnlineCar ) bindObj ).getUserInfo().getGenderValue() == 0 ) {
- } else {
- }
- }
- break;
case ServiceConst.CARD_TYPE_ROAD_CONDITION:
case ServiceConst.CARD_TYPE_NOVELTY:
- ivUserHead.setVisibility( View.INVISIBLE );
- ivIcon.setVisibility( View.VISIBLE );
-
- ivCar.setImageResource( R.drawable.icon_map_marker_location_yellow );
-
if ( bindObj instanceof MarkerExploreWay ) {
switch ( ( ( MarkerExploreWay ) bindObj ).getPoiType() ) {
case MarkerPoiTypeEnum.GAS_STATION:
@@ -137,29 +108,6 @@ public class MapMarkerView extends MapMarkerBaseView {
}
}
break;
- case ServiceConst.CARD_TYPE_SHARE_MUSIC:
- ivUserHead.setVisibility( View.INVISIBLE );
- ivIcon.setVisibility( View.VISIBLE );
- ivCar.setImageResource( R.drawable.icon_map_marker_location_yellow );
-
- if ( bindObj instanceof MarkerShareMusic ) {
- // 2 为书籍听书,3 为新闻,1 为qq音乐,int
- switch ( ( ( MarkerShareMusic ) bindObj ).getShareType() ) {
- case 1:
- ivIcon.setImageResource( R.drawable.icon_map_marker_misic );
- break;
- case 2:
- ivIcon.setImageResource( R.drawable.icon_map_marker_book );
- break;
- case 3:
- ivIcon.setImageResource( R.drawable.icon_map_marker_news );
- break;
- default:
- ivIcon.setImageResource( R.drawable.icon_map_marker_misic );
- break;
- }
- }
- break;
}
} catch ( Exception e ) {
diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/bg_map_marker_dark.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/bg_map_marker_dark.png
new file mode 100644
index 0000000000..f12819ecfc
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/bg_map_marker_dark.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/bg_map_marker_dark.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/bg_map_marker_dark.png
old mode 100755
new mode 100644
index c1ef274cbe..acdb4d7063
Binary files a/modules/mogo-module-service/src/main/res/drawable-xhdpi/bg_map_marker_dark.png and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/bg_map_marker_dark.png differ
diff --git a/modules/mogo-module-service/src/main/res/layout/view_map_marker.xml b/modules/mogo-module-service/src/main/res/layout/view_map_marker.xml
index 689fcee3f6..319576c88d 100644
--- a/modules/mogo-module-service/src/main/res/layout/view_map_marker.xml
+++ b/modules/mogo-module-service/src/main/res/layout/view_map_marker.xml
@@ -6,60 +6,35 @@
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
- android:paddingStart="@dimen/dp_5"
- android:paddingEnd="@dimen/dp_5"
- tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout" >
+ tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
-
+
-
-
+ android:scaleType="fitXY"
+ android:src="@drawable/bg_map_marker_dark" />
+ android:layout_width="@dimen/module_service_marker_bubble_icon_width"
+ android:layout_height="@dimen/module_service_marker_bubble_icon_height"
+ android:layout_marginTop="@dimen/module_service_marker_bubble_icon_marginTop"
+ android:layout_gravity="center_horizontal"
+ tools:src="@drawable/icon_map_marker_road_block_up"/>
-
+
-
\ No newline at end of file
+ android:layout_marginTop="@dimen/module_service_marker_dot_marginTop"
+ android:src="@drawable/icon_map_marker_location_yellow" />
+
\ No newline at end of file
diff --git a/modules/mogo-module-service/src/main/res/layout/view_map_marker_info.xml b/modules/mogo-module-service/src/main/res/layout/view_map_marker_info.xml
index 2b962ef22e..6e19f7c8e2 100644
--- a/modules/mogo-module-service/src/main/res/layout/view_map_marker_info.xml
+++ b/modules/mogo-module-service/src/main/res/layout/view_map_marker_info.xml
@@ -64,7 +64,6 @@
+ android:src="@drawable/icon_map_marker_location_yellow" />
\ No newline at end of file
diff --git a/modules/mogo-module-service/src/main/res/values-ldpi/dimens.xml b/modules/mogo-module-service/src/main/res/values-ldpi/dimens.xml
new file mode 100644
index 0000000000..dd048922b7
--- /dev/null
+++ b/modules/mogo-module-service/src/main/res/values-ldpi/dimens.xml
@@ -0,0 +1,10 @@
+
+
+ 16dp
+ 8dp
+ 56px
+ 65px
+ 27px
+ 27px
+ 14px
+
\ No newline at end of file
diff --git a/modules/mogo-module-service/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-service/src/main/res/values-xhdpi/dimens.xml
new file mode 100644
index 0000000000..b58958d247
--- /dev/null
+++ b/modules/mogo-module-service/src/main/res/values-xhdpi/dimens.xml
@@ -0,0 +1,10 @@
+
+
+ 30dp
+ 15dp
+ 100px
+ 117px
+ 50px
+ 50px
+ 24px
+
\ No newline at end of file
diff --git a/modules/mogo-module-service/src/main/res/values/dimens.xml b/modules/mogo-module-service/src/main/res/values/dimens.xml
new file mode 100644
index 0000000000..b58958d247
--- /dev/null
+++ b/modules/mogo-module-service/src/main/res/values/dimens.xml
@@ -0,0 +1,10 @@
+
+
+ 30dp
+ 15dp
+ 100px
+ 117px
+ 50px
+ 50px
+ 24px
+
\ No newline at end of file