From 8340fff2f50eb631c45a35febe0ef444d8cf1aae Mon Sep 17 00:00:00 2001 From: zhangyuanzhen Date: Tue, 31 Dec 2019 16:19:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0room=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.gradle | 118 ++++++++++-------- modules/mogo-module-navi/.gitignore | 1 + modules/mogo-module-navi/build.gradle | 42 +++++++ modules/mogo-module-navi/consumer-rules.pro | 0 modules/mogo-module-navi/proguard-rules.pro | 21 ++++ .../src/main/AndroidManifest.xml | 2 + .../module/navi/database/AppDataBase.java | 33 +++++ .../module/navi/database/bean/POIInfo.java | 64 ++++++++++ .../mogo/module/navi/database/dao/POIDao.java | 32 +++++ .../src/main/res/values/strings.xml | 3 + settings.gradle | 1 + 11 files changed, 262 insertions(+), 55 deletions(-) create mode 100644 modules/mogo-module-navi/.gitignore create mode 100644 modules/mogo-module-navi/build.gradle create mode 100644 modules/mogo-module-navi/consumer-rules.pro create mode 100644 modules/mogo-module-navi/proguard-rules.pro create mode 100644 modules/mogo-module-navi/src/main/AndroidManifest.xml create mode 100644 modules/mogo-module-navi/src/main/java/com/mogo/module/navi/database/AppDataBase.java create mode 100644 modules/mogo-module-navi/src/main/java/com/mogo/module/navi/database/bean/POIInfo.java create mode 100644 modules/mogo-module-navi/src/main/java/com/mogo/module/navi/database/dao/POIDao.java create mode 100644 modules/mogo-module-navi/src/main/res/values/strings.xml diff --git a/config.gradle b/config.gradle index a1ee099928..1282f4dd36 100644 --- a/config.gradle +++ b/config.gradle @@ -1,60 +1,68 @@ ext { - android = [ - applicationId : "com.mogo.launcher", - compileSdkVersion: 29, - buildToolsVersion: "29.0.2", - minSdkVersion : 19, - targetSdkVersion : 22, - versionCode : 1, - versionName : "1.0.0", - ] + android = [ + applicationId: "com.mogo.launcher", + compileSdkVersion: 29, + buildToolsVersion: "29.0.2", + minSdkVersion: 19, + targetSdkVersion: 22, + versionCode: 1, + versionName: "1.0.0", + ] - dependencies = [ - // androidx - androidxappcompat : "androidx.appcompat:appcompat:1.0.2", - androidxconstraintlayout: "androidx.constraintlayout:constraintlayout:1.1.3", - androidxmultidex : "androidx.multidex:multidex:2.0.1", - // 测试 - junit : "junit:junit:4.12", - androidxjunit : "androidx.test.ext:junit:1.1.0", - androidxespressocore : "androidx.test.espresso:espresso-core:3.1.1", - // 地图 - amapnavi3dmap : "com.amap.api:navi-3dmap:latest.integration", - amapsearch : "com.amap.api:search:latest.integration", - amaplocation : "com.amap.api:location:latest.integration", - // json 转换 - gson : "com.google.code.gson:gson:2.8.4", - // 内存泄漏检测 - debugleakcanary : "com.squareup.leakcanary:leakcanary-android:1.6.1", - releaseleakcanary : "com.squareup.leakcanary:leakcanary-android-no-op:1.6.1", - testleakcanary : "com.squareup.leakcanary:leakcanary-android-no-op:1.6.1", - //rxJava - rxjava : "io.reactivex.rxjava2:rxjava:2.2.2", - rxandroid : "io.reactivex.rxjava2:rxandroid:2.1.0", - // arouter - arouter : "com.alibaba:arouter-api:1.5.0", - aroutercompiler : "com.alibaba:arouter-compiler:1.2.2", - // glide - glide : 'com.github.bumptech.glide:glide:4.8.0', - glideokhttp3 : 'com.github.bumptech.glide:okhttp3-integration:4.8.0', - glideanno : 'com.github.bumptech.glide:annotations:4.8.0', - glidecompiler : 'com.github.bumptech.glide:compiler:4.8.0', - supportannos : "com.android.support:support-annotations:28.0.0", - // fresco - fresco : 'com.facebook.fresco:fresco:1.1.0', - // 公司服务 - 语音 - aiassist : "com.zhidaoauto.common:service:1.0.4", - // 公司服务 - 埋点 - analytics : "com.elegant.analytics:analytics:1.1.19", + dependencies = [ + // androidx + androidxappcompat: "androidx.appcompat:appcompat:1.0.2", + androidxconstraintlayout: "androidx.constraintlayout:constraintlayout:1.1.3", + androidxmultidex: "androidx.multidex:multidex:2.0.1", + // 测试 + junit: "junit:junit:4.12", + androidxjunit: "androidx.test.ext:junit:1.1.0", + androidxespressocore: "androidx.test.espresso:espresso-core:3.1.1", + // 地图 + amapnavi3dmap: "com.amap.api:navi-3dmap:latest.integration", + amapsearch: "com.amap.api:search:latest.integration", + amaplocation: "com.amap.api:location:latest.integration", + // json 转换 + gson: "com.google.code.gson:gson:2.8.4", + // 内存泄漏检测 + debugleakcanary: "com.squareup.leakcanary:leakcanary-android:1.6.1", + releaseleakcanary: "com.squareup.leakcanary:leakcanary-android-no-op:1.6.1", + testleakcanary: "com.squareup.leakcanary:leakcanary-android-no-op:1.6.1", + //rxJava + rxjava: "io.reactivex.rxjava2:rxjava:2.2.2", + rxandroid: "io.reactivex.rxjava2:rxandroid:2.1.0", + // arouter + arouter: "com.alibaba:arouter-api:1.5.0", + aroutercompiler: "com.alibaba:arouter-compiler:1.2.2", + // glide + glide: 'com.github.bumptech.glide:glide:4.8.0', + glideokhttp3: 'com.github.bumptech.glide:okhttp3-integration:4.8.0', + glideanno: 'com.github.bumptech.glide:annotations:4.8.0', + glidecompiler: 'com.github.bumptech.glide:compiler:4.8.0', + supportannos: "com.android.support:support-annotations:28.0.0", + // fresco + fresco: 'com.facebook.fresco:fresco:1.1.0', + // 公司服务 - 语音 + aiassist: "com.zhidaoauto.common:service:1.0.4", + // 公司服务 - 埋点 + analytics: "com.elegant.analytics:analytics:1.1.19", - // retrofit - retrofit : "com.squareup.retrofit2:retrofit:2.3.0", - retrofitadapter : "com.squareup.retrofit2:adapter-rxjava:2.1.0", - retrofitconvertergson : "com.squareup.retrofit2:converter-gson:2.3.0", - retrofitconverterscalars: "com.squareup.retrofit2:converter-scalars:2.1.0", + // retrofit + retrofit: "com.squareup.retrofit2:retrofit:2.3.0", + retrofitadapter: "com.squareup.retrofit2:adapter-rxjava:2.1.0", + retrofitconvertergson: "com.squareup.retrofit2:converter-gson:2.3.0", + retrofitconverterscalars: "com.squareup.retrofit2:converter-scalars:2.1.0", - // leakcanary - leakcanary : 'com.squareup.leakcanary:leakcanary-android:1.5.4', - leakcanarynoop : 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4', - ] + // leakcanary + leakcanary: 'com.squareup.leakcanary:leakcanary-android:1.5.4', + leakcanarynoop: 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4', + + // add for room + room: "android.arch.persistence.room:runtime:1.1.1", + roomAnnotationProcessor: 'android.arch.persistence.room:compiler:1.1.1', + + // rxjava2 with room + roomRxjava: "android.arch.persistence.room:rxjava2:1.1.1" + + ] } \ No newline at end of file diff --git a/modules/mogo-module-navi/.gitignore b/modules/mogo-module-navi/.gitignore new file mode 100644 index 0000000000..796b96d1c4 --- /dev/null +++ b/modules/mogo-module-navi/.gitignore @@ -0,0 +1 @@ +/build diff --git a/modules/mogo-module-navi/build.gradle b/modules/mogo-module-navi/build.gradle new file mode 100644 index 0000000000..71c043611c --- /dev/null +++ b/modules/mogo-module-navi/build.gradle @@ -0,0 +1,42 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion rootProject.ext.android.compileSdkVersion + buildToolsVersion rootProject.ext.android.buildToolsVersion + + defaultConfig { + minSdkVersion rootProject.ext.android.minSdkVersion + targetSdkVersion rootProject.ext.android.targetSdkVersion + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles 'consumer-rules.pro' + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + + implementation project(":libraries:mogo-map") + implementation project(":libraries:mogo-map-api") + implementation project(":foudations:mogo-utils") + api project(":foudations:mogo-commons") + api project(':services:mogo-service-api') + implementation project(':modules:mogo-module-common') + implementation project(':modules:mogo-module-map') + implementation rootProject.ext.dependencies.androidxappcompat + implementation rootProject.ext.dependencies.androidxconstraintlayout + implementation rootProject.ext.dependencies.arouter + implementation rootProject.ext.dependencies.room + implementation rootProject.ext.dependencies.roomAnnotationProcessor + implementation rootProject.ext.dependencies.roomRxjava + annotationProcessor rootProject.ext.dependencies.aroutercompiler +} diff --git a/modules/mogo-module-navi/consumer-rules.pro b/modules/mogo-module-navi/consumer-rules.pro new file mode 100644 index 0000000000..e69de29bb2 diff --git a/modules/mogo-module-navi/proguard-rules.pro b/modules/mogo-module-navi/proguard-rules.pro new file mode 100644 index 0000000000..f1b424510d --- /dev/null +++ b/modules/mogo-module-navi/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/modules/mogo-module-navi/src/main/AndroidManifest.xml b/modules/mogo-module-navi/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..26aa7c5a9f --- /dev/null +++ b/modules/mogo-module-navi/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + diff --git a/modules/mogo-module-navi/src/main/java/com/mogo/module/navi/database/AppDataBase.java b/modules/mogo-module-navi/src/main/java/com/mogo/module/navi/database/AppDataBase.java new file mode 100644 index 0000000000..911a337086 --- /dev/null +++ b/modules/mogo-module-navi/src/main/java/com/mogo/module/navi/database/AppDataBase.java @@ -0,0 +1,33 @@ +package com.mogo.module.navi.database; + +import android.content.Context; +import androidx.room.Database; +import androidx.room.Room; +import androidx.room.RoomDatabase; +import com.mogo.module.navi.database.bean.POIInfo; +import com.mogo.module.navi.database.dao.POIDao; + +/** + * @author zyz + * 2019-08-15. + */ + +@Database(entities = { POIInfo.class}, version = 1) +public abstract class AppDataBase extends RoomDatabase { + public abstract POIDao poiDao(); + + private static volatile AppDataBase INSTANCE; + + public static AppDataBase getDatabase(Context context){ + if (INSTANCE == null) { + synchronized (AppDataBase.class) { + if (INSTANCE == null) { + INSTANCE = Room.databaseBuilder(context.getApplicationContext(), + AppDataBase.class, "android_room_dev.db").build(); + } + } + } + return INSTANCE; + } + +} diff --git a/modules/mogo-module-navi/src/main/java/com/mogo/module/navi/database/bean/POIInfo.java b/modules/mogo-module-navi/src/main/java/com/mogo/module/navi/database/bean/POIInfo.java new file mode 100644 index 0000000000..21e963e2f2 --- /dev/null +++ b/modules/mogo-module-navi/src/main/java/com/mogo/module/navi/database/bean/POIInfo.java @@ -0,0 +1,64 @@ +package com.mogo.module.navi.database.bean; + +import androidx.room.Entity; +import androidx.room.PrimaryKey; +import org.jetbrains.annotations.NotNull; + +/** + * @author zyz + * 2019-08-15. + */ +@Entity +public class POIInfo { + @PrimaryKey + @NotNull + public String pId; + private String name; + private String address; + private double lat; + private double lot; + + + public POIInfo(String pId, String name, String address, double lat, double lot) { + this.pId = pId; + this.name = name; + this.address = address; + this.lat = lat; + this.lot = lot; + } + + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public double getLat() { + return lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public double getLot() { + return lot; + } + + public void setLot(double lot) { + this.lot = lot; + } + + +} diff --git a/modules/mogo-module-navi/src/main/java/com/mogo/module/navi/database/dao/POIDao.java b/modules/mogo-module-navi/src/main/java/com/mogo/module/navi/database/dao/POIDao.java new file mode 100644 index 0000000000..729bf7bf4d --- /dev/null +++ b/modules/mogo-module-navi/src/main/java/com/mogo/module/navi/database/dao/POIDao.java @@ -0,0 +1,32 @@ +package com.mogo.module.navi.database.dao; + +import androidx.room.Dao; +import androidx.room.Insert; +import androidx.room.OnConflictStrategy; +import androidx.room.Query; +import com.mogo.module.navi.database.bean.POIInfo; +import io.reactivex.Flowable; +import java.util.List; + +/** + * @author zyz + * 2019-08-15. + */ +@Dao +public interface POIDao { + + /** + * 插入地址信息 + * @param poiInfos GEO信息 + * @return + */ + @Insert(onConflict = OnConflictStrategy.REPLACE) + List insert(POIInfo... poiInfos); + + /** + * 获取地址列表 + * @return + */ + @Query("SELECT * from poiinfo") + Flowable> load(); +} diff --git a/modules/mogo-module-navi/src/main/res/values/strings.xml b/modules/mogo-module-navi/src/main/res/values/strings.xml new file mode 100644 index 0000000000..d6991f8270 --- /dev/null +++ b/modules/mogo-module-navi/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + mogo-module-navi + diff --git a/settings.gradle b/settings.gradle index a95ecf51ee..aab1abb27e 100644 --- a/settings.gradle +++ b/settings.gradle @@ -8,6 +8,7 @@ include ':foudations:mogo-commons' include ':modules:mogo-module-map' include ':modules:mogo-module-common' include ':modules:mogo-module-main' +include ':modules:mogo-module-navi' include ':demo:demo-module-map' include ':libraries:map-amap' //include ':libraries:map-baidu'