Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
119 changes: 119 additions & 0 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions .idea/codeStyles/codeStyleConfig.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions .idea/dictionaries/gutty.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions .idea/encodings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 20 additions & 0 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

25 changes: 25 additions & 0 deletions .idea/jarRepositories.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions .idea/runConfigurations.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

37 changes: 20 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,26 @@
# Prueba técnica - Mobile Team
La prueba tiene como objetivo evaluar tus habilidades como desarrollador.

# Descripción
La prueba técnica consiste en desarrollar una pequeña aplicación con las siguientes características.
# TAREAS

* La aplicación (emisora) deberá de enviar las coordenadas de la ubicación en la cual el usuario haya presionado durante 3 segundos sobre el mapa. Como confirmación para la aplicación (emisora) se deberá de emitir un [hapatic feedback](https://material.io/design/platform-guidance/android-haptics.html#usage) como confirmación que se envió la ubicación.
* La aplicación (receptora) deberá de mostrar la coordenada que envió la aplicación (emisora) dentro del mapa con un marcador el cual deberá desaparecer 10 segundos despues de haberse mostrado.
* Dicha información se deberá enviar en tiempo real usando Firebase Real Time Database.
* Se da por entendido que la función de emisor y receptor es una sola aplicación, la función se ve definida por la selección en el tab superior como se muestra en la siguiente imagen.
* Analisis de requerimientos
* Diseño de mockups
* Diseño de la arquitectura de app
* Añadir dependencias
* Configurar sdk google maps
* Configurar geocoding API
* Configurar firebase realtime
* Configurar Google api location
* Configurar Retrofit para conectarse a geocoding api
* Añadir repositorio de datos
* Crear localizador de servicions para inyección dependendencias
* Configurar Tabs
* Configurar mapa
* Añadir permisos para ubicacion
* Crear viewmodel
* Añadir casos de uso
* Añadir patron obsever para subscribirse a cambios de la bd
* Añadir patron de factoria para pasar repositorio a viewmodel
* Configurar lista de ubicaciones enviadas

![Views](https://github.com/urbvantransit/mobile-test/blob/master/views.png?raw=true)

## Consideraciones generales

- Se deberá escribir un README en donde se describa las tareas que se llevaron a cabo para desarrollar la prueba.
- Se evaluará la calidad del código, uso de git y practicas de programación, por lo que te recomendamos el código de tu proyecto.
- Eres libre de mejorar y/o incluir nuevas funcionalidades que demuestren tus habilidades. Ten en cuenta que también evaluaremos las mejoras y funcionalidades que incluyas.
- El proyecto deberá realizarse en Kotlin y eres libre de agregar dependencias.

## Entrega

Se deberá de hacer un _fork_ a este repositorio, y continuar el desarrollo de la prueba sobre el mismo. Una vez terminada la prueba se deberá hacer un _Pull Request_ al repositorio original.
1 change: 1 addition & 0 deletions app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
65 changes: 65 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

apply plugin: 'com.google.gms.google-services'

android {
compileSdkVersion 29
defaultConfig {
applicationId "com.omargtz.mobiletest"
minSdkVersion 23
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.core:core-ktx:1.3.2'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'com.google.android.material:material:1.2.1'

//firebase dababase realtime
implementation 'com.google.firebase:firebase-database:19.2.0'
implementation 'com.google.firebase:firebase-core:17.2.0'

//google play services
implementation "com.google.android.gms:play-services-maps:$google_play_version"
implementation "com.google.android.gms:play-services-location:$google_play_version"

//Retrofit
implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
implementation "com.squareup.retrofit2:converter-gson:$retrofit_version"

//lottie animations
implementation "com.airbnb.android:lottie:$lottieVersion"

//Life components
implementation "androidx.lifecycle:lifecycle-extensions:$rootProject.archLifecycleVersion"
annotationProcessor "androidx.lifecycle:lifecycle-compiler:$rootProject.archLifecycleVersion"
implementation 'androidx.legacy:legacy-support-v4:1.0.0'

//rx
implementation "io.reactivex.rxjava2:rxandroid:$rootProject.rxAndroid"
implementation "io.reactivex.rxjava2:rxjava:$rootProject.rxJava"

implementation "com.squareup.retrofit2:adapter-rxjava2:$rootProject.adapterRxjava2"

testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'

}
51 changes: 51 additions & 0 deletions app/google-services.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
{
"project_info": {
"project_number": "874193764794",
"firebase_url": "https://urbvantest.firebaseio.com",
"project_id": "urbvantest",
"storage_bucket": "urbvantest.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:874193764794:android:d78f6e2ca7c41f24989d83",
"android_client_info": {
"package_name": "com.omargtz.mobiletest"
}
},
"oauth_client": [
{
"client_id": "874193764794-3k243t09hhnfk05rufg8ku4c7gda5uk3.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.omargtz.mobiletest",
"certificate_hash": "000458eca3d42f69781225ddbaf34c76548273df"
}
},
{
"client_id": "874193764794-h9uf2htm4hb3aqu40qc9iiikn7kr81vi.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyA9l-G1T5QcDKaIuhOpJkjijZZJVkrVoSY"
},
{
"current_key": "AIzaSyB7wn5al8vFkYyKWS1ajXR6GdCILY70vms"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "874193764794-h9uf2htm4hb3aqu40qc9iiikn7kr81vi.apps.googleusercontent.com",
"client_type": 3
}
]
}
}
}
],
"configuration_version": "1"
}
Loading